HCIP-6.2NAT协议原理与配置
HCIP-6.2NAT协议原理与配置
- 1、NAT的工作原理
- 1.1、静态NAT
- 1.2、动态NAT
- 1.3、NAPT(Network Address Port Translation)端口多路复用
- 1.3.1、NAT与NAPT区别
- 2、Easy IP
- 3、NAT服务器
随着Internet的发展和网络应用的增多,IPv4地址枯竭已经成为制约网络发展的瓶颈。尽管IPv6可以从根本上解决IPv4地址空间不足的问题,但目前众多的网络设备和网络应用仍是基于IPv4的,因此在IPv6广泛应用之前,一些过渡技术的使用是解决这个问题的主要技术手段。
网络地址转换技术NAT(Network Address Translation)主要用于实现位于内部网络的主机访问外部网络的功能。当局域网内的主机需要访问外部网络时,通过NAT技术可以将其私网地址转换为公网地址
,并且多个私网用户可以共用一个公网地址
,这样既可保证网络互通,又节省了公网地址。
1、NAT的工作原理
NAT应用场景:
- 企业或家庭所使用的网络为私有网络,使用的是私有地址;运营商维护的网络为公共网络,使用的是公有地址。私有地址不能在公网中路由。
- NAT一般部署在连接内网和外网的网关设备上。
NAT是将IP数据报报头中的IP地址转换为另一个IP地址的过程,主要用于实现内部网络(私有IP地址)访问外部网络(公有IP地址)的功能。NAT一般部署在连接内网和外网的网关设备上。当收到的报文源地址为私网地址、目的地址为公网地址时,NAT可以将源私网地址转换成一个公网地址。这样公网目的地就能够收到报文,并做出响应。此外,网关上还会创建一个NAT映射表,以便判断从公网收到的报文应该发往的私网目的地址。
1.1、静态NAT
NAT的实现方式有多种,适用于不同的场景。
静态NAT实现了私有地址和公有地址的一对一映射。如果希望一台主机优先使用某个关联地址,或者想要外部网络使用一个指定的公网地址访问内部服务器时,可以使用静态NAT。但是在大型网络中,这种一对一的IP地址映射无法缓解公用地址短缺的问题。
- 静态NAT实现了私有地址和公有地址的一对一映射。
- 一个公网IP只会分配给唯一且固定的内网主机。
源地址为192.168.0.2的报文需要发往公网地址200.0.0.1。在网关R1上配置了一个私网地址192.168.0.2到公网地址100.1.1.2的映射。
当网关收到主机A发送的数据包后,会先将报文中的源地址192.168.0.2转换为100.1.1.2,然后转发报文到目的设备。
目的设备回复的报文目的地址是100.1.1.2。当网关收到回复报文后,也会执行静态地址转换,将100.1.1.2转换成192.168.0.2,然后转发报文到主机A。
静态NAT配置
nat static global { global-address} inside {host-address } 命令用于创建静态NAT。
- global参数用于配置外部公网地址。
- inside参数用于配置内部私有地址。
[R1]interface GigabitEthernet0/0/0
[R1-GigabitEthernet0/0/0]ip address 192.168.0.254 24
[R1-GigabitEthernet0/0/0]interface g/0/1
[R1-GigabitEthernet0/0/1]ip address 100.1.1.2 24
[R1-GigabitEthernet0/0/1]nat static global 100.1.1.2 inside 192.168.0.2
[R1]display nat static
Static Nat Information:
Interface : GigabitEthernet0/0/1
Global IP/Port : 100.1.1.2/----
Inside IP/Port : 192.168.0.2/----
1.2、动态NAT
动态NAT基于地址池
来实现私有地址和公有地址的转换。
当内部主机A和主机B需要与公网中的目的主机通信时,网关R1会从配置的公网地址池中选择一个未使用的公网地址与之做映射。每台主机都会分配到地址池中的一个唯一地址。
当不需要此连接时,对应的地址映射将会被删除,公网地址也会被恢复到地址池中待用。当网关收到回复报文后,会根据之前的映射再次进行转换之后转发给对应主机。
动态NAT地址池中的地址用尽以后,只能等待被占用的公用IP被释放后,其他主机才能使用它来访问公网。
NAT技术优缺点:
- NAT能解决不少令人头疼的问题。它解决问题的办法是:在内部网络中使用内部地址,通过NAT把内部地址翻译成合法的IP地址,在Internet上使用。其具体的做法是把IP包内的地址域用合法的IP地址来替换。
- NAT功能通
常被集成到路由器、防火墙、ISDN路由器或者单独的NAT设备中
。NAT设备维护一个状态表,用来把非法的IP地址映射到合法的IP地址上去。每个包在NAT设备中都被翻译成正确的IP地址发往下一级,这意味着给处理器带来了一定的负担。但这对于一般的网络来说是微不足道的,除非是有许多主机的大型网络 - 需要注意的是,NAT并不是一种有安全保证的方案,它不能提供类似防火墙、包过滤、隧道等技术的安全性,仅仅在包的最外层改变IP地址。这使得黑客可以很容易地窃取网络信息,危及网络安全。
动态NAT配置命令:
[R1]nat address-group 1 100.1.1.1 100.1.1.100 //地址组1的NAT地址池1.1到1.100
[R1]acl 2000
[R1-acl-basic-2000]rule 5 permit source 192.168.0.1 0.0.0.255
[R1-acl-basic-2000]q
[R1]gigabitEthernet0/0/1 //出接口
[R1-GigabitEthernet0/0/1]nat outbound 2000 address-group 1 no-pat //Nat关联ACL2000使用地址组1。no-pat表示只转换数据报文的地址而不转换端口信息。
1.3、NAPT(Network Address Port Translation)端口多路复用
则是把内部地址映射到外部网络的一个IP地址的不同端口上。实现私网地址和公网地址的一对多转换。
网络地址端口转换NAPT(Network Address Port Translation)允许多个内部地址映射到同一个公有地址的不同端口
。
R1收到一个私网主机发送的报文,源IP地址是192.168.0.1,源端口号是1025,目的IP地址是200.0.0.1,目的端口是80。
R1会从配置的公网地址池中选择一个空闲的公网IP地址和端口号,并建立相应的NAPT表项。
这些NAPT表项指定了报文的私网IP地址和端口号与公网IP地址和端口号的映射关系。R1将报文的源IP地址和端口号转换成公网地址100.1.1.1和端口号3206,并转发报文到公网。
严格意义上的NAT不会进行端口地址转换,因此并不节省公网IP地址。而通过端口地址转换PAT,能够节省公网IP地址。
1.3.1、NAT与NAPT区别
1、NAT方式的缺点:
1)、内网中有6位用户,但是只在路由器的地址池只配置了3个公网IP地址,那么只有先访问公网的3位用户能够替换到公网地址。由于没有公网地址替换,剩下的用户无法访问公网。
2)、内网的用户能访问公网,而公网用户不能访问内网的用户。
2、享一个公网IP地址访问外网
这时我们改进为共享一个公网IP地址来6个客户端都能访问外网。这时又会产生问题?
建立TCP连接时,需要源地址及其使用的端口。
红色框内为建立的TCP连接的源地址及其使用的端口,蓝色框为TCP连接的目标地址和端口。
内网PC2和PC6访问公网网站时,公网地址100.1.1.1替换了内网IP,数据包可以顺利发出去,等到数据包返回时,内网PC2和PC6都使用了666端口,这时路由器就不知道要把返回数据包转发给谁了。
3、端口替换(PAT)
解决该方法:当内网用户访问公网时,不仅要进行地址替换(NAT)也要进行端口替换(PAT)。
PC2和PC6访问公网网站时,无论源地址和端口是什么都统一替换为路由器分配的地址和端口。
PC2使用地址:100.1.1.1,端口:6521;
PC6使用地址:100.1.1.1,端口:6522。
返回的数据包目标端口为6521,对应的转给PC2;
目标端口为6522,对应的转给用户2。
即使PC2和PC6原来使用的端口号一样路由器也知道该把数据包转给谁。
端口地址转换的好处:
能够大量节省公网IP地址。只需要一个公网IP地址就可以供整个内网的用户使用,内网中配置了公网。
配置:
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip add 192.168.0.254 24
[R1-GigabitEthernet0/0/0]int g0/0/1
[R1-GigabitEthernet0/0/1]ip add 100.1.1.254 24
[R1-GigabitEthernet0/0/1]q
[R1]nat address-group 1 100.1.1.0 100.1.1.10 //创建地址池group1 固定IP
[R1]acl 2000 //创建ACL 2000
[R1-acl-basic-2000]rule permit source 192.168.0.0 0.0.0.255//允许192.168.0.0网段通过
[R1]int g0/0/1
[R1-GigabitEthernet0/0/1]nat outbound 2000 address-group 1 // ip地址转换为固定的公网地址
与NAT的配置区别就在于没有no-pat,no-pat表示只转换数据报文的地址而不转换端口信息。
2、Easy IP
Easy IP 允许将多个内部地址映射到网关出接口地址上的不同端口。
Easy IP 适用于小规模局域网
中的主机访问Internet 的场景。小规模局域网通常部署在小型的网吧或者办公室中,这些地方内部主机不多,出接口可以通过拨号方式获取一个临时公网IP 地址。Easy IP 可以实现内部主机使用这个临时公网IP 地址访问Internet。Easy IP 与NAPT 原理基本相同,不过Easy IP 不需要手动创建地址池。
地址是192.168.0.1,源端口号是1025。R1会建立Easy IP表项,这些表项指定了源IP地址和端口号与出接口的公网IP地址和端口号的映射关系。
根据匹配的Easy IP表项,将报文的源IP地址和端口号转换成出接口的IP地址和端口号,并转发报文到公网。报文的源IP地址转换成100.1.1.1/24,相应的端口号是3206。
路由器收到回复报文后,会根据报文的目的IP地址和端口号,查询Easy IP表项。路由器根据匹配的Easy IP表项,将报文的目的IP地址和端口号转换成私网主机的IP地址和端口号,并转发报文到主机。
常用配置命令:
1、配置外部网口和内部网口的IP地址
2、定义合法IP地址池
由于直接使用外网口IP地址所以不用再定义IP地址池
3、定义访问控制列表
[R1]acl 3000 //允许源地址为192.168.0.0/24网段的数据通过
[R1-acl-adv-3000]rule permit ip source 192.168.0.0 0.0.0.255
4、在外网口.上设置IP地址转换
[R1]int g0/0/1 //外网口
ac13000匹配的源IP数据到达此接口时,转换为该接口的IP地址做为源地址
[R1-GigabitEthernet0/0/1]nat outbound 3000
[R1]display nat session all //查看NAT的流表信息
[RA]display nat outbound
Easy IP的配置与动态NAT的配置类似,需要定义ACL和nat outbound命令,主要区别是Easy IP不需要配置地址池,所以nat outbound命令中不需要配置参数address-group。
3、NAT服务器
通过配置NAT服务器,可以使外网用户访问内网服务器。
NAT在使内网用户访问公网的同时,也屏蔽了公网用户访问私网主机的需求。当一个私网需要向公网用户提供Web和FTP服务时,私网中的服务器必须随时可供公网用户访问。
NAT服务器可以实现这个需求,但是需要配置服务器私网IP地址和端口号转换为公网IP地址和端口号
并发布出去。
路由器在收到一个公网主机的请求报文后,根据报文的目的IP地址和端口号查询地址转换表项
。路由器根据匹配的地址转换表项,将报文的目的IP地址和端口号转换成私网IP地址和端口号,并转发报文到私网中的服务器。
外网主机需要访问私网服务器,发送报文的目的IP地址是100.1.1.1,目的端口号是80。R1收到此报文后会查找地址转换表项,并将目的IP地址转换成192.168.0.1,目的端口号保持不变。
服务器收到报文后会进行响应,R1收到私网服务器发来的响应报文后,根据报文的源IP地址192.168.0.1和端口号80查询地址转换表项。然后,路由器根据匹配的地址转换表项,将报文的源IP地址和端口号转换成公网IP地址100.1.1.1和端口号80,并转发报文到目的公网主机。
服务器静态映射配置:
[R1]interface GigabitEthernet0/0/0
[R1-GigabitEthernet0/0/0]ip address 192.168.0.254 24
[R1-GigabitEthernet0/0/1]interface gigabitEthernet0/0/1
[R1-GigabitEthernet0/0/1]ip address 100.1.1.2 24
[R1-GigabitEthernet0/0/1]nat server protocol tcp global 100.1.1.1 www inside 192.168.0.1 8080
nat server [ protocol {protocol-number | icmp | tcp | udp} global { global-address | current-interface global-port} inside {host-address host-port } vpn-instance vpn-instance-name acl acl-number description description ]
命令用来定义一个内部服务器的映射表,外部用户可以通过公网地址和端口来访问内部服务器。
参数protocol指定一个需要地址转换的协议;
参数global-address指定需要转换的公网地址;
参数inside指定内网服务器的地址。
查看详细的NAT服务器配置结果
[RTA]display nat server
Nat Server Information:
Interface : Serial1/0/0
Global IP/Port : 100.1.1.1/80(www)
Inside IP/Port : 192.168.0.1/8080
Protocol : 6(tcp)