铁威马NAS使用FRP内网穿透完整部署教程
目录
-
铁威马NAS使用FRP内网穿透完整部署教程
-
目录
-
一、环境说明
-
二、准备工作
-
三、服务端部署(公网服务器)
-
3.1 下载FRP
-
3.2 配置服务端(frps.toml)
-
3.3 启动服务端
-
3.4 验证服务端运行状态
-
四、客户端部署(铁威马NAS)
-
4.1 下载FRP
-
4.2 配置客户端(frpc.toml)
-
4.3 启动客户端
-
五、网络连通性故障排查指南
-
5.1 故障现象:客户端连接超时(i/o timeout)
-
5.2 故障案例:服务端只监听IPv6
-
5.3 故障案例:telnet卡住无反应
-
5.4 故障案例:配置文件格式错误
-
六、验证穿透是否成功
七、设置开机自启(推荐)
-
7.1 服务端设置systemd服务
-
7.2 客户端设置systemd服务
-
八、常见问题
-
Q1: 公网访问时显示无法连接
-
Q2: 客户端显示login成功但无法访问
-
Q3: 如何查看实时日志
-
-
一、环境说明
本教程基于以下环境:
| 设备 | IP地址 | 操作系统 | 角色 |
|---|---|---|---|
| 公网云服务器 | 公网IP |
Linux (x86_64) | FRP服务端(frps) |
| 铁威马NAS | 192.168.3.42 | TOS系统 | FRP客户端(frpc) |
需求:将NAS的 9900 端口映射到公网,通过 http://公网IP:18808 访问。
FRP版本:v0.67.0(配置文件格式为TOML)
二、准备工作
-
确认系统架构
# 在服务器和NAS上分别执行 uname -m-
输出
x86_64:下载linux_amd64版本 -
输出
aarch64:下载linux_arm64版本
-
-
确认端口规划
-
7788:FRP客户端连接端口 -
18808:公网访问端口 -
9900:NAS本地服务端口 -
17500:服务端Web面板端口(可选)
-
三、服务端部署(公网服务器)
3.1 下载FRP
# 创建目录并进入
mkdir -p /usr/frp && cd /usr/frp
# 下载v0.67.0(x86_64架构)
wget https://github.com/fatedier/frp/releases/download/v0.67.0/frp_0.67.0_linux_amd64.tar.gz
# 解压
tar -zxvf frp_0.67.0_linux_amd64.tar.gz
cd frp_0.67.0_linux_amd643.2 配置服务端(frps.toml)
创建 frps.toml 文件:
# frps.toml
# 基础连接配置
bindAddr = "0.0.0.0" # 添加这行,强制监听所有IPv4地址
bindPort = 7788
kcpBindPort = 7788
# HTTP 虚拟主机端口 - 公网访问端口
vhostHTTPPort = 18808
# Web 管理面板配置
webServer.port = 17500
webServer.user = "admin"
webServer.password = "admin@123"
# 认证配置
auth.method = "token"
auth.token = "m5afVnzgLTHDBVyO"
# 日志配置 (注意这里!)
log.to = "/var/log/frps.log"
log.level = "info"
log.maxDays = 30
# 传输配置 (注意这里!)
transport.maxPoolCount = 50
3.3 启动服务端
# 前台运行测试(查看是否有错误)
./frps -c ./frps.toml
# 看到类似输出表示成功:
# 2026-02-23 ... [I] [server/service.go:...] frps started successfully
# 按 Ctrl+C 停止,然后后台运行
nohup ./frps -c ./frps.toml > frps.log 2>&1 &
3.4 验证服务端运行状态
# 查看进程 ps aux | grep frps # 查看端口监听 netstat -tlnp | grep 7788
正常输出示例:
tcp 0 0 0.0.0.0:7788 0.0.0.0:* LISTEN 12345/./frps tcp6 0 0 :::7788 :::* LISTEN 12345/./frps
注意:只看到
tcp6是正常的,这是Linux双栈监听机制,不影响IPv4连接。
四、客户端部署(铁威马NAS)
4.1 下载FRP
通过SSH登录到铁威马NAS:
# 创建目录 mkdir -p /volume1/@appdata/frp && cd /volume1/@appdata/frp # 下载v0.67.0(x86_64架构) wget https://github.com/fatedier/frp/releases/download/v0.67.0/frp_0.67.0_linux_amd64.tar.gz # 解压 tar -zxvf frp_0.67.0_linux_amd64.tar.gz cd frp_0.67.0_linux_amd64
4.2 配置客户端(frpc.toml)
情况A:如果9900端口是Web服务(如NAS管理界面)
# frpc.toml
serverAddr = "60.205.163.132"
serverPort = 7788
auth.method = "token"
auth.token = "m5afVnzgLTHDBVyO"
[[proxies]]
name = "nas-web"
type = "http" # 使用 HTTP 类型
localIP = "192.168.3.42"
localPort = 9900
customDomains = ["公网IP"] # 使用服务器的 IP 作为域名
情况B:如果9900端口是非Web服务(如数据库、SSH等)
cat > frpc.toml << 'EOF' serverAddr = "公网IP" serverPort = 7788 auth.method = "token" auth.token = "m5afVnzgLTHDBVyO" [[proxies]] name = "nas-service" type = "tcp" localIP = "192.168.3.42" localPort = 9900 remotePort = 18808 EOF
4.3 启动客户端
# 前台运行测试 ./frpc -c ./frpc.toml # 看到以下输出表示成功: # login to server success # start proxy success # 按 Ctrl+C 停止,然后后台运行 nohup ./frpc -c ./frpc.toml > frpc.log 2>&1 &
五、网络连通性故障排查指南
5.1 故障现象:客户端连接超时(i/o timeout)
错误日志:
connect to server error: dial tcp 60.205.163.132:7788: i/o timeout
排查步骤:
-
在NAS上测试网络连通性
telnet 公网IP 7788
-
解读telnet结果:
-
Connected to 60.205.163.132:✅ 网络通畅 -
Connection timed out:❌ 网络被拦截,检查云平台安全组 -
Connection refused:✅ 网络通但服务端没运行 -
卡住无反应:❌ 流量被静默丢弃,检查安全组和防火墙
-
-
检查云平台安全组(最关键!)
-
登录云服务商控制台(阿里云/腾讯云/华为云)
-
找到ECS实例绑定的安全组
-
添加入方向规则:
协议: TCP 端口: 7788 源: 0.0.0.0/0 策略: 允许
在服务器执行以下命令,则策略立即生效iptables -I INPUT -p tcp --dport 7788 -j ACCEPT
-
-
检查服务器内部防火墙
# 查看防火墙状态 systemctl status firewalld # 如果开启,临时关闭测试 systemctl stop firewalld # 或添加永久规则 firewall-cmd --permanent --add-port=7788/tcp firewall-cmd --reload
5.2 故障案例:服务端只监听IPv6
现象:netstat 只显示 tcp6,客户端连接超时
分析:这是正常现象!Linux双栈监听机制下,tcp6 可以同时处理IPv4和IPv6连接。
验证方法:
# 在服务器本地测试IPv4连接 telnet 127.0.0.1 7788
如果成功,说明监听正常,问题仍在安全组。
5.3 故障案例:telnet卡住无反应
现象:执行 telnet 后没有任何输出,一直卡住
原因:网络数据包在途中被静默丢弃,通常是云平台安全组规则未生效
解决方案:
-
检查安全组规则是否正确配置并保存
-
尝试删除规则重新添加,强制刷新
-
检查是否绑定了多个安全组,其中一个有冲突规则
5.4 故障案例:配置文件格式错误
错误日志:
json: unknown field "file" json: unknown field "maxPoolCount"
原因:配置文件格式与FRP版本不匹配
解决方案:
-
v0.52.0及以上:使用TOML格式,参数用小驼峰(如
log.to) -
v0.51.0及以下:使用INI格式,参数用下划线(如
log_file)
v0.67.0正确TOML格式示例:
# 正确 log.to = "/var/log/frps.log" transport.maxPoolCount = 50 # 错误 ❌ log.file = "/var/log/frps.log" maxPoolCount = 50
六、验证穿透是否成功
-
确认客户端连接成功
tail -f frpc.log
应该看到:
login to server success -
确认服务端有客户端连接
# 在服务器上查看 tail -f /var/log/frps.log
-
公网访问测试
-
在任意浏览器访问:
http://公网IP:18808 -
应该看到NAS 8808端口的服务
-
-
查看Web面板(如果配置了)
-
访问:
http://公网IP:17500 -
用配置的用户名密码登录
-
可以看到所有代理状态和流量统计
-
七、设置开机自启(推荐)
7.1 服务端设置systemd服务
创建 /etc/systemd/system/frps.service:
[Unit] Description=FRP Server After=network.target [Service] Type=simple User=root ExecStart=/usr/frp/frp_0.67.0_linux_amd64/frps -c /usr/frp/frp_0.67.0_linux_amd64/frps.toml Restart=always RestartSec=5 [Install] WantedBy=multi-user.target
启用服务:
systemctl daemon-reload
systemctl enable frps
systemctl start frps
systemctl status frps7.2 客户端设置systemd服务
创建 /etc/systemd/system/frpc.service:
[Unit] Description=FRP Client After=network.target [Service] Type=simple User=root ExecStart=/volume1/@appdata/frp/frp_0.67.0_linux_amd64/frpc -c /volume1/@appdata/frp/frp_0.67.0_linux_amd64/frpc.toml Restart=always RestartSec=5 [Install] WantedBy=multi-user.target
启用服务:
systemctl daemon-reload
systemctl enable frpc
systemctl start frpc
systemctl status frpc八、常见问题
Q1: 公网访问时显示无法连接
可能原因:
-
服务端
vhostHTTPPort未在安全组放行(需放行18808) -
客户端配置错误(检查
localIP和localPort) -
本地服务未运行(确认NAS 9900端口有服务在监听)
Q2: 客户端显示login成功但无法访问
检查:
# 在NAS上确认本地服务 curl http://192.168.3.42:9900 # 或 telnet 192.168.3.42 9900
Q3: 如何查看实时日志
服务端:
tail -f /var/log/frps.log # 或 journalctl -u frps -f
客户端:
tail -f frpc.log # 或 journalctl -u frpc -f
最终验证:当你在任何网络环境下访问 http://公网IP:18808 都能看到NAS的服务时,恭喜你,FRP内网穿透配置成功!
评论