实验目的:

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来说,更适合一般企业的应用。此实验完成。