FRP内网穿透
FRP内网穿透
内网穿透的方案,除了用Zerotier虚拟组网外,还可以使用FRP进行端口映射,实现内网穿透。FRP(Fast Reverse Proxy): FRP 是一种用于内网穿透的工具,它允许您通过公网访问位于私有网络内的服务器和服务。它支持多种协议,如 HTTP、HTTPS、TCP 和 UDP。
这种方式,不需要访问者设备上安装特别的应用程序,只需要在内网机和服务器上分别安装FPR服务端可客户端即可。访问者通过“服务器域名或IP+映射端口”号来访问内网特定端口。
下载安装FRP
方法1:使用Docker安装
分别在服务器和内网机的控制台中新建/opt/frps/目录和/opt/frpc/目录。
服务器端在/opt/frps/目录中新建frps.toml文件。
之后在服务器控制台运行以下命令:
docker run \
-d \
--name frps \
--network host \
-v /opt/frps/frps.toml:/etc/frp/frps.toml \
snowdreamtech/frps内网机在/opt/frpc/目录中新建frpc.toml文件。
之后在内网机的控制台运行以下命令:
docker run \
-d \
--name frpc \
--network host \
-v /opt/frpc/frpc.toml:/etc/frp/frpc.toml \
snowdreamtech/frpc方法2:直接安装
首先从Github上下载FRP的最新版,(fatedier/frp)[https://github.com/fatedier/frp/releases] ,解压缩后会有4个比较重要的文件:
frpc 客户端程序
frpc.toml 客户端配置文件
frps 服务端程序(公网主机用,比如VPS)
frps.toml 服务端配置文件之后把frps、frps.toml上传到服务器;frpc、frpc.toml上传到要穿透的内网机。比方说分别放在服务器和内网机的/opt/frps/和/opt/frps/目录中。
PS:此方法后续需要额外设置frp程序跟随系统自启动。否则系统重启后,服务将停止。建议使用docker部署。
配置FRP服务端与客户端文件
服务端配置文件设置
修改服务端frps.toml:
[common]
bind_port = 7000 #frp通信用的监听端口
vhost_http_port = 7080 #frp在代理内网机http协议80端口时对应的映射端口
vhost_https_port = 7443 #frp在代理内网机https协议443端口时对应的映射端口
token = password1 #frps和frpc建立连接时的密码
dashboard_port = 7001 #frps管理面板的对应端口。可以使用服务器IP:7001进行访问
dashboard_user = admin #管理面板的用户名
dashboard_pwd = password2 #管理面板的密码保存并关闭配置文件。
如果是Docker部署的,直接重启容器即可docker restart frps。
如果是直接安装的,在控制台中导航到 FRP 服务器端目录,运行 ./frps -c frps.toml 启动 FRP 服务器端。
修改frps.toml文件后,均需要重启frps。
客户端配置文件设置
比如想把内网SMB协议、SSH协议、9009端口的网页穿透到公网,则修改客户端frpc.ini为:
[common]
server_addr = 199.115.**.** #服务器IP地址
server_port = 7000
token = password1 #frps和frpc建立连接时的密码
log_file = /etc/frp/frpc.log
log_level = info
log_max_days = 3
# 客户端配置web页面,配置后可以在web页面修改本地配置
admin_addr = 0.0.0.0
admin_port = 7001
admin_user = admin
admin_pwd = password3 #管理面板的密码
[ssh] #SSH连接所需设置。外网可通过server_addr指定的地址、端口号7022进行SSH连接内网机。
name = "SSH" #标识名称
type = "tcp"
local_ip = "127.0.0.1"
local_port = 22
remote_port = 7022
[portainer] #http穿透演示(穿透内网的Portainer9000端口)
name = "portainer" #标识名称
type = "http" #内网到服务器之间如果不是https,这里就不要选https
# local_ip = "192.168.1.29" 这里IP如果是客户端本机,可以不写
local_port = 9000
custom_domains = "f.hotine.wang" #这个域名如果用cloudflare解析,且服务端HTTP/HTTPS端口不是80/443的情况下,解析时就不要勾选Proxied之后重启docker,docker restart frpc。
如果是直接安装的,在控制台中导航到 FRP 内网机目录,运行 ./frpc -c frpc.toml 启动 FRP 客户端。
修改frpc.toml文件后,均需要重启frpc。或者使用网页管理面板修改,可免除重启。
完成上述步骤后,就可以通过http://f.hotine.wang:7080`访问内网对应资源了。(注意网址是http,不是https)
请确保网络配置正确,端口映射和防火墙设置没有问题。另外,务必考虑安全性和身份验证等问题,以确保共享文件不会暴露在公开网络中。
其他事项
- 虽然说
server_addr可以使用IP或者域名,但是如果启用了Cloudflare IP保护功能的话,使用域名将无法连接。