引言
为了解决内网设备与外网之间无法直接通信的问题,诞生了两种经典的技术方案------VPN 和 内网穿透。它们虽然都利用了"隧道"机制,但在连接方向、使用场景和实现逻辑上却截然不同。
共同的前提:NAT 与防火墙
在深入两种技术之前,需要先理解它们共同要解决的问题。
家庭或企业网络中的设备通常处于路由器之后,使用的是局域网 IP(如 192.168.x.x)。路由器通过 NAT(网络地址转换) 将内网设备的请求转发到公网,同时默认阻止外网主动发起的连接请求。
内网穿透:让别人访问我
内网穿透解决的是"外网如何访问内网服务"的问题。内网设备主动向公网服务器建立一条持久连接,外网用户通过访问公网服务器,由服务器将请求沿着这条连接反向转发回内网。
工作流程:
- 建立隧道:内网设备运行客户端程序,主动向公网上的穿透服务器发起连接,建立一条加密的长连接隧道。
- 分配入口:穿透服务器为这条隧道分配一个公网可访问的地址(域名或 IP+端口)。
- 接收请求:外网用户访问该公网地址,请求到达穿透服务器。
- 代理转发:穿透服务器识别请求所属的隧道,将数据沿着隧道反向推送给内网客户端。
- 响应返回:内网设备处理完请求后,响应数据沿原路返回,经穿透服务器最终送达外网用户。
常见工具
- Frp(Fast Reverse Proxy):开源、轻量、配置灵活
- Ngrok:老牌内网穿透工具,使用简单
- ZeroTier / Tailscale:基于 P2P 的组网方案,兼具内网穿透能力
VPN:让我访问别人
VPN(Virtual Private Network,虚拟专用网络)解决的是"我如何访问远程内网资源"的问题。它的本质是虚拟组网------通过加密隧道将你的设备"拉入"目标网络,使你在逻辑上成为该网络的一员。
工作流程:
- 建立隧道:你的设备运行 VPN 客户端,主动向目标网络的 VPN 网关(服务器)发起连接。
- 身份认证:VPN 服务器验证你的身份(用户名/密码、证书、双因素认证等)。
- 分配虚拟 IP:认证通过后,VPN 服务器为你分配一个目标内网的虚拟 IP 地址。
- 流量重定向:你的设备将所有(或指定)网络流量通过加密隧道发送给 VPN 服务器。
- 代理访问:VPN 服务器解密流量后,以内网设备的身份转发请求到目标资源,并将响应原路返回给你。
常见协议
- OpenVPN:开源、跨平台、配置灵活
- IPSec / L2TP:企业级常用,系统原生支持
- WireGuard:新一代协议,性能优异、代码简洁
总结
内网穿透是"把门打开,让别人进来";VPN 是"修一条路,让自己走出去"。尽管方向相反,但它们的底层思想是相通的------都是由内网侧主动发起连接,建立一条跨越 NAT 和防火墙的加密隧道。在实际工作中,两者并非互斥,而是经常配合使用。例如,一家企业可能同时部署 VPN 供员工远程办公,又部署内网穿透将内部测试环境暴露给外部合作伙伴。