为什么会引入NAT?
NAT(网络地址转换)的引入主要是为了解决两个问题
- IPv4地址短缺:互联网快速发展,可用的公网IP地址越来越少。
- 网络安全:需要一种方法来保护内部网络不被直接暴露在互联网上。
IPv4 & IPv6
IPv4使用32位地址,理论上可以提供约43亿个唯一地址。
a) 私有地址范围:
10.0.0.0 到 10.255.255.255 (10/8 前缀)
172.16.0.0 到 172.31.255.255 (172.16/12 前缀)
192.168.0.0 到 192.168.255.255 (192.168/16 前缀)
b) 回环地址:127.0.0.0 到 127.255.255.255
IPv6使用128位地址,提供了一个极其庞大的地址空间,约340万亿亿亿亿个地址。IPv6的地址空间如此之大,以至于即使给地球上的每一粒沙子分配一个IPv6地址,也只会用掉很小一部分地址空间。
为什么不能引入IPv6来解决IP不够用?
IPv6的引入是为了从根本上解决IPv4地址短缺的问题。然而,尽管IPv6已经存在多年,但它并没有完全取代IPv4
因为IPv6的全面部署是一个缓慢的过程。网络设备、操作系统、应用程序都需要更新以支持IPv6。这个过程耗时很长,且成本较高。
虽然IPv6最终会解决地址短缺问题,但在完全过渡期间,NAT仍然扮演着重要角色:
- 它允许组织在现有IPv4基础设施上继续运营。
- 提供了IPv4到IPv6过渡的缓冲时间。
- 在混合环境中,帮助IPv4和IPv6网络互相通信。
总之,虽然IPv6是长期解决方案,但NAT在当前和可预见的未来仍然非常重要,它为向IPv6的平滑过渡提供了必要的支持。/
NAT是什么?
网络地址转换 (NAT) 是一种将 IP 地址空间映射到另一个 IP 地址空间的方法,方法是在数据包通过流量路由设备传输数据包时修改数据包的 IP 标头中的网络地址信息。但无法路由网络的地址空间。面对 IPv4 地址耗尽,它已成为节省全局地址空间的流行且必不可少的工具。NAT 网关的一个 Internet 可路由 IP 地址可用于整个专用网络。
NAT就像是一个翻译官,负责在内部网络和外部网络之间转换IP地址。想象一下,NAT是一个办公室的前台接待:
- 当内部员工(内网设备)需要与外界通信时,前台会用公司的地址(公网IP)代替员工的个人地址(内网IP)。
- 当外部人员(互联网)想要联系公司内部时,前台会将请求转发给相应的员工(内网设备)。
NAT可以干什么?
NAT有几个重要的功能:
a) 节省IP地址:允许多台内网设备共享一个公网IP地址。
b) 增强安全性:隐藏内部网络结构,减少直接攻击的可能。
c) 简化网络管理:可以更灵活地管理内部网络,而不影响外部通信。
d) 实现负载均衡:可以将incoming的流量分配到不同的内部服务器。
总的来说,NAT就像是网络世界的一个智能门卫,它既能帮助解决地址短缺的问题,又能提高网络的安全性和灵活性。
NAT mapping vs NAT filtering
NAT Mapping(NAT映射)
NAT mapping 定义了内部网络地址和端口如何映射到外部网络地址和端口。
主要类型包括:
a) Static (静态映射):
- 一对一映射,内部IP总是映射到同一个外部IP。
- 例如:内部IP 192.168.1.10 永远映射到外部IP 203.0.113.5。
b) Dynamic (动态映射):
- 从一个IP池中动态分配外部IP。
- 例如:内部IP可能在不同时间映射到不同的外部IP。
c) Port Address Translation (PAT):
- 多个内部IP共享一个外部IP,通过修改端口号来区分不同的连接。
- 这是最常见的形式,也称为NAT overload。
NAT Filtering(NAT过滤)
NAT filtering 决定了如何处理进入内部网络的数据包,主要关注安全性。
主要类型包括:
a) Endpoint-Independent Filtering:
- 只要内部主机已经发起了连接,就允许任何外部主机向内部主机发送数据包。
- 最宽松的过滤方式。
b) Address-Dependent Filtering:
- 只允许内部主机曾经通信过的外部IP地址发送数据包回内部网络。
- 提供了一定程度的安全性。
c) Address and Port-Dependent Filtering:
- 最严格的过滤方式。
- 只允许内部主机曾经通信过的特定外部IP和端口组合发送数据包回内部网络。
- NAT Mapping:
- Static: 固定的一对一映射
- Dynamic: 动态分配外部IP
- PAT (Port Address Translation): 多个内部IP共享一个外部IP,通过端口区分
- NAT Filtering:
- Endpoint-Independent: 允许任何外部主机发送数据包
- Address-Dependent: 只允许已知IP地址发送数据包
- Address and Port-Dependent: 只允许已知IP和端口组合发送数据包
主要区别
NAT 的类型
NAT可以分为三种类型:Source NAT、Destination NAT和Bidirectional NAT。具体取决于数据包的源或目标的IP地址是否被转换,这些是NAT(网络地址转换)的不同实现方式。
总结:
- SNAT主要用于内网访问外网。如:员工A(IP:192.168.1.15)想要访问 www.example.com(IP:93.184.216.34)
- DNAT主要用于外网访问内网特定服务。如:外部用户想访问公司的网站 www.mycompany.com(指向203.0.113.10)
- BiNAT用于解决复杂网络环境中的地址冲突。如:公司A的员工(IP:192.168.1.10)需要访问公司B的服务器(IP:192.168.1.20)
Source NAT (SNAT)
- 定义:修改数据包的源IP地址。
- 主要用途:允许私有网络中的设备访问互联网。
- 工作原理:
- 当内部设备发送数据包到外网时,SNAT将源IP地址从私有IP改为公网IP。
- 返回的数据包会自动被转换回原始的私有IP地址。
- 优点:隐藏了内部网络结构,提高安全性。
示例:内网PC(192.168.1.10)访问网站时,路由器将源地址改为其公网IP(203.0.113.1)。
Destination NAT (DNAT)
- 定义:修改数据包的目标IP地址。
- 主要用途:允许外部网络访问内部网络中的特定服务。
- 工作原理:
- incoming数据包的目标地址从公网IP改为内网IP。
- 对应的回复数据包会自动被转换回公网IP。
- 优点:可以在不暴露整个内网的情况下,提供特定的内部服务。
示例:外部请求访问Web服务器时,路由器将目标地址从公网IP(203.0.113.1:80)改为内网服务器IP(192.168.1.100:80)。
Bidirectional NAT (BiNAT)
目的: BiNAT主要用于连接两个使用重叠IP地址空间的网络,例如两个都使用192.168.1.x私有地址范围的公司网络。
BiNAT的主要优点是:
- 允许有重叠IP地址的网络进行通信
- 适用于网络合并或VPN连接的场景
- 提供了额外的安全层,因为外部网络无法直接看到内部网络结构
工作原理:在两个使用重叠IP地址空间的网络之间进行通信,同时执行源NAT和目标NAT。
- 数据流向:对outgoing流量执行SNAT,对incoming流量执行DNAT。
- 从网络A到网络B:
- 源IP被转换(类似SNAT)
- 目标IP被转换(类似DNAT)
- 从网络B到网络A:
- 同样进行源IP和目标IP的双向转换
- 从网络A到网络B:
Bidirectional NAT的工作原理示例:
示例:两个使用相同私有IP范围(如192.168.1.x)的公司网络需要合并或通过VPN连接时
- 数据从网络A(192.168.1.10)发送到网络B(192.168.1.20)。
- 当数据包经过BiNAT设备时:
- 源IP从192.168.1.10转换为10.0.0.1
- 目标IP从192.168.1.20转换为10.0.0.2
- 当数据包进入网络B时:
- 源IP从10.0.0.1转换为临时分配的IP 192.168.1.200
- 目标IP从10.0.0.2转换回原始的192.168.1.20
这个过程允许两个使用相同私有IP地址范围的网络进行通信,同时避免了地址冲突。返回的数据包会经历相反的转换过程。
- SRC(Source)指的是数据包的发送方或起始点的IP地址。
- DST(Destination)指的是数据包的接收方或目标的IP地址。
NAT 的实现类型
- 静态NAT:一对一的固定映射。
- 动态NAT:从IP池中动态分配地址。
- PAT/NAPT:多个内部IP共享一个公网IP,通过端口区分。
1. 静态NAT(Static NAT)
- 定义:一对一的固定映射,内部IP地址与外部IP地址永久对应。
- 用途:通常用于需要从外网访问的内部服务器。
- 优点:配置简单,易于管理。
- 缺点:需要为每个内部主机分配一个公网IP,不节省IP地址。
2. 动态NAT(Dynamic NAT)
- 定义:从一个公网IP地址池中动态分配地址给内部主机。
- 用途:适用于内部主机数量少于公网IP数量的情况。
- 优点:比静态NAT更灵活,可以在多个内部主机间共享公网IP。
- 缺点:仍然需要相当数量的公网IP,可能在高峰时段耗尽IP池。
3. NAPT (网络地址端口转换)
- 定义:NAPT不仅转换IP地址,还转换端口号。它允许多个内网设备共享同一个公网IP地址,通过不同的端口号来区分不同的连接。
- 用途:最常见的NAT实现,广泛用于家庭和小型办公室网络。
- 优点:极大地节省公网IP地址,一个公网IP可以服务成百上千的内部主机。
- 缺点:可能在某些应用程序中造成兼容性问题,特别是那些依赖特定端口的应用。
- 3.1 对称NAT
- 为每个内部连接创建一个唯一的外部映射。即使是相同的内部IP:端口对,如果目标不同,外部映射也会不同。
- 完全锥形:一旦内部地址(iAddr:iPort)映射到外部地址(eAddr:ePort),所有发自iAddr:iPort的包都经由eAddr:ePort向外发送。任何外部主机都可以通过向eAddr:ePort发送包到达iAddr:iPort。
- 受限锥形:类似于完全锥形,但仅允许iAddr:iPort之前发送过数据的外部主机通过eAddr:ePort到达iAddr:iPort。
- 端口受限锥形:比受限锥形更严格,仅允许iAddr:iPort之前发送过数据的特定外部主机:端口组合通过eAddr:ePort到达iAddr:iPort。
补充说明
- 基础NAT主要关注IP地址的转换,而NAPT则同时处理IP地址和端口号的转换。
- 锥形NAT通常更有利于P2P应用和某些网络游戏,因为它们允许特定类型的入站连接。
- 对称NAT提供了最高级别的安全性,但可能会影响某些应用程序的正常运行,尤其是那些依赖入站连接的应用。
NAT Server
- NAT服务器的作用: NAT服务器位于内部网络和外部网络(互联网)之间,负责转换IP地址和端口号,使得内部网络的设备能够与外部网络通信。
- 地址转换:
- 内部服务器的IP是192.168.1.2(私有IP地址)
- 外部访问者使用7.7.7.7(公网IP地址)来访问内部服务器
- 端口映射:
- 外部访问者使用端口3535
- 内部服务器实际使用端口80(通常是Web服务)
- 服务器映射表(Server Mapping Table):
- 显示了NAT如何将外部请求映射到内部服务器
- 对于任何源IP(S-IP: Any),从外部1.1.1.10:80来的TCP请求会被转发到内部的192.168.1.2:80
- 会话表(Session Table):
- 记录了当前活跃的连接
- 显示从7.7.7.7:3535来的TCP连接被映射到1.1.1.10:80,然后再转发到内部的192.168.1.2:80
- 双向通信: NAT服务器通过维护这些映射关系,确保了内外网络之间的双向通信可以正常进行。
这个NAT配置允许外部用户通过公网IP和特定端口访问内部的Web服务器,同时保护了内部网络的结构和真实IP地址。这是端口转发的一个典型应用,常用于允许外部访问内部托管的服务,如网站、游戏服务器等。
NAT实现的应用
如:智能家居系统,远程办公访问,多人游戏主机服务器,个人博客网站
Port forwarding
端口转发:端口转发是 NAT 的一种实现,当数据包通过网络网关(如路由器或防火墙)时,它将通信请求从一个地址和端口号组合转发到另一个地址和端口号组合。此技术最常用于使在专用网络上的主机上运行的应用程序服务可供公用网络(如 Internet)上的主机使用。正如设备需要 IP 才能在网络中被识别一样,设备上运行的服务(如 SMTP 或 FTP)也需要被识别以启用外部通信。端口号有助于识别这些服务,端口转发是使服务可供公共网络上的主机使用的技术。每当服务需要通信时,端口号都有助于识别设备上的正确目标/源,并有助于进行适当的数据传输
例子:IT支持远程访问
- 远程员工通过互联网发起VPN连接到公司的公网IP(203.0.113.1)和VPN端口(1194)。
- 公司路由器接收到VPN请求,使用NAT和端口转发。
- 路由器将VPN流量转发到内部网络的VPN服务器(192.168.1.10:1194)。
- 建立VPN连接后,远程员工可以安全地访问内部资源,如文件服务器。
参考
https://en.wikipedia.org/wiki/Network_address_translation#Implementation
What Is NAT? What Are the NAT Types? | FS Community
https://www.comparitech.com/net-admin/network-address-translation-overloading/