实验以下图为例:
(1)静态NAT的配置:这里用到的是R1、R2、SW1、PC2
先配置基本信息:
en                       从用户模式进入特权模式
conf t                   从特权模式进入全局配置模式
line con 0               进控制台
logg syn                 设置信息同步,避免影响操作
exec-t 0 0               设置连接超时时间为永不超时
exit
no cdp run               停止CDP运行
no ip domain loo         禁止打错命令进行域名解析
host                     更改设备名称
先配置IP地址:
pc2 的配置:
PC2(config)#no ip routing(模拟器中PC机关闭路由功能)
PC2(config)#ip default-gateway 192.168.0.1(指定网关192.168.0.1)
PC2(config-if)#ip address 192.168.0.22 255.255.255.0
PC2(config-if)#no shutdown
SW1的配置:
SW1(config)#no ip routing(同样模拟器中交换机要关闭路由功能)
SW1(config)#in vlan 1
SW1(config-if)#ip address 192.168.0.2 255.255.255.0
SW1(config-if)#no shutdown
R1上的配置:
R1(config)#in fa 0/0
R1(config-if)#ip address 192.168.0.1 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#in s 1/0
R1(config-if)#ip address 202.106.0.1 255.255.255.0
R1(config-if)#no shutdown
R2上的配置:
R2(config)#in s 1/0
R2(config-if)#ip address 202.106.0.2 255.255.255.0
R2(config-if)#no shutdown
R2(config-if)#in s 1/1
R2(config-if)#ip address 202.106.1.1 255.255.255.0
R2(config-if)#no shutdown
实验的全部地址就是这些了。
我们可以让PC2的192.168.0.22ping下全部地址,发现R2上的两个地址都是ping不通的。
我们做静态NAT的目的就是让它们能通信,也就是在现实环境中能上网的配置。
在R1上做:
R1(config)#in fa 0/0
R1(config-if)#ip nat inside(将这个接口标记为内部接口)
R1(config)#in s 1/0
R1(config-if)#ip nat outside (将这个接口标记为外部接口)
R1(config)#ip nat inside source static 192.168.0.22 202.106.0.3 (将192.168.0.22一对一的转换成202.106.0.3)
这样相当于192.168.0.22ping202.106.0.2的时候,把自己的私有地址转换成了202.106.0.3,所以就能通信了。
当PC2ping202.106.0.2 的时候可以在R1上执行“R1#debug ip nat(慎用)”会得到如下信息:
*Mar  1 00:13:02.387: NAT*: s=192.168.0.22->202.106.0.3, d=202.106.0.2 [35]
*Mar  1 00:13:02.483: NAT*: s=202.106.0.2, d=202.106.0.3->192.168.0.22 [35]
*Mar  1 00:13:02.579: NAT*: s=192.168.0.22->202.106.0.3, d=202.106.0.2 [36]
*Mar  1 00:13:02.611: NAT*: s=202.106.0.2, d=202.106.0.3->192.168.0.22 [36]
*Mar  1 00:13:02.635: NAT*: s=192.168.0.22->202.106.0.3, d=202.106.0.2 [37]
*Mar  1 00:13:02.671: NAT*: s=202.106.0.2, d=202.106.0.3->192.168.0.22 [37]
*Mar  1 00:13:02.679: NAT*: s=192.168.0.22->202.106.0.3, d=202.106.0.2 [38]
*Mar  1 00:13:02.691: NAT*: s=202.106.0.2, d=202.106.0.3->192.168.0.22 [38]
当中就能看出其原理。
(2)配置动态NAT:(多对多)
用到的设备和所配置的地址同上。
下面我们来做动态NAT,也是在R1上做:
R1(config)#in fa 0/0
R1(config-if)#ip nat inside (将这个接口标记为内部接口)
R1(config)#in s 1/0
R1(config-if)#ip nat outside (将这个接口标记为外部接口)
R1(config-if)#exit
R1(config)#access-list 1 permit 192.168.0.0 0.0.0.255(定义标准访问控制列表1只允许定义的地址能够转换)
R1(config)#ip nat pool bjxh 202.106.0.3 202.106.0.22 netmask 255.255.255.0(定义名称为bjxh的地址池)
R1(config)#ip nat inside source list 1 pool bjxh(将访问控制列表定义的地址和地址池关联这样就有前21个内部主机能够得到公有地址。)
做完之后全网就能通信了。
(3)配置PAT(端口地址转换)
配置PAT就是基于动态NAT的配置上加一个“overload”
即:
R1(config)#in fa 0/0
R1(config-if)#ip nat inside
R1(config)#in s 1/0
R1(config-if)#ip nat outside
R1(config-if)#exit
R1(config)#access-list 1 permit 192.168.0.0 0.0.0.255
R1(config)#ip nat pool bjxh 202.106.0.3 202.106.0.22 netmask 255.255.255.0
R1(config)#ip nat inside source list 1 pool bjxh overload(意思就是说这21个地址用完后,路由器重新开始从第一个地址开始复用,并且复用时会加上端口号。)