内网穿透与异地组网:frp、NPS、rathole、SSH 隧道、Cloudflare Tunnel、Tailscale
把家里 / 内网的服务暴露出去的几种做法:frp、NPS、rathole、SSH 反向隧道、Cloudflare Tunnel,以及 Tailscale、WireGuard、EasyTier 这类异地组网。
这篇原本是《开源工具&高效解决方案收藏》里的「十、网络 / 代理 / 内网穿透 → 内网穿透、异地组网」。那篇收藏越写越长,已经三千多行,而这部分把几种方案逐个讲配置、调试和掉线处理,是一篇对比教程,所以单独拆出来。
内网穿透(frp/nps/rathole/SSH隧道/Cloudflare Tunnel)
frp
https://github.com/fatedier/frp
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
其他工具:
https://github.com/mvscode/frps-onekey Frp服务端一键配置脚本,脚本默認获取Frp最新版本
https://github.com/Zo3i/frpMgr FRP快捷配置面板
https://github.com/luckjiawei/frpc-desktop 🎉 FRP跨平台桌面客户端,可视化配置,轻松实现内网穿透! 支持所有frp版本 / 开机自启 / 可视化配置 / 免费开源
https://github.com/koho/frpmgr
一款适用于 Windows 系统的、用户友好的桌面 GUI 客户端,用于 FRP。
NPS
项目地址:https://github.com/ehang-io/nps
语言:Go(跨平台)
支持 TCP/UDP/HTTP/HTTPS/SOCKS5
Web 管理界面(支持用户管理)
支持多用户(SaaS 模式)
NPS 比 frp 更企业化,功能丰富,且依旧开源。很多人从 frp 迁移过来。
rathole
项目地址:https://github.com/rapiz1/rathole
语言:Rust(超小内存、性能强)
适合替代 frp、极度轻量、安全性高,非常适合自建使用。
使用 SSH 的反向隧道
[内网机器] --(ssh 连接)--> [公网VPS]
| |
|<== 可通过 VPS 访问此 TCP 服务 |ssh -N -R 12345:localhost:8080 root@1.2.3.4| 部分 | 含义 |
|---|---|
-N | 不打开 shell,只转发 |
-R | 创建反向隧道 |
12345:localhost:8080 | 把 VPS 的 12345 端口映射到本地的 8080 |
vpsuser@1.2.3.4 | VPS 用户和地址 |
你必须在 VPS 的 /etc/ssh/sshd_config 中控制哪些用户允许反向隧道:
# 确保以下配置开启
GatewayPorts yes
AllowTcpForwarding yes重新启动 SSH 服务:
sudo systemctl restart sshd调试
检查端口+kill进程

SSH 长时间空闲被踢
ssh -N -R 8868:localhost:8868 -o ServerAliveInterval=60 root@relay.example.com如果本机没有开ipv6会出现问题,因为Windows主机优先把localhost解析为ipv6地址
Windows 上
localhost默认优先解析为 IPv6(::1), 而你的 Nginx 只监听了 IPv4(127.0.0.1), SSH 反向隧道实际连到了::1:443,结果直接被系统关闭。C:\Users\maluyao>ssh -N -T -R 0.0.0.0:8867:localhost:443 root@relay.example.com 失败!!! C:\Users\maluyao>ssh -N -T -R 8867:127.0.0.1:443 root@relay.example.com 成功!!!这里的
localhost在 Windows 上经常会优先解析到 IPv6 的::1(而不是127.0.0.1)。 你的本机 Nginx 虽然能用https://127.0.0.1:443访问,但很可能 没有在::1:443上监听(没开 IPv6 listen)。真正的问题是:Windows 上用
localhost做转发目标时,实际走到 IPv6::1,而本机服务只在 IPv4 上可用
ARGO (Cloudflare Tunnel)
Cloudflare Tunnel(2021更名) 是由 Argo Tunnel(2018 年) 转变而来的
客户端统一叫:cloudflared
定位从“企业特性” → 开发者 / 个人也能免费用,成为 Cloudflare Zero Trust 体系的一部分
Cloudflare 官方文档下载页
https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/installation/直接下载 .exe:
https://github.com/cloudflare/cloudflared/releasesCloudflare Tunnel 可以算是“免费的内网穿透”,而且是目前最稳定、最安全的免费方案之一。
限制:
| 限制点 | 说明 |
|---|---|
| 协议限制 | 主要只适合 HTTP / HTTPS |
| UDP 不支持 | 游戏、实时语音不可用 |
| TCP 原始转发受限 | 非 Web 服务不推荐 |
| 流量限制 | 有 合理使用原则(无明确数值) |
| 大流量不适合 | 视频、下载站风险高 |
| 域名要求 | 长期使用需 Cloudflare 域名 |
| trycloudflare 限制 | 仅测试用,不稳定、不固定 |
使用这种方式搭建网站不需要自己维护SSL
异地组网(Tailscale/WireGuard/EasyTier)
在线检测NAT类型:https://natchecker.com tailscale:https://tailscale.com/
Headscale(tailscale的开源自建):https://github.com/juanfont/headscale
easytier:https://easytier.cn/
https://github.com/EasyTier/EasyTier


https://github.com/vnt-dev/vnt
高效的 VPN。 高效的异地组网、内网工具。支持WireGuard接入VNT网络,适用于iOS端
WireGuard可以异地组网
WireGuard:
本质是一个 工作在内核层的加密隧道(虚拟网卡)
它不是“代理”,而是 把你的设备接进 VPS 的网络栈
WireGuard 不区分“客户端 / 服务端”,任何节点都可以互相直连
Tailscale 是一个“把设备安全地连在一起”的工具,可以把你分散在各地的电脑、服务器、手机,组成一个像在同一个局域网里的私有网络。
简单说,它解决的问题是:不用折腾端口映射、固定 IP、复杂 VPN,就能让设备彼此直接访问。
它的核心原理是基于 WireGuard 加密,每台设备都会获得一个虚拟内网 IP。设备之间优先尝试点对点直连,如果直连不行才走中继,全程加密,性能和安全性都不错。
VPN 自建
VPN可以实现内网访问,可以在内网机器上搭建VPN,通过SSH反向隧道暴露到公网,实现内网VPN
评论
评论加载中……