NAT基础

发布时间 2023-06-01 23:47:48作者: 三万光年

第一个问题,为什么?

为什么存在NAT,设计NAT解决了哪些问题?

场景1. 作为企业内网的用户需要访问公网,但是公有IP地址不够用,如果所有企业的每一台主机都申请一个公有IP,则公有IP很快就会消耗殆尽。局域网私网地址用户访问公网-出方向

场景2. 企业在局域网部署了一台服务器,对外提供如web服务,但是也不可能给每台服务器申请一个公网IP,使得外网用户可以访问局域网的服务器。公网用户访问局域网内私网地址服务器-入方向

NAT解决了上述两种情况的访问问题。

第二个问题,NAT是如何解决上述两个问题的

场景1中,在边界路由器设置NAT转换规则,将客户PC机发送到公网的数据包进行源地址转换,例如PC IP 192.168.10.1 255.255.255.0,

则可以设置转换规则

1. 192.168.10.1转换成113.222.258.41, 这是一对一的地址转换

或者可以设置转换规则如

1. 192.168.10.0/24 转换成113.222.258.41----113.222.258.55,这是多对多的地址转换,动态地址转换

2. 192.168.10.0/24转换成113.222.258.41,这是多对一的转换,端口地址转换PAT,用113.222.258.41的不同端口号来标识192.168.10.0/24中的不同主机

场景2,是通过目的地址转换来实现的,即DNAT,也可以称之为端口映射,暂时不在本文讨论范围内,我们集中在场景1如何解决。

下图为一个实例,ABC三个路由器为内网设备,ISP为公网路由器,172.16.10.0/24位公网网段,路由器A为边界路由器。

在没有NAT的情况下,假设ABC3个路由器之间通过动态路由如BGP等学习到了对方的路由,则路由器C的端口192.168.30.2是有路由可以到达172.16.10.1/24的网段,但是无法ping通。

原因是由于ping包可以到达172.10.10.1,但是ISP路由器没有192.168.30.0/24的路由。

如果有了PAT,则ISP路由器收到的数据包的元IP变成了172.10.16.x, 则ISP会直接将回包发送通往段的A路由器e0/1接口,A再转换回192.168.30.0,而A有到192.168.30.0的路由,则可以ping通。