背景

IPv4——网际网协议第4版(Internet Protocol Version 4)定义一个跨越异种网络互连的超级网,为每个网际网的节点分配全球唯一IP地址。

IPv4使用32bits整数表达一个地址,地址最大范围就是232约为43亿

以IP创始时期可被联网的设备来看,这样的一个空间已经很大,很难被短时间用完。

然而,事实远远超出人们的设想,计算机网络在此后的几十年里迅速壮大,网络终端数量呈爆炸性增长。

2011年2月3日,IANA宣布:IPv4地址空间最后5个地址块已经被分配给下属的5个地区委员会。

2011年4月15日,亚太区委员会APNIC对外宣布,除了个别保留地址外,本区域所有的IPv4地址基本耗尽。

一时之间,IPv4地址作为一种濒危资源身价陡增。

因此必须考虑IPv4的替代方案,同时采取措施来减缓IPv4地址的消耗。 并且到现在IPv6也还未全部普及,甚至有些设备还未支持IPv6地址,为了解决这个问题——NAT诞生。

定义

NAT(Network Address Translation)网络地址转换

1994年提出。NAT是用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术。

NAT实际上是为解决IPv4地址短缺而开发的技术。

作用

  1. 宽带分享:这是 NAT 主机的最大功能。

  2. 安全防护:外网无法获悉内网地址,保证内网安全性

原理

通过在出口路由上做NAT,使内网访问外网通过出口路由时,源地址会转换成特定公有地址,并且将两个ip映射关系加到NAT映射表上。

在外网向内网通信时,目的地址还是特定公有地址,但是到达出口路由器后,查看NAT映射表,从而转换为私有地址。

NAT分类

静态NAT(基本淘汰)

私有地址与公有地址关系:一对一

每个私有地址与一个共有地址一一对应。

[R1-GigabitEthernet0/0/1]nat static global 122.1.2.1 inside 192.168.1.1
[R1-GigabitEthernet0/0/1]nat static global 122.1.2.2 inside 192.168.1.2
[R1-GigabitEthernet0/0/1]nat static global 122.1.2.3 inside 192.168.1.3

动态NAT

私有地址与公有地址关系:多对多

通过使用地址池的方式,将需要使用的共有地址加入到地址池内,地址池内的地址未使用标记为Not Use,使用的标识为In Use,每次转换都会使用标记为Not Use的地址。

缺点:私有地址和公有地址在理论上还是属于一对一关系,地址利用率不高。

[R1]nat address-group 1 122.1.2.1 122.1.2.3          #创建地址池包括122.1.2.1 122.1.2.3地址
[R1]acl 2000
[R1-acl-basic-2000]rule 5 permit source 192.168.1.0 0.0.0.255      #匹配192.168.1.0网段的地址
[R1-acl-basic-2000]quit
[R1]interface GigabitEthernet0/0/1
[R1-GigabitEthernet0/0/1]nat outbound 2000 address-group 1 no-pat      #在出方向进行地址转换

NAPT/Easy-IP

NAPT(Network Address and Port Translation,网络地址端口转换):从地址池中选择地址进行地址转换时不仅转换IP地址,同时也会对端口号进行转换,从而实现公有地址与私有地址的1:n映射,可以有效提高公有地址利用率。

与动态NAT配置基本相同,不同之处在于配置出口nat时使用 pat。

Easy IP:实现原理和NAPT相同,同时转换IP地址、传输层端口,区别在于Easy IP没有地址池的概念,使用接口地址作为NAT转换的公有地址。

[R1]acl 2000
[R1-acl-basic-2000]rule 5 permit source 192.168.1.0 0.0.0.255
[R1-acl-basic-2000]quit
[R1]interface GigabitEthernet0/0/1
[R1-GigabitEthernet0/0/1]nat outbound 2000

NAT Server

指定[公有地址:端口]与[私有地址:端口]的一对一映射关系,将内网服务器映射到公网,当私有网络中的服务器需要对公网提供服务时使用。

外网主机主动访问[公有地址:端口]实现对内网服务器的访问。


有一个项目,环境是这样的,一台设备,设了管理ip,通过家用路由器,电脑连上wifi可以管理该设备。

电脑属于内网,开启了ftp,设备属于外网,如何使用设备访问电脑的ftp呢。

答案就是做NAT Server。 当时在家用路由器上做了一个NAT Server,绑定了固定的端口,然后设备就可以ftp上我的电脑了。

#将内网服务器192.168.1.10的8080端口映射到公有地址122.1.2.1的80端口。

[R1-GigabitEthernet0/0/1]nat server protocol tcp global 122.1.2.1 www inside 192.168.1.10 8080


面试真题

docker容器怎么和外部网络通信?

Docker容器通常通过宿主机的网络接口与外部网络进行通信。

当容器需要与外部网络通信时,宿主机上的NAT软件会将容器的内部IP地址转换为公共IP地址,从而实现与外部网络的连接。


参考文章

https://blog.csdn.net/qq_50927871/article/details/139452772https://baike.baidu.com/item/nat/320024https://blog.csdn.net/hqs2212586/article/details/103527296