作者做实验用的是EVE-NG模拟器,相关的请参考:EVE-NG干货
其中VPC1~VPC3模拟普通电脑,交换机S1用做二层交换机汇聚VPC1~VPC2的流量,nat操作在路由器R1上进行。交换机S1使用的镜像为IOL L2-ADVENTERPRISE-M-15.1-20140814.bin,路由器R1使用的镜像为i86bi-linux-l3-adventerprisek9-12.4.bin
配置VPC的IP地址和网关
VPC1:
VPCS> ip 192.168.1.11/24 192.168.1.1
Checking for duplicate address...
PC1 : 192.168.1.11 255.255.255.0 gateway 192.168.1.1
VPC2:
VPCS> ip 192.168.1.12/24 192.168.1.1
Checking for duplicate address...
PC1 : 192.168.1.12 255.255.255.0 gateway 192.168.1.1
VPC3:
VPCS> ip 100.100.100.100/24
Checking for duplicate address...
PC1 : 100.100.100.100 255.255.255.0
配置交换机,汇聚VPC1~VPC2的流量
交换机S1
Switch>en
Switch#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#hostname S1
S1(config)#vlan 10
S1(config-vlan)#exi
S1(config)#int e0/0
S1(config-if)#switchport mode access
S1(config-if)#switchport access vlan 10
S1(config-if)#no shutdown
S1(config-if)#end
S1(config)#int e0/1
S1(config-if)#switchport mode access
S1(config-if)#switchport access vlan 10
S1(config-if)#no shutdown
S1(config-if)#end
S1(config)#int e0/2
S1(config-if)#switchport mode access
S1(config-if)#switchport access vlan 10
S1(config-if)#no shutdown
S1(config-if)#end
在路由器上配置NAT规则
路由器R1
Router>en
Router#configure terminal
Router(config)#hostname R1
配置nat服务和地址池
R1(config)#ip nat pool wlsyahz 100.100.100.11 100.100.100.20 netmask 255.255.255.0
配置将192.168.1.0/24网段的地址转换为地址池里的地址
R1(config)#ip nat inside source list 1 pool wlsyahz
R1(config)#access-list 1 permit 192.168.1.0 0.0.0.255
在入端口和出端口上启动nat转换
R1(config)#interface e0/0
R1(config-if)#ip nat inside
R1(config-if)#exit
R1(config)#interface e0/1
R1(config-if)#ip nat outside
R1(config-if)#end
配置端口0和端口1的ip地址
R1(config)#int ethernet 0/0
R1(config-if)#ip address 192.168.1.1 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#int ethernet 0/1
R1(config-if)#ip address 100.100.100.1 255.255.255.0
R1(config-if)#no shutdown
配置完成后我们在R1上使能ip nat debug
R1#debug ip nat
然后从VPC1上ping VPC3
VPCS> ping 100.100.100.100
84 bytes from 100.100.100.100 icmp_seq=1 ttl=63 time=1.073 ms
84 bytes from 100.100.100.100 icmp_seq=2 ttl=63 time=1.079 ms
84 bytes from 100.100.100.100 icmp_seq=3 ttl=63 time=1.072 ms
84 bytes from 100.100.100.100 icmp_seq=4 ttl=63 time=0.552 ms
84 bytes from 100.100.100.100 icmp_seq=5 ttl=63 time=1.071 ms
这时会在R1上会看到VPC1的源地址被转换成了100.100.10.11
*Dec 8 04:43:49.953: NAT*: s=192.168.1.11->100.100.100.11, d=100.100.100.100 [32645]
*Dec 8 04:43:49.953: NAT*: s=100.100.100.100, d=100.100.100.11->192.168.1.11 [32645]
*Dec 8 04:43:50.954: NAT*: s=192.168.1.11->100.100.100.11, d=100.100.100.100 [32646]
*Dec 8 04:43:50.955: NAT*: s=100.100.100.100, d=100.100.100.11->192.168.1.11 [32646]
在R1的0/1口抓包如下
在R1的0/0口抓包如下
从VPC2上ping VPC3,原理相同
VPCS> ping 100.100.100.100
84 bytes from 100.100.100.100 icmp_seq=1 ttl=63 time=0.643 ms
84 bytes from 100.100.100.100 icmp_seq=2 ttl=63 time=0.992 ms
84 bytes from 100.100.100.100 icmp_seq=3 ttl=63 time=0.909 ms
84 bytes from 100.100.100.100 icmp_seq=4 ttl=63 time=0.792 ms
84 bytes from 100.100.100.100 icmp_seq=5 ttl=63 time=1.886 ms
*Dec 8 05:03:43.960: NAT*: s=192.168.1.12->100.100.100.12, d=100.100.100.100 [33839]
*Dec 8 05:03:43.960: NAT*: s=100.100.100.100, d=100.100.100.12->192.168.1.12 [33839]
*Dec 8 05:03:44.962: NAT*: s=192.168.1.12->100.100.100.12, d=100.100.100.100 [33840]
*Dec 8 05:03:44.963: NAT*: s=100.100.100.100, d=100.100.100.12->192.168.1.12 [33840]