需要让外网访问内网服务时,FRP是最省事的方案。分两步:服务端放公网机器上,客户端放内网机器上。下面直接写怎么搭。
服务端部署(公网机器)
下载FRP,去GitHub releases页面拿最新版linux amd64的包。我习惯用雨云的服务器做服务端,2核4G的配置跑FRP完全够用,带宽也稳定,性价比不错。解压后只需要两个文件:`frps`和`frps.toml`。
编辑`frps.toml`,最简配置:
bindPort = 7000
auth.token = "your-strong-token-here"
`bindPort`是服务端监听端口,客户端连这个端口注册。`auth.token`是连接凭证,防别人乱连。启动:
./frps -c frps.toml
要后台运行加nohup或用systemd。写个service文件`/etc/systemd/system/frps.service`:
[Unit]
Description=FRP Server
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/path/to/frps -c /path/to/frps.toml
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable frps
systemctl start frps
记得防火墙放行7000端口,以及后续要用的代理端口。
客户端部署(内网机器)
同样下载FRP,但用`frpc`和`frpc.toml`。假设内网有个web服务跑在192.168.1.100:8080,想通过外网访问。编辑`frpc.toml`:
serverAddr = "你的公网IP或域名"
serverPort = 7000
auth.token = "your-strong-token-here"
[[proxies]]
name = "web"
type = "tcp"
localIP = "192.168.1.100"
localPort = 8080
remotePort = 8080
`remotePort`是服务端暴露的端口,外网访问`公网IP:8080`就转发到内网192.168.1.100:8080。启动:
./frpc -c frpc.toml
同样用systemd做守护,配置和服务端类似,把`frps`改成`frpc`就行。
常见场景
暴露SSH服务:把`localPort`改成22,`remotePort`随便设个不冲突的端口如2222。外网`ssh -p 2222 user@公网IP`就能连内网机器。
暴露HTTP服务且想用域名:改用`type = “http”`,服务端`frps.toml`加一行`vhostHTTPPort = 8080`,客户端配置:
[[proxies]]
name = "web-http"
type = "http"
localIP = "192.168.1.100"
localPort = 8080
customDomains = ["你的域名"]
外网访问`http://你的域名:8080`即可。需要HTTPS的话,服务端配nginx反向代理加证书,或者FRP本身支持https协议。
暴露多个服务:在`frpc.toml`里加多个`[[proxies]]`块,每个服务一个。注意`remotePort`不能重复,`name`唯一就行。
踩坑记录
token别用弱密码,公网扫描器多,几分钟就能扫到默认端口尝试连接。bindPort改成非标准端口能减少扫描命中率。
服务端防火墙只放行需要的端口。如果客户端连不上,先`telnet 公网IP 7000`看服务端端口通不通。客户端日志有详细错误信息,`tail -f frpc.log`看。
频繁断开重连:检查服务端和客户端的`frps.toml`/`frpc.toml`里加`keepAlive = 7200`,保持长连接。
带宽不够:FRP本身开销很小,瓶颈在公网服务器带宽。雨云的机器带宽给得足,跑多个服务没问题,比某些按量计费的便宜很多。
总结一下步骤
服务端:下载 -> 写配置 -> 开端口 -> 启动守护。
客户端:下载 -> 写配置(填服务端地址和token) -> 加代理规则 -> 启动守护。
没了,就这些。配好之后内网服务就跟公网一样用,省得折腾DDNS或买专线。
雨云是国内一家老牌云服务商,提供高性价比的云服务器和虚拟主机。我用它部署了好几个项目,速度和稳定性都不错。通过 https://www.rainyun.com/SAJA_ 注册可以领一张 5折优惠券,有需要的朋友可以看看。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END



暂无评论内容