FRP多隧道分流AI中转、NAS、站点后台访问
为什么需要FRP多隧道分流?
当你手头有一台内网服务器,
上面运行着AI推理服务的Web界面、
NAS文件管理器(如群晖DSM或TrueNAS),
以及一个站点后台(比如WordPress管理面板),
你想通过一个公网IP在外网安全访问这几个服务,
但又不想每个服务都占一个独立公网IP。FRP的多隧道分流就是为这种场景设计的。
它的核心思路是:同一个frps(服务端)监听多个端口,或者通过域名区分不同隧道;
每个frpc(客户端)配置不同的type和local_port,把内网多个服务“映射”到公网的不同入口。
这样你只需要一个服务器,就能同时穿透AI中转、NAS和站点后台,互不干扰。
前置准备
- 一台有公网IP的服务器(VPS或轻量云均可),系统推荐CentOS 7+或Ubuntu 20.04+。
- 一个域名(可选,用于分流),建议提前做好A记录指向公网IP。
- FRP最新版压缩包(GitHub下载),服务端和客户端版本保持一致。
- 内网服务器已安装frpc,内网各服务端口正常(例如AI中转端口8090、NAS端口5000、站点后台端口8080)。
服务端配置:frps.ini
在公网服务器上创建或编辑frps.ini,示例内容如下。
这里我们监听7000端口做控制通信,同时开放三个不同端口分别用于AI中转、NAS和站点后台:
[common]
bind_port = 7000
token = your_secret_token # 替换为你的安全密码
# 如果需要域名分流,可以启用vhost_http_port,这里我们先不启用
# vhost_http_port = 80
注意:本示例采用端口分流方式——每个隧道独立占用一个公网端口。如果你希望统一用80或443并靠域名区分,需要额外配置vhost_http_port并设置host_header_rewrite,文章后面避坑部分会提到。
客户端配置:frpc.ini(核心步骤)
在内网服务器上编辑frpc.ini。
以下配置同时定义三个隧道,分别对应AI中转、NAS和站点后台:
[common]
server_addr = 你的公网IP
server_port = 7000
token = your_secret_token
# 隧道1:AI中转(Web服务,比如Jupyter或Gradio)
[ai_proxy]
type = tcp
local_ip = 127.0.0.1
local_port = 8090
remote_port = 8001
# 隧道2:NAS管理界面(假设是群晖DSM,默认端口5000)
[nas_admin]
type = tcp
local_ip = 192.168.1.100
local_port = 5000
remote_port = 8002
# 隧道3:站点后台(如WordPress,端口8080)
[site_backend]
type = tcp
local_ip = 192.168.1.200
local_port = 8080
remote_port = 8003
解释:
- 每个隧道下的
local_port是内网服务的实际端口,remote_port是对应公网服务器的端口。 local_ip如果与本机frpc在同一台机器,就用127.0.0.1;如果是其他内网机器,填写其内网IP。- 三个隧道分别映射到公网端口8001、8002、8003,这样你在外网就可以通过
公网IP:8001访问AI,公网IP:8002访问NAS,公网IP:8003访问站点后台。
启动与验证
- 服务端启动:在公网服务器上运行
./frps -c frps.ini(建议用systemd管理)。 - 客户端启动:在内网服务器上运行
./frpc -c frpc.ini。 - 检查连接:观察日志,若出现“start proxy success”则隧道建立。
- 远程测试:在外网浏览器访问
http://公网IP:8001、http://公网IP:8002、http://公网IP:8003,应能分别看到对应服务界面。
避坑指南
- 端口冲突:公网服务器的8001/8002/8003不能已被其他程序占用。使用
netstat -tlnp | grep 8001检查。 - 防火墙放行:确保服务端安全组/iptables开放了7000(控制端口)以及所有映射端口(示例中的8001-8003)。
- 域名分流:如果想用同一端口(例如80)区分服务,可以在
frps.ini中添加vhost_http_port = 80,然后在frpc.ini中每个隧道改用type = http,并设置custom_domains = ai.yourdomain.com、nas.yourdomain.com等。记得域名解析到公网IP。 - Token安全:不要使用默认空密码,避免恶意扫描。
- NAS特殊要求:某些NAS管理界面需要WebSocket支持,
type = tcp一般够用;如果遇到白屏,可尝试type = http并增加host_header_rewrite。
常见问题解答
Q:多个隧道会不会占用太多内存?
A:FRP隧道本身非常轻量,每条隧道只增加少量连接开销,多隧道分流对性能影响极小。
Q:访问站点后台时提示“重定向太多”?
A:多半是因为后端应用使用了HTTPS而前端只配了HTTP,或者反向代理设置了代理头。建议统一使用HTTPS(可搭配FRP的https支持或再套一层Nginx)。
Q:如何让frpc开机自启?
A:将启动命令写入systemd服务文件(/etc/systemd/system/frpc.service),参考官方文档。
结语
通过FRP的多隧道分流,你只需一台低配公网服务器,就能把内网的AI中转、NAS和站点后台全部安全暴露到外网,不同服务互不干扰。
按照本文的步骤配置好端口后,记得检查防火墙和网络连通性。
遇到异常先回看避坑部分,基本能解决90%的问题。
如果你需要更精细的控制(比如通过域名分流),可以在评论区留言交流。