电信级NAT

电信级NAT运营商级NATCarrier-grade NAT,缩写为CGNATCGN),也称大规模NATlarge-scale NAT,缩写LSN),是运营商为了缓解IPv4地址枯竭问题,向客户分配私网IPv4地址而非公网地址,并通过自身的中间件完成的网络地址转换(NAT)操作。[1]电信级NAT可以让更多的终端设备共享一个公共地址。

电信级NAT示意图。

电信级NAT的一种常见应用场景为NAT444。该场景中,客户到公网的访问将经历两次NAT:源地址由客户的私有网段先转换至运营商的私有网段,再转换至运营商的公网IPv4地址。[2]

另一种电信级NAT的场景是双栈精简版(Dual-Stack Lite,也称DS-Lite),其中运营商的网络使用IPv6,因此只需要两个IPv4网段。

共享地址空间

如果运营商使用RFC 1918中的地址作为电信级NAT的地址空间,那么已经使用RFC 1918空间的客户设备将存在与之冲突的风险,原因是如果网络接口的内部地址与外部地址相同,路由和NAT将无法正常工作。

此情况促使一些运营商通过ARIN制定政策,希望为电信级NAT分配新的私有地址空间,但遭到了ARIN的推迟,直到IETF通过了备忘录RFC 2860,明确了分配IP地址的若干细节问题。

IETF之后发布了RFC 6598,详述了为电信级NAT部署使用的共享地址空间。ARIN根据此分配的需求将地址空间返还给了IANA[3]分配的地址块为100.64.0.0/10,即100.64.0.0到100.127.255.255。[4]

优点

  • 最大化利用本已有限的IPv4地址空间。
  • 由于客户的设备不直接存在于公网上,可能在一定程度上有助于保护其免受攻击

缺点

电信级NAT遭受到了如下批评:

  • 与任何形式的NAT一样,电信级NAT违背了端到端原则[5]
  • 由于其有状态英语Stateful的特性,电信级NAT有显著的安全性、可扩展性可靠性问题。
  • 电信级NAT使执法行动查阅变得更加困难,因为需要保留额外的NAT日志。
  • 在电信级NAT下无法运行网络托管服务。
  • 无法对需要公网IPv4地址的业务(如网络托管服务)使用电信级NAT,因而其对解决IPv4地址枯竭问题作用有限。

电信级NAT通常会阻止客户使用端口映射,因为网络地址转换(NAT)通常通过将网络中NAT设备的端口映射到外部接口的其他端口来实现,这样路由器才能将请求映射到到正确的设备。在电信级NAT网络中,即使客户端的路由器已配置端口转发,运营商处运行电信级NAT的主路由器仍将阻止端口转发,因此实际的端口将不是客户配置的端口。[6]为了克服前者的缺点,端口控制协议英语Port Control Protocol(PCP)已在RFC 6887中标准化。

此外,在极少数情况下,可能会遇到IP地址封禁问题。以维基百科为例,系统会封禁破坏者的IP地址。如果该IP地址恰巧为某电信级NAT的出口地址,那么该NAT下的正常用户将同时被封锁。[6]

参见

参考资料

  1. ^ RFC 6264 - An Incremental Carrier-Grade NAT (CGN) for IPv6 Transition. [2016-12-31]. (原始内容存档于2017-01-28). 
  2. ^ NAT444 (CGN/LSN) and What it Breaks. [2016-12-31]. (原始内容存档于2012-05-18). 
  3. ^ Re: shared address space... a reality!. [13 September 2012]. (原始内容存档于2017-02-03). 
  4. ^ 100.64.0.0/10 – Shared Transition Space. [2016-12-31]. (原始内容存档于2012-05-03). 
  5. ^ Assessing the Impact of NAT444 on Network Applications. [2016-12-31]. (原始内容存档于2020-06-02). 
  6. ^ 6.0 6.1 存档副本 (PDF). [2016-12-31]. (原始内容存档 (PDF)于2016-03-04). 

外部链接