5.7 端口NAT
实验目的:
1、掌握端口NAT的基本编写。
2、理解端口NAT的基本特性。
实验拓扑:
实验步骤:
1、依据图中拓扑,配置各个路由器的IP地址,并部署静态和默认路由,配置如下:
R1上
R1(config)# ip route 0.0.0.0 0.0.0.0 12.1.1.2
R2上
R2(config)#ip route 192.168.1.0 255.255.255.0 12.1.1.1
R2(config)#ip route 192.168.2.0 255.255.255.0 12.1.1.1
R2(config)#ip route 0.0.0.0 0.0.0.0 100.1.23.3
测试连通性,如下:
R2#ping 8.8.8.8
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 8.8.8.8, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 28/33/44 ms
R1#ping 8.8.8.8 source 192.168.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 8.8.8.8, timeout is 2 seconds:
Packet sent with a source address of 192.168.1.1
.....
Success rate is 0 percent (0/5)
可以看到,边缘路由器可以访问互联网,但是内网无法访问互联网。因为互联网路由器没有到内网的私有路由,一般需要部署NAT技术,将内网地址转换成公网地址,才能实现通信。
2、在R2上部署端口NAT,使得内网所有设备可以访问外网,配置如下:
①定义内网流量和公网地址池
R2(config)#access-list 1 permit 192.168.1.0 0.0.0.255
R2(config)#access-list 2 permit 192.168.2.0 0.0.0.255
R2(config)#ip nat pool PAT 100.1.23.100 100.1.23.101 netmask 255.255.255.0
②定义内外接口
R2(config)#int f0/0
R2(config-if)#ip nat inside
R2(config-if)#exit
R2(config)#int f1/0
R2(config-if)#ip nat outside
R2(config-if)#exit
③执行端口NAT
R2(config)#ip nat inside source list 1 pool PAT overload
3、测试端口NAT,如下:
在R2上调试NAT进程
R2#debug ip nat
在R1上访问互联网
R1#ping 8.8.8.8 source 192.168.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 8.8.8.8, timeout is 2 seconds:
Packet sent with a source address of 192.168.1.1
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 60/77/124 ms
R1#ping 8.8.8.8 source 192.168.2.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 8.8.8.8, timeout is 2 seconds:
Packet sent with a source address of 192.168.2.1
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 60/69/76 ms
从上面可以看到内网已经能够访问外网。
在R2上查看NAT调试信息
R2#
*Mar 1 01:06:13.027: NAT*: s=192.168.1.1->100.1.23.100, d=8.8.8.8 [30]
*Mar 1 01:06:13.083: NAT*: s=8.8.8.8, d=100.1.23.100->192.168.1.1 [30]
*Mar 1 01:06:13.119: NAT*: s=192.168.1.1->100.1.23.100, d=8.8.8.8 [31]
*Mar 1 01:06:13.163: NAT*: s=8.8.8.8, d=100.1.23.100->192.168.1.1 [31]
*Mar 1 01:06:13.195: NAT*: s=192.168.1.1->100.1.23.100, d=8.8.8.8 [32]
*Mar 1 01:06:13.223: NAT*: s=8.8.8.8, d=100.1.23.100->192.168.1.1 [32]
*Mar 1 01:06:13.255: NAT*: s=192.168.1.1->100.1.23.100, d=8.8.8.8 [33]
*Mar 1 01:06:13.287: NAT*: s=8.8.8.8, d=100.1.23.100->192.168.1.1 [33]
*Mar 1 01:06:13.319: NAT*: s=192.168.1.1->100.1.23.100, d=8.8.8.8 [34]
*Mar 1 01:06:13.351: NAT*: s=8.8.8.8, d=100.1.23.100->192.168.1.1 [34]
*Mar 1 01:06:15.131: NAT*: s=192.168.2.1->100.1.23.100, d=8.8.8.8 [35]
*Mar 1 01:06:15.163: NAT*: s=8.8.8.8, d=100.1.23.100->192.168.2.1 [35]
*Mar 1 01:06:15.207: NAT*: s=192.168.2.1->100.1.23.100, d=8.8.8.8 [36]
*Mar 1 01:06:15.255: NAT*: s=8.8.8.8, d=100.1.23.100->192.168.2.1 [36]
*Mar 1 01:06:15.303: NAT*: s=192.168.2.1->100.1.23.100, d=8.8.8.8 [37]
*Mar 1 01:06:15.335: NAT*: s=8.8.8.8, d=100.1.23.100->192.168.2.1 [37]
*Mar 1 01:06:15.367: NAT*: s=192.168.2.1->100.1.23.100, d=8.8.8.8 [38]
*Mar 1 01:06:15.399: NAT*: s=8.8.8.8, d=100.1.23.100->192.168.2.1 [38]
*Mar 1 01:06:15.427: NAT*: s=192.168.2.1->100.1.23.100, d=8.8.8.8 [39]
*Mar 1 01:06:15.459: NAT*: s=8.8.8.8, d=100.1.23.100->192.168.2.1 [39]
查看R2上NAT转换表
R2#show ip nat translations
Pro Inside global Inside local Outside local Outside global
icmp 100.1.23.100:6 192.168.1.1:6 8.8.8.8:6 8.8.8.8:6
icmp 100.1.23.100:7 192.168.2.1:7 8.8.8.8:7 8.8.8.8:7
从上面可以看到,当采用端口复用技术时,多个内网地址被映射到同一个公网地址上,实现多对一映射。当有多个公网地址时,需要采用地址池方式进行地址复用,若公网地址只有一个例如出接口地址时,则只需调用出接口进行地址复用。
4、通过接口部署端口NAT,配置如下:
①定义内网流量
R2(config)#access-list 1 permit 192.168.1.0 0.0.0.255
R2(config)#access-list 2 permit 192.168.2.0 0.0.0.255
②定义内外接口
R2(config)#int f0/0
R2(config-if)#ip nat inside
R2(config-if)#exit
R2(config)#int f1/0
R2(config-if)#ip nat outside
R2(config-if)#exit
③执行端口NAT
R2(config)#ip nat inside source list 1 interface f1/0 overload
在R1上访问互联网
R1#ping 8.8.8.8 source 192.168.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 8.8.8.8, timeout is 2 seconds:
Packet sent with a source address of 192.168.1.1
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 60/77/124 ms
R1#ping 8.8.8.8 source 192.168.2.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 8.8.8.8, timeout is 2 seconds:
Packet sent with a source address of 192.168.2.1
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 60/69/76 ms
在R2上查看NAT转换表
R2#show ip nat translations
Pro Inside global Inside local Outside local Outside global
icmp 100.1.23.2:8 192.168.1.1:8 8.8.8.8:8 8.8.8.8:8
icmp 100.1.23.2:9 192.168.2.1:9 8.8.8.8:9 8.8.8.8:9
此时,多个内网地址被映射到同一个公网出口地址。通过以上实验可以看到,不管是采用地址池还是接口进行地址复用,都可以实现少对多甚至一对多的映射,这样的话,在公网地址不足的情况下便可以很好的节省地址资源,相比动态NAT来说,更适合一般企业的应用。此实验完成。
==========================================
PingingLab・高品质IT教育提供商
CCIE 实验室・IT项目实战・高端人才定制
深圳拼客信息科技有限公司・广州大学城外环西路站
新浪微博:@拼客科技PingingLab @PingingLab-陈鑫杰
PingingLab微信公众号:pinginglab
PingingLab技术交流群:240920680