Frp内网穿透
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
为什么使用 frp
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
客户端服务端通信支持 TCP、QUIC、KCP 以及 Websocket 等多种协议。
采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间,降低请求延迟。
代理组间的负载均衡。
端口复用,多个服务通过同一个服务端端口暴露。
支持 P2P 通信,流量不经过服务器中转,充分利用带宽资源。
多个原生支持的客户端插件(静态文件查看,HTTPS/HTTP 协议转换,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
高度扩展性的服务端插件系统,易于结合自身需求进行功能扩展。
服务端和客户端 UI 页面。
Linux默认下载
wget https://github.com/fatedier/frp/releases/download/v0.50.0/frp_0.50.0_linux_amd64.tar.gz其他版本下载
根据自己电脑系统配置选择对应的版本
frp_0.56.0_darwin_amd64.tar.gz: 适用于 macOS(darwin)系统上的64位x86处理器(amd64)的版本。frp_0.56.0_darwin_arm64.tar.gz: 适用于 macOS(darwin)系统上的64位ARM处理器(arm64)的版本。frp_0.56.0_freebsd_amd64.tar.gz: 适用于 FreeBSD 操作系统上的64位x86处理器(amd64)的版本。frp_0.56.0_linux_amd64.tar.gz: 适用于 Linux 操作系统上的64位x86处理器(amd64)的版本。frp_0.56.0_linux_arm.tar.gz: 适用于 Linux 操作系统上的32位ARM处理器的版本。frp_0.56.0_linux_arm64.tar.gz: 适用于 Linux 操作系统上的64位ARM处理器(arm64)的版本。frp_0.56.0_linux_mips.tar.gz: 适用于 Linux 操作系统上的MIPS处理器的版本。frp_0.56.0_linux_mips64.tar.gz: 适用于 Linux 操作系统上的MIPS64处理器的版本。frp_0.56.0_linux_mips64le.tar.gz: 适用于 Linux 操作系统上的Little-endian MIPS64处理器的版本。frp_0.56.0_linux_mipsle.tar.gz: 适用于 Linux 操作系统上的Little-endian MIPS处理器的版本。frp_0.56.0_windows_amd64.zip: 适用于 Windows 操作系统上的64位x86处理器(amd64)的版本。frp_0.56.0_windows_386.zip: 适用于 Windows 操作系统上的32位x86处理器的版本。frp_0.56.0_windows_arm.zip: 适用于 Windows 操作系统上的ARM处理器的版本。
Frp文件介绍
Frp服务端一般都放在服务器中,这里只说在linux系统的安装配置,选择自己的版本下载后,解压完成就能看到基本的文件了,主要有以下这些
frpc: 这是 frp 客户端程序的可执行文件,用于在客户端机器上运行以与 frps 服务器进行通信。frpc_full.ini: 这是 frpc 客户端程序的完整配置文件,包含了所有配置选项和详细设置。frpc.ini: 这是 frpc 客户端程序的简化配置文件,通常包含基本的配置选项,如服务器地址、端口、认证信息等。frps: 这是 frp 服务器程序的可执行文件,用于在服务器端运行以接受来自客户端的连接请求并进行转发。frps_full.ini: 这是 frps 服务器程序的完整配置文件,包含了所有配置选项和详细设置。frps.ini: 这是 frps 服务器程序的简化配置文件,通常包含基本的配置选项,如监听端口、token 等。LICENSE: 这是软件的许可证文件,通常包含有关软件许可协议的信息,用户需要遵守这些协议才能使用软件。
Frp服务端
服务端主要使用frpc(服务端程序) 和frps.ini(服务端配置文件)
配置文件frps.ini
[common]
bind_addr = x.x.x.x # 服务器的内网IP,用于客户端程序的连接,若允许所有链接则设置0.0.0.0
bind_port = 7000 # frp程序监听的端口,用于客户端程序的连接
kcp_bind_port = 7000 # KCP 协议绑定的端口,通常与 bind_port 保持一致
vhost_https_port = 7001 # 虚拟主机的 HTTPS 端口
dashboard_addr = x.x.x.x # 监控面板的内网IP地址,若允许所有链接则设置0.0.0.0
dashboard_port = 7500 # 监控面板的端口
dashboard_user = admin # 监控面板的管理账号
dashboard_pwd = admin # 监控面板的管理密码
log_file = ./frps.log # 日志文件保存位置
log_level = info # 日志级别设置为info
log_max_days = 3 # 日志保留时间,最长3天
authentication_timeout = 900 # 认证超时时间,单位为秒
token=12345678 # 访问密钥,服务端和客户端需保持一致
allow_ports = 2000-3000,3001,3003,4000-50000,3362
# 允许客户端程序映射到服务器的端口范围,用逗号隔开
max_pool_count = 50 # 最大连接池数量
max_ports_per_client = 0 # 每个客户端允许使用的最大端口数,0表示不限制
简化版
[common]
bind_addr = 0.0.0.0
bind_port = 7000
dashboard_port = 7500
token = qwertyuiop
dashboard_user = admin
dashboard_pwd = admin启动frp服务端
在frp文件夹下执行启动命令
./frps -c frps.ini封装服务
创建service文件
vim /etc/systemd/system/frps.serviceservice配置
[Unit]
Description=frps service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
ExecStart=/opt/frp/frps -c /opt/frp/frps.ini
Restart=always
RestartSec=1
StartLimitInterval=0设置权限
sudo chmod 644 /etc/systemd/system/frps.service重新加载服务
systemctl daemon-reload启动服务
systemctl start frps设置开机自启
systemctl enable frps
Frp客户端
配置frp客户端主要是frpc(客户端程序)和 frpc.ini(客户端配置文件)
配置文件frpc.ini
[common]
#这里填写frp服务端的地址
server_addr = 192.168.0.10
#frp服务端的端口
server_port = 7000
#服务端的秘钥
token=qwertyuiop
[ssh]
#这里填写本地需穿透的服务器及端口
type = tcp
#127.0.0.1即为本地
local_ip = 127.0.0.1
#本地22端口
local_port = 22
#映射到公网服务端对应的端口,服务端需开启防火墙
remote_port = 6000
#服务器与客户机之间的心跳连接,每隔30秒连接一次,如果没有会自动断开。
heartbeat_timeout = 30纯净版
[common]
server_addr = 192.168.0.10
server_port = 7000
token=qwertyuiop
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
heartbeat_timeout = 30启动frp客户端
在frp文件夹下执行启动命令
./frpc -c frpc.ini封装服务
创建service文件
vim /etc/systemd/system/frpc.serviceservice文件配置
[Unit]
Description=frpc service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
ExecStart=/opt/frp/frpc -c /opt/frp/frpc.ini
Restart=always
RestartSec=1
StartLimitInterval=0
[Install]
WantedBy=multi-user.target设置权限
sudo chmod 644 /etc/systemd/system/frpc.service重新加载服务
systemctl daemon-reload启动服务
systemctl start frpc设置开机自启
systemctl enable frpc
防火墙设置
因为这里会到端口,且端口固定,可以直接关闭防火墙
关闭防火墙
sudo systemctl stop firewalld关闭开机自启
sudo systemctl disable firewalld如果您的系统使用的是iptables而不是firewalld,您可以使用以下命令来关闭
停止iptables服务
sudo systemctl stop iptables禁用iptables服务
sudo systemctl disable iptables