网络地址转换(NAT)

网络地址转换(NAT)

网络地址转换(NAT)详解:从基础到四种锥型及对称型

你家的路由器到底是怎么让所有设备共享一个公网IP的?这篇文章彻底讲透NAT的工作原理和五种典型类型。

一、什么是NAT?为什么需要它?

简单来说,NAT(Network Address Translation,网络地址转换) 是一种将私有IP地址映射为公网IP地址的技术。

你没有那么多公网IPv4地址给家里的每一台设备。IPv4地址只有约42亿个,而全球设备早已远超这个数字。NAT的诞生很大程度上缓解了IPv4地址枯竭的压力。

一个经典场景:

  • 家里的手机、电脑、平板都分配了像 192.168.1.x 这样的私有地址
  • 当这些设备访问互联网时,路由器会把它们的私有IP+端口替换成路由器的公网IP+一个新端口
  • 外部服务器看到的请求来源全是路由器的公网IP,响应数据再通过路由器分发给正确的内网设备

这个过程被称为 NAT,它不仅节省公网IP,还天然提供了一层安全隔离------外部无法直接主动访问你内网的设备。

二、NAT的核心概念:绑定(Session Binding)

理解NAT类型之前,必须先搞懂"绑定"这个概念。

当内网设备 192.168.1.100:12345 访问外部服务器 8.8.8.8:80 时,路由器会建立一张映射表:

内网地址:端口 映射后的公网地址:端口 目标地址:端口
192.168.1.100:12345 1.2.3.4:50000 8.8.8.8:80

这个 1.2.3.4:50000 就是路由器临时为该会话分配的"公网出口"。后续来自 8.8.8.8:80 发往 1.2.3.4:50000 的包,路由器会转回给 192.168.1.100:12345。

不同NAT类型的本质区别:当一个内网设备已经建立了一个映射关系后,另一个外部主机(不同于之前的目标)能否利用这个已有的映射往内网发包?以及,同一个内网端口访问不同外部主机时,是否会复用同一个公网端口?

三、NAT的五种类型(核心内容)

这是你需要重点理解的部分。下面按照从"最开放"到"最严格"的顺序介绍。

1. 完全锥型 NAT(Full Cone NAT)

定义 :一旦内网设备 (内网IP, 内网端口) 映射到 (公网IP, 公网端口),任何外部主机都可以通过这个 (公网IP, 公网端口) 向内网设备发送数据包。

特点:

  • 最开放,安全策略最宽松
  • 外部主机A、B、C、D...都可以主动连接进来
  • 对P2P应用最友好

映射示例:

复制代码
内网 192.168.1.100:12345 → 路由器映射为 1.2.3.4:10000

外部主机 (任意IP:任意端口) → 1.2.3.4:10000 → 可送达 192.168.1.100:12345

为什么叫"锥型"? 想象一个锥体,从内网这个点出发,映射到一个固定的公网端口后,所有外部主机都能通过这个锥底(公网端口)访问进来。

注意:完全锥型并不常见,因为太不安全。绝大多数家用路由器都不是这个类型。

2. 受限锥型 NAT(Restricted Cone NAT)

定义 :只有内网设备曾经主动访问过 的外部主机,才能通过 (公网IP, 公网端口) 向内网设备发送数据包。但对端主机的端口不做限制。

特点:

  • 比完全锥型多了一道门禁:外部主机必须在"白名单"里
  • 白名单的判定标准:内网设备曾经向该IP地址发送过数据
  • 该外部主机的任意端口都可以向内发包

映射示例:

复制代码
内网 192.168.1.100:12345 先访问了 8.8.8.8:80
→ 路由器映射 1.2.3.4:10000
→ 外部主机 8.8.8.8 的任何端口(如 8.8.8.8:9999)都可以通过 1.2.3.4:10000 向内发包
→ 但 9.9.9.9(未访问过)发来的包会被丢弃

3. 端口受限锥型 NAT(Port Restricted Cone NAT)

定义 :这是受限锥型的加强版。仅当内网设备曾经主动访问过 特定的 (外部IP, 外部端口) 时,该外部主机才能从相同的端口向内发送数据包。

特点:

  • 门禁更严:不仅限制IP,还限制端口
  • 外部主机必须使用内网设备曾经访问过的那个端口来发包
  • 这是家用NAT中最常见的类型之一

映射示例:

复制代码
内网 192.168.1.100:12345 访问了 8.8.8.8:80
→ 路由器映射 1.2.3.4:10000
→ 只有来自 8.8.8.8:80 的包可以到达内网
→ 来自 8.8.8.8:53(不同端口)的包会被丢弃
→ 来自 9.9.9.9:80 的包也会被丢弃

三种锥型对比:

类型 同IP任意端口可访问? 未访问过的IP可访问?
完全锥型 ✅ ✅
受限锥型 ✅ ❌
端口受限锥型 ❌ ❌

4. 对称型 NAT(Symmetric NAT)

定义 :内网设备 (内网IP, 内网端口) 访问不同的外部主机时,路由器会分配不同的公网端口。并且,只有内网设备主动访问过的外部主机才能向内回包。

特点:

  • 与前三种"锥型"完全不同
  • 锥型NAT中,同一个内网端口访问任何外部主机都复用同一个公网端口
  • 对称型NAT中,每次连接的目标不同,公网端口就不同
  • P2P最难穿透的一种NAT

映射示例:

复制代码
内网 192.168.1.100:12345 访问 8.8.8.8:80 → 映射为 1.2.3.4:10000
内网 192.168.1.100:12345 访问 9.9.9.9:80 → 映射为 1.2.3.4:10001(不同的端口!)

只有 8.8.8.8:80 可以向 1.2.3.4:10000 发包
只有 9.9.9.9:80 可以向 1.2.3.4:10001 发包

对称型 vs 端口受限锥型:

关键区别在于:同一个内网端口访问不同的外部服务器时,公网端口是否会变化。

复制代码
端口受限锥型:
192.168.1.100:12345 → 8.8.8.8:80   → 映射为 1.2.3.4:10000
192.168.1.100:12345 → 9.9.9.9:443  → 映射为 1.2.3.4:10000(复用端口)

对称型:
192.168.1.100:12345 → 8.8.8.8:80   → 映射为 1.2.3.4:10000
192.168.1.100:12345 → 9.9.9.9:443  → 映射为 1.2.3.4:10001(新端口)

四、为什么NAT类型对P2P如此重要?

P2P(如BitTorrent、视频通话、区块链、游戏联机)要求两个内网设备能直接建立连接。

锥型NAT比较容易打洞:

  • 双方通过中间服务器交换彼此的NAT映射地址
  • 直接向对方的公网地址发包,利用已有的映射关系实现穿透

对称型NAT打洞很困难:

  • 因为每个目标都对应不同的公网端口,端口不可预测
  • 通常需要中间服务器进行数据中转(TURN协议),这会增加延迟和服务器负载

所以,如果你玩的主机游戏经常提示"NAT类型严格",多半是落在了对称型或者端口受限锥型上。

五、如何检测自己的NAT类型?

简单方法:

  1. Windows上用netstat -ano查看本地端口
  2. 访问 whatsmyip.org 获取公网IP
  3. 用telnet或nc向自己的公网IP+端口发包测试

专业工具:

  • STUN服务器测试 :最标准的方法

    • 命令示例:stunclient --mode full stun.stunprotocol.org
  • 推荐开源工具:pystun3

    复制代码
    pip install pystun3
    pystun3

六、如何优化NAT类型?

如果你想要更开放的NAT(比如为了Switch/PS5/Xbox联机体验):

  1. 开启UPnP(通用即插即用)

    • 路由器管理后台 → 启用UPnP
    • 应用可以动态请求端口映射
  2. 手动端口转发

    • 为特定设备设置DMZ主机(不推荐,安全性较低)
    • 或针对特定端口做静态映射
  3. 使用Full Cone NAT的路由器

    • 某些企业路由或开源固件(OpenWrt、Padavan)支持
    • 但家用原厂固件极少支持完全锥型
  4. IPv6:终极方案

    • IPv6下每台设备都有全球唯一公网地址
    • 不再需要NAT,也就没有NAT类型的问题

总结对比表

NAT类型 同内网端口访问不同目标 外部可访问性 P2P穿透难度
完全锥型 同一公网端口 任何外部主机 极易
受限锥型 同一公网端口 访问过的IP(任意端口) 易
端口受限锥型 同一公网端口 访问过的IP:端口 中等
对称型 不同公网端口 仅限访问过的IP:端口 困难(需中转)
相关推荐
天行健,君子而铎7 小时前
数据分类分级的范式转换:从规则匹配到场景化高准确率一键部署
网络·数据库·安全
深圳市快瞳科技有限公司11 小时前
宠物门禁端侧AI落地解析:画质检测、活体甄别与离线推理
网络
一条泥憨鱼13 小时前
【从0开始学习计算机网络】| ARP 协议:地址解析,ARP 欺骗,链路层寻址
网络·后端·学习·计算机网络
m0_7156744313 小时前
数据分类分级的范式转换:从规则匹配到场景化高准确率一键部署
大数据·网络·人工智能·网络安全
Tech探索者13 小时前
没有公网 IP、不会端口映射?用 Natfrp 轻松远程访问家中 NAS
网络协议·tcp/ip·智能路由器
dog25014 小时前
带宽,时延,抖动的不可能三角
网络·tcp/ip
砚凝霜15 小时前
【软考信息安全】第十六章 网络安全风险评估过程与技术方法
网络·安全·web安全
Eloudy15 小时前
MLNX_OFED 的 install.pl 安装流程分析
网络·rdma·roce
对讲机数码科普17 小时前
从电路原理到协议栈:模拟对讲机与数字对讲机的技术内核拆解
运维·网络·架构·软件工程
我送炭你添花18 小时前
ASA原理与电子维修实战:前言 一路修来,一路学习
运维·网络·学习