近期,项目开发任务驱使我需要深入了解NAT网关的核心特性。为此,我搜集了一些网络上的NAT技术干货,并计划通过本公众号逐步推送翻译内容。若对此话题抱有浓厚兴趣,欢迎持续关注我们。当然,读者也可以直接拉至文末,点击“阅读原文”。
当前,电信运营商广泛采纳了网络地址转换(NAT)技术,几乎涵盖所有接入网络类型,唯独排除了有线网络如光纤到户(FTTH)、以太网及DSL服务。
在第三代与长期演进(3G/LTE)网络架构中,大规模NAT(LSN)装置被置于GGSN或P-GW之后,作为核心网络的一部分,此LNS技术也被俗称为“运营商级NAT(CGN)”。
至于Wi-Fi热点场景,NAT功能直接内置于热点接入点(AP),实现了无缝地址转换。
至于居民家庭宽带领域,无论是电信运营商提供的租赁型家用AP,还是用户自主选购的市售产品(例如D-Link DIR系列),NAT均作为标准配置存在,确保了私有IP向公共IP的有效映射。
无论是3G/LTE用户、Wi-Fi热点用户还是家庭无线网络用户,均被分配私有IP地址。当他们访问互联网时,这些私有地址通过NAT转换为公有IP地址,从而实现对外通信。
NAT技术为电信运营商带来的优势包括:
1. 公有IP地址的高效利用:通过NAT,多个设备的私有IP地址被映射到单一公有IP下,实现互联网访问时的地址共享,极大减少了公有IP的需求量。
2. 强化网络安全屏障:在3G/LTE网络配置大规模NAT(LSN),能有效阻隔外部对移动设备及网络的直接侵袭。企业也能借由私有地址配置(类比防火墙机制),构建起防御外界威胁的坚固防线。
接续此话题,我将依据关键规范RFC 3022(传统NAT概述)与RFC 2663(IP NAT术语与考量要点),进一步阐述NAT相关的专业术语,以便深入理解。
关键术语解析
传输端口(Transport Ports, TU Ports):TCP与UDP的报文头中均含源端口和目的端口字段,统称为“传输标识符”。在TCP或UDP通信中,目标端口多采用IANA规定的知名端口号(0-1023)或已注册端口号(1024-49191),遵照RFC 1700,例如,HTTP默认使用的TCP端口为80。源端口则是操作系统动态选取的一个高范围值(大约30,000至60,000之间),这类端口被标记为“临时端口”。想深入了解,请参考[维基百科关于临时端口的条目](http://en.wikipedia.org/wiki/Ephemeral_port)。
公共/全局/外部网络:这是指由IANA分配具有全球唯一IP地址的网络,能够跨不同电信运营商网络进行全球路由,通称为“公共IP网络”。
私有/本地网络:这类网络使用IANA未正式分配的IP地址空间,无法直接在互联网上路由,通常被称作“私有IP网络”。IANA为此预设了三组私有地址段:
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
会话(Session):在数据传输管理中,会话是指作为整体处理的一系列通信,通过源IP、源端口、目的IP和目的端口四元组唯一标识每一个TCP/UDP会话。
应用层网关(Application Level Gateway, ALG):鉴于部分应用程序的数据负载中嵌入了IP地址或端口信息,一些NAT设备集成了ALG功能。ALG能识别并转换负载中的这类信息,使NAT具备对应用层面的洞察力。常见支持的应用包括FTP、SIP、RTSP等。然而,鉴于新应用层出不穷,全面覆盖所有应用的ALG支持难以实现,因此配备ALG的NAT设备并不广泛。
网络地址转换(NAT)简述
网络地址转换(NAT)是一种技术手段,负责将私有IP地址与公共IP地址相互转换,从而使私有网络中的设备能够与公共网络(互联网)进行通信。
在传统的NAT应用中,大多情况下,局域网内的主机能够透明地访问外部网络的资源。这种经典的NAT配置下,会话通常是单向的,即从私有网络向外发起。对于反方向的通信需求,即外部网络尝试访问私网内部特定主机的情况,则可以通过为这些预选的主机设置静态地址映射,作为特例来允许这样的双向会话。(参考RFC 3022)
长久以来,NAT设备的主要用途是连接两个不同的地址空间:一个是使用未注册私有地址的隔离网络环境,另一个则是拥有全球唯一注册地址的外部网络环境,以此实现两者之间的通信桥梁作用。(参考RFC 2663)
在RFC 3022和RFC 2663中定义了两种类型的NAT:基本NAT和网络地址端口转换(NAPT)。尽管两者统称为“传统NAT”,NAPT因能有效节俭IPv4地址,已成为当下主流。因此,日常提及NAT时,多半指向NAPT。目前,所有接入点(AP)均已支持NAPT类型的运作模式。
基本网络地址转换(Basic NAT)是一种透明于终端用户的转换方式,它将一个IP地址组映射到另一个IP地址组。也称作静态转换Static Nat。IP地址对是一对一的,是一成不变的,某个私有IP地址只转换为某个公有IP地址。
网络地址端口转换(NAPT)则是一种更复杂的转换方法,能够将多个网络地址及其关联的TCP/UDP端口,转换为单一的公共网络地址及其对应的TCP/UDP端口。
这两种操作结合,即所谓的“传统NAT”,共同提供了一种机制,使得使用私有地址的内部网络领域能够与拥有全球唯一注册地址的外部网络领域相连接。(引自RFC 3022)
静态NAT
定义和目的 :出于安全目的(如防火墙),企业网络中采用基本 NAT。它提供 IP 地址的一对一转换。这意味着需要与具有私有IP地址的设备相同数量的公共IP地址来访问互联网。
翻译规则 :1:1 转换(1 = 公共 IP,1 = 私有 IP)
映射关系:出站流量:将私有源IP 地址转换为公共源IP 地址;入站流量:将公共目标 IP 地址转换为私有目标 IP 地址。
数据包修改 :以下数据包信息在翻译过程中被替换: 出站流量:源 IP 地址、IP 标头校验和。入站流量:目标 IP 地址、IP 标头校验和。
会话中的三个翻译阶段
网络地址端口转换(NAPT)
定义和目的:NAPT用于保存公共IP地址。它提供 IP 地址的多对一转换。这意味着当多个具有私有IP地址的用户设备访问互联网时,将使用一个公共IP地址。
翻译规则 :1:N 转换(1 = 公共 IP,N = 私有 IP)
映射关系:
数据包修改 :以下数据包信息在翻译过程中被替换:
会话中的三个翻译阶段
参考资料: 1、https://www.rfc-editor.org/rfc/rfc3022 2、https://www.rfc-editor.org/rfc/rfc2663 3、https://www.h3c.com/cn /d_202305/1840921_30005_0.htm#_Toc133616990
本文分享自 DPDK VPP源码分析 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!