学习使用 iptables、frp、Gost 及最新的 Cloudflare Tunnel 等多种工具,将内网服务安全地发布到公网,或在不同服务器间建立安全隧道,解锁 VPS 的高级网络玩法。
🧠 核心概念解析
端口转发 (Port Forwarding) 指的是将发送到一个 IP 地址和端口号组合的数据包,转发到另一个可能不同的 IP 地址和端口号。而内网穿透 (NAT Traversal) 是一种特殊的端口转发,目的是让位于 NAT(网络地址转换)设备(如家庭路由器)后面的内网设备,能够被公网访问。
简单来说,这些技术就像是为没有公网地址的设备(例如您的家庭电脑)在拥有公网 IP 的 VPS 上开一个“窗口”,让外部的访问可以通过这个窗口找到并访问您的设备。
🎯 常见应用场景
远程访问家庭 NAS
将家中的 NAS 或树莓派服务(如 Plex, Home Assistant)安全地发布到公网,随时随地访问。
临时开发调试
将本地开发环境的 Web 服务临时暴露给同事或客户进行预览,无需部署到测试服务器。
访问内网办公系统
安全地访问公司内网的 OA、Jira 等系统,而无需使用复杂的 VPN。
跳板机与代理
利用一台服务器作为跳板,访问其内网中的其他机器,或者作为网络代理使用。
⚖️ 方案对比与选择
不同的工具有不同的适用场景,下表可以帮助您快速选择:
| 工具 | 易用性 | 特点 | 核心应用场景 |
|---|---|---|---|
| iptables | 困难 | 内核级转发,性能最高 | 服务器端口转发、NAT |
| Socat | 简单 | 单行命令,轻量级,支持TCP/UDP | 临时或极简的单端口转发 |
| SSH 隧道 | 简单 | 系统自带,无需额外软件,加密 | 临时、安全的端口转发 |
| Gost | 中等 | 功能极其强大,协议支持全面,加密 | 复杂的多级转发、隧道链 |
| frp | 简单 | 专为内网穿透设计,配置简单,稳定 | 将 NAT 后内网服务发布到公网 |
| Cloudflare Tunnel | 中等 | 无需开放公网端口,极度安全,自带 CDN | 无公网 IP 家庭宽带、高安全要求穿透 |
💡 选择建议
- 👉 极度安全/无公网 IP 家庭宽带: 强烈推荐 Cloudflare Tunnel,无需折腾公网。
- 👉 长期、稳定地用 VPS 暴露内网服务: frp 是最经典的选择。
- 👉 临时调试、安全访问远程数据库: 优先使用 SSH 隧道或 Socat。
- 👉 构建复杂的加密隧道网络: 选择功能最强大的 Gost。
- 👉 VPS 极致性能端口转发: 使用内核级的 iptables。
🔥 iptables 转发 (同网)
这是 Linux 内核级别的转发,性能最高,适用于将 VPS 的一个端口收到的流量转发到本机或其他 IP 的另一个端口。
开启内核 IP 转发
编辑 /etc/sysctl.conf 文件,确保 net.ipv4.ip_forward=1 这一行存在且没有被注释。
# 取消注释或添加此行 net.ipv4.ip_forward=1 # 使配置生效 sysctl -p
添加转发规则
假设我们要将 VPS 8888 端口的 TCP 流量转发到本机 8080 端口:
iptables -t nat -A PREROUTING -p tcp --dport 8888 -j DNAT --to-destination 127.0.0.1:8080 iptables -t nat -A POSTROUTING -p tcp -d 127.0.0.1 --dport 8080 -j MASQUERADE
您还需要安装 iptables-persistent 来保存规则,以防重启后失效。
🔀 进阶:Socat 极简转发
如果您觉得 iptables 的规则过于复杂难以记忆,Socat 是您的最佳平替。它可以像一条管道一样,直接将一个端口的数据倒进另一个端口。
# 1. 安装 socat (Debian/Ubuntu) apt update && apt install socat -y # 2. 将本机 8888 端口转发到目标 1.2.3.4 的 80 端口 socat TCP4-LISTEN:8888,reuseaddr,fork TCP4:1.2.3.4:80
运行后,socat 会在后台挂起监听。如果您需要长期运行,可以配合 nohup 或将其写成 systemd 服务。
🔗 SSH 隧道 (便捷)
利用 SSH 协议建立的加密隧道,无需安装额外软件,非常适合临时和安全的转发需求。
本地转发 (-L)
将本地端口通过 VPS 转发到目标服务器。常用于安全地访问远程数据库。
# 访问本地 8080 端口 -> 远程 3306 端口 ssh -L 8080:localhost:3306 user@vps_ip
远程转发 (-R)
将VPS 端口转发到本地服务,实现简单的内网穿透。
# 访问 vps_ip:8080 -> 本地 3000 端口 ssh -R 8080:localhost:3000 user@vps_ip
注意:需要修改 VPS 的 /etc/ssh/sshd_config 并启用 GatewayPorts yes 才能让外网访问。
👻 Gost 隧道 (强大)
Gost 是一个功能极其强大的瑞士军刀级隧道工具,支持海量协议和复杂的转发组合。
下载并运行 Gost
在 Gost GitHub Releases 页面下载对应您 VPS 架构的版本。
wget https://github.com/ginuerzh/gost/releases/download/v2.11.5/gost-linux-amd64-2.11.5.gz gzip -d gost-linux-amd64-2.11.5.gz chmod +x gost-linux-amd64-2.11.5
简单端口转发示例
将 VPS 8888 端口的 TCP 流量转发到 example.com 的 80 端口。
./gost-linux-amd64-2.11.5 -L=tcp://:8888/example.com:80
Gost 的玩法远不止于此,可以通过 -F 参数建立复杂的多级转发链,请参考其官方文档。
🚀 frp 穿透 (常用)
frp 是一款专注于内网穿透的高性能反向代理应用,配置简单,非常稳定。非常适合将处于家庭 NAT 路由下的设备暴露给拥有公网 IP 的 VPS。
frp 架构
- frps (服务端): 部署在有公网 IP 的 VPS 上。
- frpc (客户端): 部署在需要穿透的内网设备上。
在 VPS 上配置 frps (服务端)
下载 frp 并编辑 frps.ini 文件:
[common] bind_port = 7000 token = your_secure_token
运行命令: ./frps -c ./frps.ini
在内网设备上配置 frpc (客户端)
下载 frp 并编辑 frpc.ini 文件:
[common] server_addr = your_vps_ip server_port = 7000 token = your_secure_token [web] type = tcp local_ip = 127.0.0.1 local_port = 80 remote_port = 8080 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000
运行命令: ./frpc -c ./frpc.ini
访问服务
- 访问
your_vps_ip:8080即可看到您内网设备的 Web 服务。 - 通过
ssh -p 6000 user@your_vps_ip即可连接到内网设备的 SSH。
☁️ 进阶:Cloudflare Tunnel (零信任穿透)
如果您没有公网 IP 的 VPS,或者担心在公网暴露端口不安全,Cloudflare Tunnel (原 Argo Tunnel) 是当今最完美的终极解决方案。您的内网设备主动向 CF 发起连接,无需开放任何入站端口,即可将 NAS 或 Web 服务挂载到您的域名下。
# 1. 在本地机器(如 NAS)上安装 cloudflared curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb sudo dpkg -i cloudflared.deb # 2. 登录并授权 (会给出一个 URL,在浏览器打开并授权您的域名) cloudflared tunnel login # 3. 创建隧道并配置路由 cloudflared tunnel create my-nas cloudflared tunnel route dns my-nas nas.yourdomain.com cloudflared tunnel run my-nas
🔒 安全注意事项
将内网服务暴露到公网会带来极大的安全风险,请务必遵守以下原则:
🔑 使用强 Token
在使用 frp、Gost 等工具时,务必设置复杂的 token 或密码,防止未授权的客户端连接您的服务端。
🛡️ 最小化暴露
只转发您确实需要的端口,绝对不要将家庭内网的 SSH 22 端口或 3389 远程桌面直接暴露到公网的默认端口上。
🌐 结合 HTTPS
对于暴露的 Web 服务,强烈建议配合 Nginx 反向代理和 SSL 证书,实现 HTTPS 加密访问,防止中间人嗅探。
🎯 下一步行动
网络包分析与故障排查
端口转发不通?学习使用 tcpdump 深入分析网络流量,解决疑难杂症。
Linux 系统优化指南
回到系统底层,回顾内核优化、安全加固配置,巩固服务器基础。
VPS 推荐榜单
查看经过实测验证的优质 VPS 商家推荐,为内网穿透找一台高带宽前置节点。
浏览更多教程
探索服务器安全、网站搭建、性能优化等进阶主题。
🚀 下一步行动
掌握了本篇内容只是第一步,接下来您可以按照以下路径继续深入: