目录
什么是内网穿透?
内网穿透(NAT穿透) 是一种技术,也被称为内网映射或 nat 穿透,允许外部网络通过公网服务器或中继节点访问局域网(内网)中的设备或服务。简单来说,就是让外网能访问你的内网,把自己的内网(主机)当成服务器,让外网能访问。
-
典型场景:
家庭NAS通过公网访问
本地开发环境(如微信小程序)需公网调试
远程访问公司内网的数据库或办公系统 -
技术原理:
反向代理:通过公网服务器将外部请求转发到内网(如frp、ngrok)。
P2P直连:通过虚拟组网或打洞技术实现直接连接(如ZeroTier、Tailscale)。
以下是 10款支持Windows/Mac系统的内网穿透工具,涵盖开源与商业方案,附官网地址、安装步骤、原理及优缺点分析
1. frp (Fast Reverse Proxy)
-
原理:反向代理,通过公网服务器转发请求到内网。
-
安装步骤:
# Mac/Linux: 下载对应版本解压 wget https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_darwin_amd64.tar.gz tar -zxvf frp_*.tar.gz
-
启动步骤:
# 服务端(公网服务器) # 编辑 frps.ini [common] bind_port = 7000 dashboard_port = 7500 dashboard_user = admin dashboard_pwd = your_password # 启动服务端(Linux/Mac) ./frps -c frps.ini # Windows frps.exe -c frps.ini
# 客户端(内网设备) # 编辑 frpc.ini [common] server_addr = 公网服务器IP server_port = 7000 [web] type = http local_port = 80 custom_domains = your.domain.com # 启动步骤(Linux/Mac) ./frpc -c frpc.ini # Windows frpc.exe -c frpc.ini
-
优点:
协议支持全(TCP/UDP/HTTP)、配置灵活。 -
缺点:
需自建服务器,配置较复杂。
2. ngrok
-
开源地址:https://github.com/inconshreveable/ngrok(开源版需自建)
-
原理:反向代理,通过官方服务器生成临时域名。
-
安装步骤:
# Mac (Homebrew): brew install ngrok/ngrok/ngrok # 去 ngrok官网 注册账号 # 获取你的authtoken # 配置token: ngrok config add-authtoken <TOKEN> # Windows: 官网下载exe,命令行运行: ngrok.exe http 80
-
启动步骤:
# 登录并启动HTTP隧道(Mac) ngrok authtoken <你的Token> # 首次使用需登录 ngrok http 80 # 映射本地80端口 # 高级用法(TCP隧道) ngrok tcp 22 # 映射SSH服务到公网端口
访问 http://127.0.0.1:4040 查看隧道状态。 -
优点:
即装即用,适合临时测试。 -
缺点:
免费版域名随机,付费功能较贵。
3. ZeroTier
-
原理:虚拟局域网(SD-WAN),通过P2P直连或中继穿透。
-
安装步骤:
# Mac (Homebrew): brew install zerotier-one sudo zerotier-cli join <Network-ID> # Windows: 官网下载安装包,加入网络ID即可。
-
启动步骤:
# 加入虚拟网络 # Mac/Linux sudo zerotier-cli join <Network-ID> # Windows:安装客户端后,图形界面输入Network-ID。
授权设备
登录 ZeroTier官网控制台,在对应网络ID下勾选设备授权。
访问内网设备
使用分配的ZeroTier虚拟IP(如 192.168.192.10)直接访问。 -
优点:
跨平台组网,支持全协议。 -
缺点:
免费版限25设备,依赖中央服务器。
4. Tailscale
-
开源地址:https://github.com/tailscale/tailscale(核心基于WireGuard)
-
原理:基于WireGuard的P2P VPN,自动穿透NAT。
-
安装步骤:
# Mac (Homebrew): brew install tailscale sudo tailscale up # Windows: 官网下载安装包,登录账号后自动组网。
-
启动步骤:
# Mac/Linux sudo tailscale up # 自动打开浏览器登录账号 # Windows:安装客户端后,点击“Connect”登录账号。 # 登录后,Tailscale会为设备分配虚拟IP(如 100.x.x.x), # 直接通过该IP访问其他设备。
-
优点:
配置简单,支持多设备同步。 -
缺点:
高级功能需付费(如SSO、审计日志)。
5. Cloudflare Tunnel
-
原理:通过Cloudflare边缘节点代理内网HTTP服务。
-
安装步骤:
# Mac/Linux: wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-darwin-amd64.tgz chmod +x cloudflared ./cloudflared tunnel --url http://localhost:80 # Windows: 下载exe文件,命令行同上。
-
启动步骤:
# 1. 登录Cloudflare账号 cloudflared tunnel login # 2. 创建隧道 cloudflared tunnel create <隧道名称> # 3. 配置路由(需绑定域名) cloudflared tunnel route dns <隧道名称> <子域名> # 4. 启动隧道(映射本地80端口) cloudflared tunnel run --url http://localhost:80 <隧道名称>
-
优点:
免费、集成CDN和DDoS防护。 -
缺点:
仅支持HTTP(S),需绑定Cloudflare域名。
6. OpenVPN
-
原理:通过 SSL/TLS 加密隧道将远程设备接入虚拟局域网(VPN),间接实现内网穿透,允许远程用户访问内网资源。
-
适用场景:企业远程办公、加密访问内网服务(如数据库、文件服务器)。
-
安装步骤
(1) 服务端安装# 安装 OpenVPN 和 Easy-RSA(证书管理工具) sudo apt update sudo apt install openvpn easy-rsa # 初始化证书颁发机构(CA) cp -r /usr/share/easy-rsa/ ~/easy-rsa cd ~/easy-rsa ./easyrsa init-pki ./easyrsa build-ca # 生成 CA 证书 # 生成服务端证书 ./easyrsa gen-req server nopass ./easyrsa sign-req server server # 生成 Diffie-Hellman 参数和 TLS 密钥 ./easyrsa gen-dh openvpn --genkey --secret ta.key # 配置 OpenVPN 服务端 sudo cp ~/easy-rsa/pki/{ca.crt,issued/server.crt,private/server.key,dh.pem} /etc/openvpn/server/ sudo cp ta.key /etc/openvpn/server/ sudo nano /etc/openvpn/server/server.conf # 编辑配置文件(示例配置见下文)
服务端配置文件示例(/etc/openvpn/server/server.conf):
port 1194 proto udp dev tun ca ca.crt cert server.crt key server.key dh dh.pem server 10.8.0.0 255.255.255.0 push "route 192.168.1.0 255.255.255.0" # 允许访问内网网段 push "redirect-gateway def1 bypass-dhcp" # 全流量代理(可选) push "dhcp-option DNS 8.8.8.8" keepalive 10 120 tls-auth ta.key 0 cipher AES-256-CBC user nobody group nogroup persist-key persist-tun status openvpn-status.log verb 3
(2) 客户端配置
生成客户端证书(服务端操作):cd ~/easy-rsa ./easyrsa gen-req client1 nopass ./easyrsa sign-req client client1
客户端配置文件(client.ovpn):
client dev tun proto udp remote your-server-ip 1194 # 替换为服务端公网IP resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client1.crt key client1.key remote-cert-tls server tls-auth ta.key 1 cipher AES-256-CBC verb 3
-
客户端连接:
# Windows/macOS: 使用 OpenVPN GUI 或 Tunnelblick(macOS),导入 .ovpn 文件。 # Linux: 命令行运行 sudo openvpn --config client.ovpn。
-
优点:
企业级安全性:支持 SSL/TLS 加密和证书认证,适合敏感数据传输。
跨平台兼容:支持 Windows/macOS/Linux/移动端。
灵活路由:可配置仅内网流量走 VPN,或全流量代理。 -
缺点:
配置复杂:需手动管理证书和密钥,新手学习成本高。
性能开销:加密过程可能降低网络速度(尤其是低性能设备)。
依赖公网 IP:需服务端具备公网 IP 或通过其他工具(如 frp)穿透。
7. GoProxy
-
原理:GoProxy 是一个多协议代理工具,支持 HTTP(S)/TCP/UDP/Socks5 等协议,通过反向代理或端口转发实现内网穿透。
-
适用场景:复杂代理需求(如多级转发、加密隧道、负载均衡)。
-
安装步骤:
# 1. 直接下载二进制文件(推荐) # macOS/Linux: # 下载最新版(替换版本号) wget https://github.com/snail007/goproxy/releases/download/v11.3/proxy-darwin-amd64.tar.gz tar -zxvf proxy-darwin-amd64.tar.gz mv proxy /usr/local/bin/ # Windows: 访问 GitHub Releases,下载 proxy-windows-amd64.exe。 重命名为 proxy.exe,放入系统路径(如 C:\Windows\)。 # 2. 通过 Homebrew(仅 macOS) brew install goproxy # 3. 验证安装 proxy --version
-
启动步骤:
# 1. HTTP反向代理(暴露内网Web服务) # 在公网服务器运行(反向代理到内网80端口) # 内网用户通过公网IP:80访问服务。 proxy http -t tcp -p ":80" -T tcp -P "内网IP:80" # 2. TCP/UDP端口转发 # 将公网服务器的 3306 转发到内网MySQL(TCP) proxy tcp -p ":3306" -T tcp -P "内网IP:3306" # UDP转发(如内网DNS服务) proxy udp -p ":53" -T udp -P "内网IP:53" # 3. Socks5代理(访问内网任意服务) # 在公网服务器启动 Socks5 代理(端口1080) # 客户端配置浏览器或系统代理为 socks5://公网IP:1080 proxy socks -t tcp -p ":1080" # 4. 加密隧道(保护数据传输) # 服务端(公网) proxy server -t tcp -p ":8000" -k "password" # 客户端(内网) proxy client -t tcp -p "内网IP:80" -T tcp -P "公网IP:8000" -k "password"
-
优点:
协议支持全面:覆盖 HTTP(S)/TCP/UDP/Socks5,适合复杂场景。
高灵活性:支持多级转发、负载均衡、流量加密。
跨平台:Windows/macOS/Linux 均可运行。
开源免费:无商业功能限制,代码透明。 -
缺点
配置复杂:命令行参数较多,新手学习成本高。
文档较少:非主流工具,社区资源有限。
无图形界面:纯命令行操作,不适合小白用户。
8. PageKite
-
原理:反向代理,动态更新DNS记录。
-
安装步骤:
# Mac/Linux: pip install pagekite pagekite.py 80 <你的域名>.pagekite.me # Windows: 使用Python安装后运行相同命令。
-
启动步骤:
# 安装后启动(需注册PageKite账号) pagekite.py 80 <你的域名>.pagekite.me # 自定义域名(付费功能) pagekite.py 80 yourdomain.com:页面KiteSecret
-
优点:
支持自定义域名,开源可控。 -
缺点:
配置较复杂,需Python环境。
9. NetBird
-
原理:基于WireGuard的P2P组网,自动穿透NAT。
-
安装步骤:
# Mac (Homebrew): brew install netbirdio/tap/netbird netbird up # Windows: 官网下载安装包,一键运行。
-
启动步骤:
# Mac/Linux netbird up # 自动打开浏览器登录 # Windows:安装客户端后点击“Connect”。
-
优点:
完全开源,无设备数量限制。 -
缺点:
新项目,社区生态较小。
10. ZeroNews
-
开源地址:未提及(闭源)
-
原理:采用自研高性能 zeronews tunnel 协议,构建安全稳定的内外网通信通道,支持 TCP、UDP 等多种协议,通过优化丢包、重传等机制,在弱网环境下也能保证高带宽、高并发、低延时的业务访问需求。
-
安装步骤
# Mac系统 # Apple 芯片 sudo curl -o /usr/local/bin/zeronews https://download.zeronews.cc/macos/arm/zeronews && sudo chmod +x /usr/local/bin/zeronews # Intel 芯片 sudo curl -o /usr/local/bin/zeronews https://download.zeronews.cc/macos/amd/zeronews && sudo chmod +x /usr/local/bin/zeronews # win系统 首先,创建一个用于存放 ZeroNews 的文件夹,例如: D:\ZeroNews。 然后,访问 ZeroNews官网的客户端下载页面 (https://www.zeronews.cc/download), 将 ZeroNews 客户端 zeronews.exe 下载到指定的目录。 # 登录 ZeroNews 平台,在 "快速开始" 页面中复制一个 Token 备用。 # 执行 ZeroNews 客户端认证。 # Mac认证 zeronews set token <YOUR_TOKEN> # Win认证 zeronews.exe set token <YOUR_TOKEN>
-
启动步骤:
启动 ZeroNews 客户端。 # Mac zeronews start # Win zeronews.exe start -d
前往设备页面,刷新页面,设备状态显示为“在线”,表示设备已成功连接至网络。
-
优点:
支持多平台、多协议、多场景,满足多样化内网访问需求。
安全措施完善,支持 TLS 加密、IP 黑白名单等,保障数据安全。
部署简单,无需改变企业现有网络防火墙、路由器配置。 -
缺点:
闭源项目,用户无法查看和修改源代码。
总结对比表
工具 | 类型 | 协议支持 | 是否需要服务器 | 速度 | 适合场景 | 配置复杂度 | 是否开源 |
---|---|---|---|---|---|---|---|
frp | 反向代理 | TCP/UDP/HTTP/HTTPS | 是 | 中 | 开发者长期使用、多 | 协议穿透 | 中 |
ngrok | 反向代理 | HTTP/TCP | 可选(商业版否) | 中 | 临时测试、快速生成公网域名 | 低 | 部分开源 |
ZeroTier | 虚拟组网 | 全协议(P2P) | 否 | 高(直连) | 跨设备组网、远程办公 | 低 | 核心开源 |
Tailscale | 虚拟组网 | 全协议(基于WireGuard) | 否 | 高(直连) | 个人/团队P2P直连、简化VPN | 低 | 核心开源 |
Cloudflare Tunnel | 反向代理 | HTTP/HTTPS | 否 | 中 | 已有Cloudflare域名的Web服务 | 中 | 是 |
OpenVPN | VPN | TCP/UDP | 是 | 中 | 企业级安全内网访问 | 高 | 是 |
GoProxy | 多协议代理 | TCP/UDP/HTTP/Socks5 | 是 | 中 | 复杂代理需求(如加密隧道) | 高 | 是 |
PageKite | 反向代理 | HTTP/TCP | 是 | 低 | 动态域名映射、简单Web穿透 | 中 | 是 |
NetBird | 虚拟组网 | 全协议(基于WireGuard) | 否 | 高(直连) | Tailscale替代方案、开源组网 | 低 | 是 |
ZeroNews | 多协议代理 | TCP/UDP/HTTPS/HTTP | 否 | 高(直连) | 企业内部访问,开发调试 | 低 | 否 |
建议
个人开发者/临时测试:优先选 ngrok 、 Tailscale 或 ZeroNews。
企业安全访问:OpenVPN 或 Cloudflare Tunnel。
多协议复杂需求:frp 或 GoProxy。
零配置组网:ZeroTier 或 NetBird。