端口转发
端口转发功能基于 Go 原生实现,支持 TCP/UDP 协议的端口映射,可将本机端口的流量转发到指定的目标地址和端口。
技术原理
NAT 穿透基础
家庭和企业网络通常处于 NAT(网络地址转换)环境中,内网设备无法直接被外网访问。端口转发是解决这一问题的最直接方式——在具有公网 IP 的服务器上监听端口,将流量转发到内网目标。
外网用户
│
▼
公网服务器(有公网IP)
监听端口 8888
│ 端口转发
▼
内网设备 192.168.1.100:5000
(NAS / 摄像头 / 服务)NAT 类型说明
不同的 NAT 类型对穿透方案的选择有重要影响:
| NAT 类型 | 说明 | 穿透难度 | 推荐方案 |
|---|---|---|---|
| Full Cone NAT(全锥形) | 内网端口映射后,任何外网 IP 都可访问 | ⭐ 最易 | STUN/UPnP 即可 |
| Restricted NAT(受限锥形) | 只有曾经通信过的外网 IP 才能访问 | ⭐⭐ 较易 | STUN 打洞 |
| Port Restricted NAT(端口受限锥形) | 只有曾经通信过的外网 IP:端口 才能访问 | ⭐⭐⭐ 中等 | STUN 打洞 |
| Symmetric NAT(对称型) | 每次连接都分配不同的外网端口,无法预测 | ⭐⭐⭐⭐ 最难 | 必须使用 FRP/NPS 中转 |
如何判断 NAT 类型?
可以使用 stun-client 工具或在线 STUN 检测服务检测当前网络的 NAT 类型。大多数家庭宽带为 Full Cone 或 Restricted NAT,运营商 CGNAT 通常为 Symmetric NAT。
TCP 与 UDP 协议对比
| 特性 | TCP | UDP |
|---|---|---|
| 连接方式 | 面向连接(三次握手) | 无连接 |
| 可靠性 | 保证数据顺序和完整性 | 不保证,可能丢包 |
| 速度 | 较慢(有确认机制) | 较快(无确认开销) |
| 适用场景 | SSH、HTTP、数据库、文件传输 | DNS、游戏、视频流、VoIP |
| 转发实现 | 基于 TCP 连接代理 | 基于 UDP 连接追踪 |
功能概述
- 支持 TCP、UDP 及 TCP+UDP 双协议转发
- 可指定监听 IP(绑定特定网卡)
- 支持转发到 IP 地址或域名
- 每条规则独立启停,互不影响
- 实时显示连接状态
使用场景
- 将外网端口映射到内网服务(如 NAS、摄像头)
- 在不同端口之间做流量中转
- 将 UDP 游戏流量转发到内网主机
- 数据库端口的安全转发(仅对特定 IP 开放)
配置说明
进入 端口转发 页面,点击右上角 新建 按钮,填写以下配置:
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| 名称 | 字符串 | ✅ | — | 规则名称,便于识别 |
| 启用 | 布尔 | ✅ | true | 是否立即启用此规则 |
| 监听 IP | 字符串 | ❌ | 0.0.0.0 | 监听的本地 IP,留空表示监听所有网卡 |
| 监听端口 | 整数 | ✅ | — | 本地监听端口,范围 1–65535 |
| 转发 IP/域名 | 字符串 | ✅ | — | 目标地址,支持 IP 或域名 |
| 转发端口 | 整数 | ✅ | — | 目标端口,范围 1–65535 |
| 协议 | 枚举 | ✅ | TCP | 转发协议:TCP、UDP、TCP+UDP |
配置示例
示例 1:将本机 8888 端口转发到内网 NAS
将外网访问本机 8888 端口的流量,转发到内网 NAS(192.168.1.100:5000):
| 字段 | 值 |
|---|---|
| 名称 | NAS 访问 |
| 监听 IP | 0.0.0.0 |
| 监听端口 | 8888 |
| 转发 IP/域名 | 192.168.1.100 |
| 转发端口 | 5000 |
| 协议 | TCP |
示例 2:UDP 游戏流量转发
将本机 7777 UDP 端口转发到内网游戏服务器:
| 字段 | 值 |
|---|---|
| 名称 | 游戏服务器 |
| 监听 IP | 0.0.0.0 |
| 监听端口 | 7777 |
| 转发 IP/域名 | 192.168.1.200 |
| 转发端口 | 7777 |
| 协议 | UDP |
示例 3:仅监听特定网卡
只在 eth0(IP 10.0.0.1)上监听,避免暴露到其他网络:
| 字段 | 值 |
|---|---|
| 名称 | 内网专用转发 |
| 监听 IP | 10.0.0.1 |
| 监听端口 | 3306 |
| 转发 IP/域名 | 192.168.1.50 |
| 转发端口 | 3306 |
| 协议 | TCP |
操作说明
启用/禁用规则
在规则列表中,点击 启用 开关可随时启停单条规则,无需删除。
编辑规则
点击规则行右侧的 编辑 按钮,修改配置后保存即可。修改后规则会自动重启。
删除规则
点击 删除 按钮,确认后删除规则并停止转发。
常见问题
Q:端口转发启动失败,提示端口被占用?
原因: 监听端口已被其他程序占用。
解决方法:
# Linux 查看端口占用
ss -tlnp | grep <端口号>
# 或
lsof -i :<端口号>
# Windows 查看端口占用
netstat -ano | findstr <端口号>找到占用进程后,停止该进程或更换监听端口。
Q:外网无法访问转发的端口?
排查步骤:
- 确认 NetPanel 所在服务器有公网 IP(不是内网 IP)
- 检查服务器防火墙是否放行了监听端口:bash
# Ubuntu/Debian (ufw) ufw allow <端口号>/tcp # CentOS/RHEL (firewalld) firewall-cmd --permanent --add-port=<端口号>/tcp firewall-cmd --reload - 检查云服务器的安全组规则是否放行了该端口
- 使用
telnet <公网IP> <端口>或在线端口检测工具验证
Q:连接超时或不稳定?
可能原因及解决方法:
- 目标服务不可达:确认内网目标 IP 和端口是否正确,目标服务是否正常运行
- 网络延迟高:选择地理位置更近的中转服务器
- UDP 超时:UDP 转发默认超时 30 秒,对于长连接 UDP 应用,需要客户端定期发送心跳包
Q:如何选择端口映射方案?
| 场景 | 推荐方案 |
|---|---|
| 有公网 IP 的服务器 | 端口转发(本功能) |
| 无公网 IP,路由器支持 UPnP | STUN 穿透 |
| 无公网 IP,需要稳定穿透 | FRP 客户端 |
| 需要多设备组网互访 | EasyTier |
注意事项
端口占用
监听端口不能与系统已占用的端口冲突。如果启动失败,请检查端口是否已被其他程序占用。
防火墙设置
如果服务器开启了防火墙(如 iptables、ufw、Windows 防火墙),需要放行对应的监听端口,外网才能访问。
UDP 转发说明
UDP 转发基于连接追踪实现,超时时间默认为 30 秒。如果 UDP 应用有长时间无数据的情况,可能需要客户端定期发送心跳包。
安全风险
端口转发会将内网服务直接暴露到公网,请确保目标服务本身有足够的安全防护(如强密码、访问控制)。不建议直接转发数据库端口到公网。