关键词:内网穿透 frp frps frpc
frp
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
目标
通过访问公网的某个端口可以访问本机或局域网的web服务。
下载地址为:https://github.com/fatedier/frp/releases
此处使用最新版(此时为v0.57.0)。
查看版本的命令/usr/local/bin/frps -v
下载linux-amd64和windows_amd64。
在云服务器中配置服务端
服务端需要有公网ip。
上传到到linux服务器中。由于是服务端,所以只需要frps和frps.toml。
将它们复制到/usr/local/bin中(不要放到/opt等其它目录,会导致无法运行)。
修改frps.toml的内容为如下:
# 这两个端口需要配置到安全组中
bindPort = 7000
vhostHTTPPort = 8080
然后配置成服务:
vim /lib/systemd/system/frps.service
文件内容如下:
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=10s
ExecStart=/usr/local/bin/frps -c /usr/local/bin/frps.toml
[Install]
WantedBy=multi-user.target
之后就可以启动frps了。sudo systemctl start frps
看到frps started successfully就说明启动成功了。
配置开机启动 sudo systemctl enable frps
如果要重启应用,sudo systemctl restart frps
如果要停止应用,sudo systemctl stop frps
如果要查看日志,sudo systemctl status frps
服务端若开启了防火墙,需要放开端口
# 查看防火墙状态
firewall-cmd --state
sudo firewall-cmd --permanent --add-port=【对应frps.toml中的bindPort】/tcp
sudo firewall-cmd --permanent --add-port=【对应frps.toml中的vhostHTTPPort】/tcp
sudo firewall-cmd --reload
问题:
Q: main process exited, code=exited, status=203/EXEC
A: 查看frps所在目录,尽量放到/usr/bin或/usr/local/bin中
参考:https://blog.csdn.net/x7418520/article/details/81077652
配置客户端
frpc.toml内容如下:
# 配置地址和端口,注意serverAddr的值要用双引号括住。
serverAddr = "公网ip"
# serverPort对应frps.toml中的bindPort
serverPort = 7000
[[proxies]]
# 映射到本地的web服务
name = "web"
# http协议
type = "http"
# web服务的端口
localPort = 5000
# 自定义域名,可以是ip地址
customDomains = ["frps服务端的公网ip", "域名"]
启动客户端 frpc.exe -c frpc.toml
访问 http://【frps服务端的公网ip】或【域名】:【frps.toml中的vhostHTTPPort】/【请求路径】
比如本地5000端口提供了/hello接口,则访问http://公网ip:8080/hello也能访问成功。
windows配置服务
sc create frpc start= auto binPath= "C:\Windows\apps\frp\frpc.exe -c C:\Windows\apps\frp\frpc.toml" DisplayName= "FRPC Service"
sc start frpc
会报错:
[SC] StartService 失败 1053:
服务没有及时响应启动或控制请求。
结论:不使用sc命令来创建服务
改用 winsw
官网:https://github.com/winsw/winsw/releases
如下使用版本是WinSW v3.0.0-alpha.11(文件名是WinSW-net461.exe),且需要在管理员模式下运行。
WinSW-net461.exe install frpc_service.xml
WinSW-net461.exe start frpc_service.xml
WinSW-net461.exe stop/restart/status xxx.xml
frpc_service.xml的内容如下:
<service>
<id>frpc</id>
<name>frpc</name>
<executable>D:\ws\apps\frp\frpc.exe</executable>
<arguments>-c D:\ws\apps\frp\frpc.toml</arguments>
<onfailure action="restart" />
<!-- 指定日志文件目录(相对于executable配置的路径) -->
<logpath>logs</logpath>
<!-- 日志模式:每天滚动-->
<log mode="roll-by-time">
<pattern>yyyyMMdd</pattern>
</log>
</service>
最后编辑:admin 更新时间:2025-09-19 10:08