如果你玩主机游戏、跑 P2P 下载、用远程桌面回自己家、或者在 NAS 上开 BT 做种,大概率撞过同一堵墙:NAT 类型是对称型(Symmetric NAT),也叫 NAT4。后果很具体:Xbox 显示"严格 NAT"组不起语音派对,Switch 联机频繁掉线,BT 做种只能连别人、别人连不上你,远程桌面和自建 VPN 全靠第三方服务器中转。

去问运营商,答案高度统一:"我们的设备不支持全锥型 NAT。"

这句话在中文互联网上流传了至少五六年,被客服、装机师傅、甚至部分论坛"专业人士"反复复述,但从来没有被任何一份公开的设备规格书证实过。于是我搭了个实验台,把它验一遍,证实是运营商啥谎,还是确有其事!

一、实验环境

全部在一台普通 PC 上用虚拟机完成,不接触任何现网设备。整套环境只依赖 VMware 和 eNSP,如果想要最新的NE设备,见站内的 eNSP Pro 安装下载教程,从导入 ovf 到 8443 端口连不上都有对应解法。

角色配置
宿主Windows + VMware Workstation Pro
虚拟网络VMnet1 = 模拟公网 192.168.65.0/24;VMnet9 = 模拟私网 192.168.66.0/24
网络仿真华为 eNSP
公网服务器Rocky Linux 8.9,192.168.65.152 与 192.168.65.153 双 IP
NAT 设备华为 USG6000V1(eNSP 镜像)
客户端Windows 10,192.168.66.100,网关 192.168.66.12
实验网络拓扑:USG6000V 夹在模拟公网侧与家庭宽带私网侧之间

被测设备的版本是整个实验最关键的一行信息:

Huawei Versatile Routing Platform Software
VRP (R) Software, Version 5.170 (USG6000V1 V500R005C10SPC300)
IPS Signature Database Version   : 2018122108

V500R005C10SPC300,签名库日期 2018 年 12 月。 这是七年前的固件,而且是 eNSP 里的虚拟镜像——按常理,虚拟镜像的功能是实机的子集。请记住这个时间点,后面要用。

eNSP 云设备桥接到 VMnet1,模拟运营商公网侧
eNSP 云设备桥接到 VMnet9,模拟家庭宽带私网侧

二、搭一个能说真话的 STUN 服务器

判断 NAT 类型必须有 RFC 3489 / RFC 5780 的 STUN 服务器。公共 STUN 服务(Google、Cloudflare)只能测出映射地址,测不出行为分类,因为它们不响应 CHANGE-REQUEST。

顺带说明,这台 NAT 设备背后承载多少并发会话,可以直接用站内的 CGNAT 会话数在线测试 量出来——会话表容量正是运营商不愿开全锥的成本项之一,两个数据放在一起看更有体感。

为什么必须用双 IP

RFC 3489 四步测试和 RFC 5780 行为发现的核心手段,是让客户端发一个带 CHANGE-REQUEST 的请求,服务器据此从另一个 IP、另一个端口的 socket 回包。能收到,说明 NAT 允许外部任意地址主动进入,即端点无关过滤(EIF)。单 IP 服务器根本构造不出这个测试——这也是全网大量"测 NAT 类型"教程无效的原因。

192.168.65.152:3478   primary / primary port
192.168.65.152:3479   primary / alternate port
192.168.65.153:3478   alternate IP / primary port
192.168.65.153:3479   alternate IP / alternate port
服务器双网卡配置:ens160 与 ens33 承载两个 IP
两个 IP 同网段,必须抑制 ARP flux 才能保证换 IP 测试有效

双 IP 同网段的陷阱:ARP flux

两张网卡挂在同一个广播域,默认配置下 Linux 会出现 ARP flux:源地址是 192.168.65.153,出口却是 ens160。备用 IP 在二层不可达,换 IP 的测试全部失效,测出来必然是对称型,而这个结论是假的。必须修:

# 抑制 ARP flux
sysctl -w net.ipv4.conf.all.arp_ignore=1
sysctl -w net.ipv4.conf.all.arp_announce=2

# 源地址策略路由:每个 IP 固定走自己的网卡
ip route add 192.168.65.0/24 dev ens160 src 192.168.65.152 table 152
ip route add 192.168.65.0/24 dev ens33  src 192.168.65.153 table 153
ip rule add from 192.168.65.152 table 152 priority 100
ip rule add from 192.168.65.153 table 153 priority 101

这一步不做,后面所有数据都是错的。很多"我测了是对称型"的结论,正是栽在这里。

同时兼容两代协议

协议Transaction IDMagic Cookie
RFC 3489(2003)16 字节无
RFC 5389 / 5780(2008+)12 字节0x2112A442

服务器必须检测 data[4:8] 是否等于 magic cookie,据此决定 TID 长度和响应封装。只实现 RFC 5389 会让老工具直接判 UdpBlocked——看起来像"UDP 被封",其实是服务器不认它。

三、配置被测的 NAT 设备

基础网络

system-view
interface GigabitEthernet1/0/0
 ip address 192.168.65.12 255.255.255.0
 service-manage ping permit
 quit
interface GigabitEthernet1/0/1
 ip address 192.168.66.12 255.255.255.0
 service-manage ping permit
 quit

firewall zone untrust
 add interface GigabitEthernet1/0/0
 quit
firewall zone trust
 add interface GigabitEthernet1/0/1
 quit

华为防火墙的物理接口不加入安全域时逻辑状态是 down,连 ARP 都不响应。这是它与路由器的根本区别,也是新手最容易卡死的地方。

USG6000V 的 NAT 地址池
源 NAT 策略绑定地址池
安全策略放通 trust 到 untrust
# 会话老化:四步测试是串行发请求,老化太短会误判
firewall session aging-time udp 120

四、三轮测试:从对称型到全锥型

客户端网络就绪后先确认穿越:

客户端 IP 与网关
链路连通性确认

第一轮:出厂默认

RFC 3489 判定:Symmetric,Public end 192.168.65.203:2048
RFC 5780 行为探测

Public end 落在 192.168.65.203,正是地址池 65.200-210 里的地址,PAT 工作正常。这就是运营商默认给你的东西。

第二轮:只打开端点无关过滤

firewall endpoint-independent filter enable

清会话后重测,结果仍是 Symmetric,Public end 从 2048 变成 2053。这里触到一个很多人理解错的技术细节:

在 APDM(地址端口相关映射,即对称型映射)下,EIF 过滤是无效的。

原因很直白:映射本身就随目标漂移。客户端访问 65.152:3478 时,NAT 分配的 65.203:2053 这条表项只对应这一个目的地址。服务器从 65.153:3479 回包时目的地址变了,报文在查 NAT 表阶段就匹配不上任何表项,根本走不到过滤判定。

所以只开 EIF,等于给一扇不存在的门装了把锁。

第三轮:把映射改成全锥模式

在地址池视图下尝试启用 Smart Fullcone,报出一条决定性的错误:

smart-fullcone exclude-dest-port 1 1
Error: Current mode can not support smart fullcone.

特性存在,只是当前模式不支持。 打开 Web 界面看同一个地址池,真相立刻浮现:NAT类型 有两个可选值——五元组NAT 与 三元组NAT。

关键发现:地址池 NAT 类型必须选三元组,并勾选允许外部主动访问

华为的术语在这里非常清晰:

  • 五元组 NAT:映射基于 源IP : 源端口 : 目的IP : 目的端口 : 协议,每换一个目标就新建映射 → APDM,对称型
  • 三元组 NAT:映射基于 源IP : 源端口 : 协议,与目的无关 → EIM,端点无关映射
  • 允许外部主动访问:EIF,端点无关过滤

改完之后的实际配置:

最终生效的设备命令:mode full-cone global
nat address-group full-nat 1
 mode full-cone global
 section 0 192.168.65.211 192.168.65.211

mode full-cone global 就是三元组 NAT 在 CLI 层的真实关键字,Web 界面把它藏成了下拉框。

结果

RFC 5780:Mapping 与 Filtering 均为 EndpointIndependent
RFC 3489 判定:FullCone,Public end 192.168.65.211:4096
Binding test       : Success
Mapping behavior   : EndpointIndependent
Filtering behavior : EndpointIndependent
Public end         : 192.168.65.211:4096

EIM + EIF 同时成立,RFC 5780 官方判据完全命中全锥型。 Public end 也换成了新地址池的 192.168.65.211,地址池切换确实生效。

五、三轮结果对照

轮次映射行为过滤行为NAT 类型关键动作
基线APDM(五元组)APDFSymmetric出厂配置
第二轮APDM(五元组)EIFSymmetric只开 endpoint-independent filter
第三轮EIM(full-cone)EIFFull Cone地址池 mode full-cone global

这张表同时纠正一个长期误区:很多人以为"开全锥型"是一个开关,实际上是两个维度的组合,缺一不可。

  • 三元组 + 无 EIF → Restricted Cone(受限锥型)
  • 三元组 + EIF → Full Cone(全锥型)
  • 五元组 + 任何过滤 → Symmetric(对称型)

六、现在来谈运营商的说辞

实验结果摆在这里:2018 年 12 月固件的 eNSP 虚拟镜像,不是高端型号,不是最新版本,甚至不是真机,它做到了全锥型 NAT。

"设备不支持"——这个说法经不起一次版本查询

华为 NE40E 系列从 V800R010 起就在 CGN 业务里提供 NAT 地址池与行为控制能力,官方配置指南里 nat address-group、nat-instance 是标准章节(华为官方 CGN 配置指南)。运营商的 BRAS/CGN 设备普遍是 NE40E、ME60、USG12000 级别,不是家用几十块钱的路由器。

一个 2018 年的模拟器都有的特性,说现网设备没有——要么用的是比 2018 年更旧的设备(那更该解释为什么七年不升级),要么这句话本身就是托词。设备能力是可以查证的:型号、版本、License 都在运营商自己的资产台账里。如果真是"设备不支持",完全拿得出型号和版本号。但他们从来不拿,只重复"不支持"三个字。

"全锥型有安全风险"——把两件事混为一谈

全锥型的风险边界非常清楚:只影响入方向——外部主机在知道你的公网 IP:端口后可以主动发包。

但请注意:NAT 从来不承担安全职责。做访问控制的是防火墙策略,不是 NAT 的过滤行为。 把 NAT 当安全设备本身就是架构错误。真正需要入方向管控的业务,靠的是安全策略、白名单、认证,而不是"让所有人都连不上"。

更关键的一点:运营商在企业专线、IDC 托管业务里,给的就是全锥或公网 IP。 同一家运营商,卖企业套餐时设备"支持",卖家庭宽带时就"不支持"了?设备是同一批设备。

真实原因:三笔账

端口资源。 三元组下,一个内网源端口在整个映射生命周期内独占一个公网端口,不管访问多少目标。五元组下映射按目标分裂,端口可以细粒度复用。CGN 场景里一个公网 IP 承载几千户,端口是稀缺资源。

会话表容量。 全锥需要更长的映射生命周期,NAT 会话表内存和查表性能压力更大,直接对应设备采购成本。

运维复杂度。 对称型天然抑制 P2P、BT、私搭服务这类"计划外流量",客观上降低了骨干网压力。这是收益,不是负担——只是这个收益建立在牺牲用户体验之上。

这三笔账在技术演进后已大幅缩水:IPv6 普及后端口稀缺性下降,NAT 硬件性能早已过剩。但在 IPv6 迟迟不落地的现实下,运营商选择了最省事的方案:不改,然后用话术解释为什么不改。

这不是个别现象

搜索一下就会发现这是系统性、有组织的动作,而不是"设备限制":

  • 广东移动被用户发现"把全锥改成对称型"(恩山论坛)
  • 广西移动"全省统一改成 NAT4 并且关闭 IPv6",连没挂 BT 种子的线路也被封
  • 广州联通宽带用户报告"变成 nat4"(V2EX)
  • 移动家用宽带"即将全面部署 NAT4"的讨论长期存在(NGA)

注意关键词是"改成"。 不是"一直都是",是"改"。如果设备从来就不支持,"改"这个动作从何而来?

更值得注意的是,部分地区的动作是同时关闭 IPv6。IPv6 本该是绕过 NAT 限制的正道,把它一起关掉,指向性就很明确了:不是技术做不到,是不希望用户拥有稳定的双向连通能力。

"检测到 P2P 就封"这件事

论坛里反复出现的另一个现象:没挂 BT、没跑 P2P 的线路也被改成 NAT4。这说明判定逻辑不是"检测异常流量",而是按批次、按区域统一推送配置。用户对此没有任何知情权、选择权,也没有申诉渠道——客服只会重复"设备不支持"。

一个商业服务,在用户不知情的情况下单方面降低服务质量,并且用一句无法验证的技术说辞作为解释,这在任何行业都很难被称为"服务"。

七、结论

一台 2018 年固件的华为 USG6000V 虚拟镜像,通过「地址池改 full-cone 模式 + 开启端点无关过滤」两条配置,成功实现全锥型 NAT,实测 NAT 类型从 Symmetric 变为 Full Cone。

"设备不支持"不成立。 连模拟器都支持的特性,现网 NE40E/ME60 级别设备没有理由不支持。这个说法从未被任何设备型号、版本号、官方文档证实过。所有的运营商说的不支持都是谎言,运营商就是不想担当修改的时间成本,持续投诉即可。

"全锥型有安全风险"是偷换概念。 NAT 不是安全设备,访问控制属于防火墙策略的职责范围。说实话,靠NAT类型来防范网络攻击有点好笑,你的电话号码、身份信息哪个不是手机App先泄露出去的?

真实原因是成本与管控,不是能力。 端口资源占用、会话表容量、以及对 P2P/自建服务的抑制,才是真正的动机。这些是商业选择,可以讨论,但不该用"技术上做不到"来搪塞。我有明确的家庭宽带使用用途,这就是合理的要求,而且P2P连通性对于微信电话、远程会议有明显的质量提示,流量不需要绕中转站!

八、给被 NAT4 困扰的人

先测准,再投诉。 用支持 CHANGE-REQUEST 的双 IP STUN 服务器测,确认是 Symmetric 之后,投诉时给出具体数据和测试时间。

要公网 IP,而不是要全锥。 家庭宽带申请公网 IPv4,很多地区仍然可行。有公网 IP,NAT 类型的问题直接消失。话术上用"我需要公网 IP 做远程访问/家庭监控",比讲 NAT 类型更容易被受理。申请之前先用 家庭宽带 IPv4/IPv6 公网 IP 检测 确认当前出口到底是不是公网地址,别拿着运营商内网地址去投诉。如果实在不行,比如广东联通明确不改公网IP再投诉NAT类型不达标!

IPv6 是更彻底的路。 当地 IPv6 可用且未被关闭时,直接走 IPv6,端到端可直连。反过来,如果发现 IPv6 被关了,这本身就是可以投诉的点。

换运营商是最后的投票。 不同省份、不同运营商策略差异极大,同一城市三家可能完全不同。

技术手段的边界要说清楚。 NAT 打洞、STUN/TURN 中继、异地组网能在对称型下工作,代价是中继服务器、延迟增加、带宽受限。这些是规避,不是解决。真正的解决只有两条:公网 IP,或者 IPv6。

附录:完整配置速查

STUN 服务器(Rocky Linux)

sysctl -w net.ipv4.conf.all.arp_ignore=1
sysctl -w net.ipv4.conf.all.arp_announce=2

ip route add 192.168.65.0/24 dev ens160 src 192.168.65.152 table 152
ip route add 192.168.65.0/24 dev ens33  src 192.168.65.153 table 153
ip rule add from 192.168.65.152 table 152 priority 100
ip rule add from 192.168.65.153 table 153 priority 101

USG6000V 全锥型 NAT

# 基础网络
interface GigabitEthernet1/0/0
 ip address 192.168.65.12 255.255.255.0
 service-manage ping permit
 quit
interface GigabitEthernet1/0/1
 ip address 192.168.66.12 255.255.255.0
 service-manage ping permit
 quit

firewall zone untrust
 add interface GigabitEthernet1/0/0
 quit
firewall zone trust
 add interface GigabitEthernet1/0/1
 quit

# 地址池:必须是 full-cone 模式,五元组模式不支持
nat address-group full-nat 1
 mode full-cone global
 section 0 192.168.65.211 192.168.65.211
 quit

# 源 NAT
nat-policy
 rule name SNAT_OUT
  source-zone trust
  destination-zone untrust
  source-address 192.168.66.0 mask 255.255.255.0
  action source-nat address-group full-nat 1
  quit
 quit

# 过滤侧:端点无关过滤
firewall endpoint-independent filter enable

# 会话老化 + 清会话
firewall session aging-time udp 120
reset firewall session table

判定逻辑

映射(地址池模式)过滤(endpoint-independent filter)结果
五元组(APDM)任意Symmetric
full-cone / 三元组(EIM)关闭(APDF)Restricted Cone
full-cone / 三元组(EIM)开启(EIF)Full Cone

参考

如果你觉得这篇文章不错,有用的话可以点击下面的“赞赏”支持作者,你的支持是我更新的动力(饿饿吃饭)。

  • reward_image1
  • reward_image2
欢迎来到XiaoZou123,这里是一个电脑极客、数码爱好者网站。我平时喜欢关注数码新闻,研究计算机技术。如果你看我头像觉得我是二次元,那我其实还算不上!
最后更新于 2026-10-20