内网穿透: FRP 套 Xray,公网零端口暴露的企业级“VPN”部署方案
注意
本套教程仅适用于:自建 VPS 节点,拥有 VPS
root权限的用户。 Xray 节点请自行部署,本人使用3x-ui自建的VLESS+vision+reality节点做演示。
引言
折腾 NAS 的朋友一定深有体会:买了昂贵的优质线路 VPS (比如 DMIT ),用来做 FRP 内网穿透确实爽。但是,FRP 只要在公网暴露 7000 或 7474 这样的端口,有可能因为特征明显被直接封禁 IP / 阻断端口。
为了解决这个问题,我花了一下午死磕底层网络逻辑,踩了无数的坑,终于完美实现了一套“企业 VPN 级”的内网穿透方案: 全网仅暴露 443 伪装端口,FRP 流量被完美包裹在 Xray 隧道中,VPS 公网完全隐形,不仅极致安全,而且能够直跑物理带宽上限!
今天把这套方案和避坑指南无保留分享给大家。
看前提醒:为什么要用 FRP + Xray ,而不是纯 Xray 原生反代?
肯定有朋友会问,Xray 早就内置了 Reverse Proxy 功能,为啥还要多套一层 FRP ?这其实是基于解耦与维护成本的深度考量:
- 维护不便:Xray 的原生反代需要配置极其复杂的
bridge和portal,每次新增 NAS 端口都要动核心的 JSON 路由表,牵一发而动全身,极易导致整个节点崩溃。 - 专业的事交给专业的工具:我们采用分层架构理念。让 Xray 专心做它最擅长的事——底层 TLS 伪装与加密传输;让 FRP 专心做它最擅长的事——优雅的端口分发与流量管理。
- 性能零损耗:我们在配置中强制关闭 FRP 自带的 TLS ,让明文流量直接在 Xray 加密隧道中全速裸奔,既享受了 FRP 极简的 TOML 端口映射,又白嫖了 Xray 顶级的加密穿透性能。
如果您要纠结这个,那这篇教程不适合您,请关闭。
网络架构图
简单来说,我们的目标是:让本地的 FRP 流量伪装成正常的翻墙流量,抵达 VPS 后,再由 Xray 内部转发给 FRP 服务端。

实操步骤
步骤 1:VPS 端配置 Xray 路由
在你的 VPS 面板中,修改出站和路由,我这边使用8384端口演示,其它端口请以此类推:
照我这样填写,点击确定后保存,重新启动 Xray 。
点击确定后,保存,重启内核。
注意:这里必须按相同步骤再添加一个 7000 端口!否则 frp 连不上(因为完全依赖 Xray 转发) 因为我是合租的服务器,所以 user 这里填写自己的用户,以确保其它人无法访问,(这里计流量也是走用户自己的),正常可不填。
步骤 2:VPS 端配置 FRPS
先用 ssh 连接上服务器:
- 创建并进入目录
mkdir -p /opt/frp
cd /opt/frp
- 下载最新(截止 20260327 )的 FRP
wget https://github.com/fatedier/frp/releases/download/v0.68.0/frp_0.68.0_linux_amd64.tar.gz
- 解压文件并把里面的内容挪出来
tar -zxvf frp_0.68.0_linux_amd64.tar.gz --strip-components=1
- 删除没用的压缩包和客户端文件
rm frp_0.68.0_linux_amd64.tar.gz frpc frpc.toml
- frps.toml 配置文件
cat <<EOF > /opt/frp/frps.toml
bindAddr = "127.0.0.1"
bindPort = 7000
proxyBindAddr = "127.0.0.1"
[auth]
method = "token"
token = "yourtoken"
[transport]
tls.force = false
EOF
- 注册为系统服务
cat <<EOF > /etc/systemd/system/frps.service
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
ExecStart=/opt/frp/frps -c /opt/frp/frps.toml
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
EOF
- 启动并检查状态
systemctl daemon-reload
systemctl enable --now frps
systemctl status frps
若显示:
active (running)则表示启动成功步骤 3:NAS 端配置 FRP 客户端 (frpc)
创建或修改你 NAS 上的 frpc.toml:
# frpc.toml
# 目标地址千万不要写 127.0.0.1 或 VPS 真实 IP !
# 我们随便写一个假公网 IP ( 11.11.11.11 ),这样本地 V2ray 就可以不用配置了。
serverAddr = "11.11.11.11"
serverPort = 7000
[auth]
method = "token"
token = "yourtoken"
[transport]
# 让 FRP 的所有流量走 NAS 本地的 Xray SOCKS5 隧道!
# 注意:如果你的代理端口不是 1145 ,请在这里修改!
proxyURL = "socks5://127.0.0.1:1145"
tls.enable = false
# 还是用我的 8384 端口来演示
[[proxies]]
name = "syncthing"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8384
remotePort = 8384
# 下面其它端口配置以此类推
结语
这套方案竣工后,你可以放心大胆地在手机或电脑上挂着翻墙节点,浏览器直接访问 http://11.11.11.11:端口号 来秒开家里的服务,就像企业级 VPN 一样。
nginx 反代了解一下