目录

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保护功能的话,使用域名将无法连接。