
NAT
背景
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地址短缺而开发的技术。
作用
宽带分享:这是 NAT 主机的最大功能。
安全防护:外网无法获悉内网地址,保证内网安全性
原理
通过在出口路由上做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地址,从而实现与外部网络的连接。