NAT出现背景
话不多说大家应该很清楚NAT出现是因为IPv4在设计之初没有考虑到网络发展的如此迅猛以至于32位的地址容量迅速面临枯竭,为了寻求解决方案。一方面IPv6技术问世,另外一方面NAT技术出现。但是NAT的出现使得IPv4地址面临枯竭的状态得到了非常有效的缓解,让IPv4依然是当今网络环境的主流技术。而IPv6至今也因为易用性和IPv4地址枯竭问题的遏制等等很多原因导致没有好的实施。(IPv6依然是未来)
NAT类型
静态NAT
静态NAT就是把本地局域网IP地址和外部公网IP地址一对一的映射,该映射关系不存在时效性,不能动态变更
动态NAT
动态NAT就是把本地局域网IP地址和外部公网地址池中的某个地址进行一对一的映射,与静态NAT最大的不同点在于,该映射关系存在时效性,会随着应用和时间不断更改映射关系
静态PAT
静态PAT与静态NAT非常相似,也是一对一映射关系,映射关系不存在时效性,但是最大的不同在于端口参数的介于,只是把本地局域网IP和端口与公网IP地址和端口进行了一对一的映射,这样一个公网地址可以映射出65535+65535(TCP+UDP)个局域网设备
动态PAT
动态PAT和动态NAT与静态PAT和静态NAT的关系类似,在动态PAT中局域网IP与端口会和公网地址与端口产生一对一的映射关系,但是映射关系存在时效性,IP和端口的接口也让多个局域网地址可以共同使用一个公网地址进行常规网络活动
IOS中NAT的配置
实验拓扑
image
基础配置:
Client-1: Client-1(config)#inter f0/0 Client-1(config-if)#ip add 192.168.2.2 255.255.255.0 Client-1(config-if)#no shut Client-1(config)#ip route 0.0.0.0 0.0.0.0 192.168.2.1 Client-1(config)#username test privilege 15 password test Client-1(config)#line vty 0 15 Client-1(config-line)#login local Client-2: Client-2(config)#inter f0/0 Client-2(config-if)#ip add 192.168.2.3 255.255.255.0 Client-2(config-if)#no shut Client-2(config)#ip route 0.0.0.0 0.0.0.0 192.168.2.1 Client-2(config)#username test privilege 15 password test Client-2(config)#line vty 0 15 Client-2(config-line)#login local GW-WAN: GW-WAN(config)#inter f0/0 GW-WAN(config-if)#ip add 192.168.2.1 255.255.255.0 GW-WAN(config-if)#ip nat inside GW-WAN(config-if)#no shut GW-WAN(config-if)#inter f0/1 GW-WAN(config-if)#ip add 200.1.1.2 255.255.255.0 GW-WAN(config-if)#ip nat outside GW-WAN(config-if)#no shut GW-WAN(config)#ip route 0.0.0.0 0.0.0.0 200.1.1.1 Internet: Internet(config)#inter f0/0 Internet(config-if)#ip add 200.1.1.1 255.255.255.0 Internet(config-if)#no shut Internet(config-if)#inter f0/1 Internet(config-if)#ip add 100.1.1.1 255.255.255.0 Internet(config-if)#no shut Server: Server(config)#inter f0/0 Server(config-if)#ip add 100.1.1.100 255.255.255.0 Server(config-if)#no shut Server(config)#ip route 0.0.0.0 0.0.0.0 100.1.1.1 Server(config)#username test priv 15 password test Server(config)#line vty 0 15 Server(config-line)#login local
静态NAT
#配置 GW-WAN(config)#ip nat inside source static 192.168.2.2 200.1.1.3 GW-WAN(config)#ip nat inside source static 192.168.2.3 200.1.1.4 #测试 Server: Server#telnet 200.1.1.3 Trying 200.1.1.3 ... Open User Access Verification Username: test Password: Client-1#exit [Connection to 200.1.1.3 closed by foreign host] Server#telnet 200.1.1.4 Trying 200.1.1.4 ... Open User Access Verification Username: test Password: Client-2#exit [Connection to 200.1.1.4 closed by foreign host]
动态NAT
#配置 GW-WAN(config)#ip access-list extended client GW-WAN(config-ext-nacl)#permit ip host 192.168.2.2 any GW-WAN(config-ext-nacl)#permit ip host 192.168.2.3 any GW-WAN(config)#ip nat pool Nat 200.1.1.5 200.1.1.6 netmask 255.255.255.252 GW-WAN(config)#ip nat inside source list client pool Nat #测试 Client-1: Client-1#ping 100.1.1.100 repeat 100 Client-2: Client-2#ping 100.1.1.100 repeat 100 GW-WAN: GW-WAN#show ip nat translations Pro Inside global Inside local Outside local Outside global --- 200.1.1.5 192.168.2.2 --- --- --- 200.1.1.6 192.168.2.3 --- --- Server: Server#debug ip icmp *Mar 1 00:58:37.799: ICMP: echo reply sent, src 100.1.1.100, dst 200.1.1.5 *Mar 1 00:58:37.799: ICMP: echo reply sent, src 100.1.1.100, dst 200.1.1.6
静态PAT
#配置 GW-WAN(config)#ip nat inside source static tcp 192.168.2.2 23 200.1.1.3 1025 GW-WAN(config)#ip nat inside source static tcp 192.168.2.3 23 200.1.1.3 1026 GW-WAN(config)#inter f0/0 GW-WAN(config-if)#ip nat inside GW-WAN(config-if)#inter f0/1 GW-WAN(config-if)#ip nat outside #测试 Server: Server#telnet 200.1.1.3 1025 Trying 200.1.1.3, 1025 ... Open User Access Verification Username: test Password: Client-1#exit [Connection to 200.1.1.3 closed by foreign host] Server#telnet 200.1.1.3 1026 Trying 200.1.1.3, 1026 ... Open User Access Verification Username: test Password: Client-2#exit
动态PAT
配置: GW-WAN(config)#ip access-list extended client GW-WAN(config-ext-nacl)#permit ip host 192.168.2.2 any GW-WAN(config-ext-nacl)#permit ip host 192.168.2.3 any GW-WAN(config)#ip nat inside source list client interface f0/1 overload #测试 Client-1: Client-1#ping 100.1.1.100 repeat 100 Client-2: Client-2#ping 100.1.1.100 repeat 100 GW-WAN: GW-WAN# show ip nat translations Pro Inside global Inside local Outside local Outside global icmp 200.1.1.2:2 192.168.2.2:2 100.1.1.100:2 100.1.1.100:2 icmp 200.1.1.2:0 192.168.2.3:2 100.1.1.100:2 100.1.1.100:0 Server: Server#debug ip icmp *Mar 1 00:56:48.427: ICMP: echo reply sent, src 100.1.1.100, dst 200.1.1.2 *Mar 1 00:56:48.471: ICMP: echo reply sent, src 100.1.1.100, dst 200.1.1.2
相信大家都注意到了在配置NAT的时候命令会有inside、outside、destination、source、enable参数,下篇将会详细介绍这些参数的含义