frp
是使用较多的免费开源的内网穿透软件,源代码托管在GitHub。
1. 下载安装
安装步骤可参考官方文档 https://gofrp.org/docs/setup/
点击项目的release地址进入下载页面:https://github.com/fatedier/frp/releases,
首先要根据自己需要安装的机器系统架构下载相应的二进制安装包。
frp的服务端和客户端程序都在同一个安装包中,服务端软件必须安装在有公网IP的机器,客户端软件安装在需要穿透的机器。我的公网服务器是阿里云ECS,其系统架构为 Linux x86_64,frp最新版本为0.44.0,则可下载 frp_0.44.0_linux_amd64.tar.gz;客户端软件准备安装在本地Windows 64位电脑上,则需要下载 frp_0.44.0_windows_amd64.zip。
1.1 服务端安装
Linux服务器上下载时可通过
wget
程序下载:
wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz
下载过程可能较慢,喝杯茶耐心等待。下载完成后将其放到你的安装目录,比如我准备安装在
/usr/local
目录,然后解压并重命名为
frp
目录,则其安装目录为
/usr/local/frp
。
1.2 客户端安装
Windows电脑上直接点击相应链接下载后解压到安装文件夹即可,比如我的是
D:\Program Files (x86)\frp_0.44.0_windows_amd64
:
2. 配置启动
frp支持 TCP、UDP、HTTP、HTTPS 等多种协议的穿透,这里只介绍HTTP协议。
我在本地Windows电脑上启动了一个简单的web服务,其HTTP端口为
8080
,本地可通过
localhost:8080
访问:
现假设需要提供给外网访问,则可借助frp的HTTP协议穿透实现。
2.1 HTTP协议服务端配置
服务端配置文件为
frps.ini
,初始配置为
bind_port = 7000
,HTTP协议穿透只需要再增加一个
vhost_http_port
配置,这个端口号可随意配置服务器的闲置端口,这里使用
8000
:
[common]
bind_port = 7000
vhost_http_port = 8000
配置完成后在frp安装目录运行
frps
程序并通过
-c
指定配置文件
frps.ini
启动服务端:
./frps -c frps.ini &
运行后如果成功出现如下提示:
建议:为了让程序在后台运行并将日志输出到指定文件比如
frps.log
,可以用nohup启动:
nohup ./frps -c frps.ini >> frps.log 2>&1&
2.2 HTTP协议客户端配置
客户端即本地window端配置,配置文件为
frpc.ini
。
客户端首先需要在[common]中配置服务端的地址
server_addr
(这里隐藏了我的真实IP)和 端口号
server_port
(与服务端 bind_port 配置相同)。
其次,在[web]中配置本地需要穿透的web服务的端口号,这里是
8080
,即
local_port = 8080
;此外,还需配置外网访问的域名
custom_domains
,这里一般是解析到服务端服务器公网IP的域名,但由于没有域名,这里直接配置成服务端公网IP,访问时直接通过IP访问。
[common]
server_addr = 101.200.XX.XX
server_port = 7000
[web]
type = http
local_port = 8080
custom_domains = 101.200.XX.XX
在本地Windows找到安装目录,在上面的输入框中输入
cmd
,进入安装目录的命令行
运行客户端程序
frpc.exe
并通过
-c
指定配置文件
frpc.ini
启动客户端:
frpc.exe -c frpc.ini
如果启动成功,则出现如下提示:
3. 公网访问测试
现在可以在公网通过公网IP和
server_port
访问该web服务了(101.200.XX.XX:8000):
和本地访问结果一样,说明内网穿透成功,实现外网访问内网服务的目的。
温馨提示:如果你的服务器端也用的是云服务器ECS,可能需要在网络安全组中放开你配置的端口才可以,否则客户端访问不了服务端,则穿透不成功。
版权归原作者 留围冰 所有, 如有侵权,请联系我们删除。