[点晴永久免费OA]端口映射 ≠ 内网穿透 ≠ NAT!99%的人估计都搞混了!
|
admin
2025年6月21日 10:29
本文热度 46
|
联网那么大,为什么我家里的设备连不上外面的世界?NAT?端口映射?内网穿透?
这三个到底是一个意思,还是完全不同?
别急,今天这篇文章,带你一次性彻底搞懂这几个网络世界的“玄学”名词。建议点赞收藏 📌,早晚用得上!
核心概念
- NAT: 网络地址转换,是一种基础网络机制,解决IP地址不足问题,让多个内网设备共享一个公网IP访问互联网。
- 端口映射: 是NAT的一种具体配置方式,由网络管理员主动设置,将路由器的公网IP的某个端口映射到内网特定设备的特定端口,允许外部主动发起访问内网服务。
- 内网穿透: 是一种技术/服务/解决方案,用于在设备位于不支持端口映射或没有公网IP的NAT网关之后的情况下,建立从公网到内网服务的连接通道。它依赖于NAT和端口映射的原理,但通过更复杂的方式(如中继服务器、打洞)实现目标。
详解区别
NAT (Network Address Translation - 网络地址转换)
- 基础机制: 是现代网络(尤其是家庭和企业网络)连接互联网的基础。
- 默认阻止入站连接: NAT的默认行为是只允许内网主动发起的连接(出站)。对于外部主动发起的、指向NAT网关公网IP的新连接请求,如果NAT映射表中没有预先存在的对应条目,该请求会被丢弃(防火墙功能通常也起作用)。这是保护内网安全的重要屏障。
- 透明性: 对于内网设备来说,访问外网通常是透明的(不需要特殊配置)。
- 内网设备发起出站连接(访问外网)时,NAT网关(通常是路由器)会:
- 当外网服务器返回数据包到达NAT网关时,网关根据映射表,将目标IP(公网IP)和目标端口(临时端口)反向转换回对应的内网设备的私有IP和私有端口,然后将数据包转发给内网设备。
- 是什么? 一种在IP网络中广泛使用的技术,主要用于解决IPv4地址枯竭的问题。它允许一个局域网(LAN)内的多台设备(拥有私有IP地址,如
192.168.x.x
, 10.x.x.x
, 172.16.x.x - 172.31.x.x
) 共享一个或少量公网IP地址访问互联网。 - 解决的问题: 核心是解决公网IPv4地址不足的问题,并附带提供了一定的内网安全隔离。
- 将数据包的源IP(私有IP)替换为网关的公网IP。
- 将数据包的源端口替换为一个临时分配的、不冲突的端口号(端口转换,PNAT/PAT)。
- 建立一个NAT映射表(或叫连接跟踪表),记录这个转换关系(私有IP:私有端口 <-> 公网IP:临时端口)。
端口映射 (Port Forwarding / Port Mapping)
- 允许外部主动入站连接: 它明确地在NAT防火墙上“开了一个洞”,允许外部网络主动发起连接访问指定的内网服务。
- 依赖公网IP: 要求路由器的WAN口拥有一个公网可路由的IP地址(或能被外部访问到的IP)。如果路由器本身也在运营商级NAT之后(即没有真正的公网IP),端口映射失效。
- 管理员在路由器上设置一条规则:当有外部连接请求到达路由器的公网IP的特定端口X时,路由器应该将这个请求转发到内网特定设备的特定端口Y上。
- 例如:
公网IP:8080 -> 内网服务器IP(192.168.1.100):80
。 - 当外部客户端连接
路由器公网IP:8080
时,路由器根据配置的映射规则,将请求的目标IP和端口修改为 192.168.1.100:80
,并将数据包转发给该服务器。服务器响应的数据包在返回时,路由器再反向修改源IP和端口,使其看起来是从公网IP:8080回复的。 - 是什么? 是管理员在NAT网关(路由器)上主动配置的一项规则。它属于NAT功能的一部分,是一种静态NAT或目的NAT。
- 解决的问题: 在拥有公网IP的前提下,解决让外部网络能够主动访问NAT网关后特定内网服务的问题(如家里的NAS、摄像头、Web服务器、游戏服务器等)。
内网穿透 (NAT Traversal / Hole Punching)
- 解决方案: 不是单一技术,是多种技术的组合或服务。
- 应对限制: 专门解决没有公网IP或无法配置端口映射的场景(如手机热点、4G/5G网络、CGNAT环境)。
- 依赖中介: 通常需要公网服务器(STUN/TURN/信令服务器) 的协助来发现地址、协调连接或中继数据。
- 复杂性: 实现比端口映射复杂得多,需要专门的软件(客户端/服务端)或服务商(如花生壳、frp、ngrok、ZeroTier, Tailscale等)。
- 连接方向: 虽然最终目的是访问内网服务,但初始连接通常是由内网设备主动“向外”发起到中介服务器,再由中介引导建立通道。
- 利用现有连接: 某些协议(如FTP, SIP, ICE/STUN/TURN)在应用层协商额外的端口,并引导NAT创建所需的映射。
- 内网设备主动连接到一个拥有公网IP的第三方服务器(中继服务器)。
- 服务器在两者之间转发数据。这是最可靠但速度最慢的方式(数据要走两次服务器)。
- UDP打洞: 最常见。两个内网设备先各自连接公网协调服务器。服务器交换双方经过NAT转换后的“公网IP:端口”信息。双方同时尝试向对方的“公网IP:端口”发送UDP包。这些初始包通常会被对方的NAT丢弃(因为没有映射),但神奇的是,它们在自己的NAT设备上打开了一个临时的、允许对方IP进来的“洞”。之后,双方就能通过这个“洞”直接通信了。成功率取决于NAT类型。
- TCP打洞: 原理类似UDP,但TCP是面向连接的,实现更复杂,成功率更低。
- 是什么? 是一系列技术和服务的统称,其目的是在设备位于不支持端口映射、没有权限配置端口映射、或者设备本身位于多层NAT之后(运营商级NAT/CGNAT)导致没有公网IP的情况下,实现从公网访问内网服务或建立两个都在NAT之后的设备间的直接通信。
- 解决的问题: 在不具备端口映射条件(无公网IP、多层NAT、无配置权限)下,实现公网访问内网服务或NAT后设备间的P2P通信。
总结与关系图
- NAT 是基础: 端口映射和内网穿透都建立在NAT存在的环境之上。
- 端口映射 是 NAT 的一种主动配置方式: 它是管理员在拥有公网IP的NAT网关上直接“开端口”指向内网设备,允许外部主动入站连接。简单直接,但依赖公网IP和配置权限。
- 内网穿透 是 绕过 NAT 限制的解决方案: 当端口映射无法实现(无公网IP、无配置权限)时,利用各种技术(中继、打洞等)和中介服务器,在NAT的默认规则下“钻”出一条通道,实现访问或通信。更通用,但更复杂,通常需要第三方或自建服务器。
关系图:
[ 互联网 / 公网 ]
^
|
+-------------------------------------+
| [ NAT 网关 (路由器) ] | <---- 端口映射 (管理员配置规则)
| ^ | (公网IP:PortX -> 内网IP:PortY)
| | |
| +---------------+-----------+ |
| | | |
| [内网设备A] [内网设备B] |
| | (私有IP, 如192.168.1.2) | |
+-------------------------------------+
| ^
| |
| 内网穿透 |
| (例如: |
| * 内网设备A主动连接公网穿透服务器S |
| * 外部客户端C连接服务器S |
| * S中继A<->C的数据 或 |
| * S帮助A和C尝试打洞建立直接连接) |
| |
+---------------------------+
对比
| | | |
---|
本质 | 基础网络机制 | NAT的一种具体配置方式 (规则) | 技术/服务/解决方案 |
主要目的 | | 允许外部主动访问特定内网服务 | 在无法端口映射时访问内网服务或建立P2P |
配置 | | 必须由管理员在NAT网关上手动配置 | |
连接方向 | | 允许外部主动入站 | |
公网IP要求 | | 路由器WAN口必须拥有公网IP | 不要求 |
解决场景 | | 有公网IP时,暴露内网服务 (Web, NAS等) | 无公网IP (CGNAT/4G/5G)、无配置权限时访问内网服务或设备间直连 |
依赖中介 | | | 通常需要公网第三方服务器 |
复杂度 | | | |
例子 | | 路由器设置将公网8080端口映射到NAS的80端口 | 花生壳、frp、ngrok、ZeroTier, TeamViewer远程控制 |
简单来说
- NAT 是让“家里所有人都能用同一个门牌号收发快递(但只能发,收需要特别说明)”。
- 端口映射 是“你告诉快递员:送到门牌号8080的包裹,直接转交给客厅的张三”。
- 内网穿透 是“家里没有门牌号(或者门牌号是小区共用的),张三主动联系了一个中转站,让快递先送到中转站,中转站再想办法转交给张三,或者指导快递员和小区物业临时开一个后门通道”。
阅读原文:https://mp.weixin.qq.com/s/TwCBf2KJC2k3JNT22aKdpQ
该文章在 2025/6/23 12:29:54 编辑过