NAT(网络地址转换)
一、 概念
1、
NAT
是为了解决IP V4地址被日益消耗而出现的一个技术,在所有的CCNA技术当中,我个人觉得NAT是我们最常用的一种技术
2、
NAT
的分类:
NAT
可以分为三类:静态NAT、动态NAT和NAT复用
Ø
静态NAT:一个单一的公网IP地址对映一个单一的私有地址,或者一个单一的公网IP地址对应一个单一的私有IP地址的多个不同的端口
Ø
动态NAT:一组公网IP地址对应一组私有IP地址(一般用于两个合并公司之间互访)
Ø
NAT
复用:这也是NAT赖以成名的一个技术,多个私有IP地址对应一个单一的公网IP地址
3、
NAT
的配置命令
Ø
首先第一步,定义NAT的入口和出口
In f0/1
Ip nat inside
Exit
In s0/0/0
Ip nat outside
Exit
Ø
接下来,配置每一种NAT,他们的命令是大同小异
l
静态NAT
Ip nat inside source static 192.168.1.1 10.0.0.10
(将192.168.1.1NAT到10.0.0.10)
Ip nat inside source static 192.168.1.1 interface serial 0
(当不知道serial0端口的IP时,比如serial0端口的IP是自动获取,那么可以用serial 0这个端口来代替IP地址)
Ip nat inside source static tcp 192.168.1.1 80 10.0.0.10 80
(将192.168.1.1的80端口NAT到10.0.0.10的80端口上)
l
动态NAT
Ip nat pool test1 10.0.0.10 prefix-length 24
(定义一个需要互相NAT地址池)
Ip nat pool test2 20.0.0.10 prefix-length 24
Access-list 10 permit 192.168.1.0 0.0.0.255
(建立访问列表)
Access-list 20 permit 192.168.2.0 0.0.0.255
Ip nat inside source list 10 pool test1
(设置NAT)
或ip nat outside source list 20 pool test2
最后的意思就是:将访问表10中定义的内部地址转换成网络2的NAT池中定义的地址
l
NAT
复用
Access-list 10 permit 192.168.1.0 0.0.0.255
Ip nat inside source list 10 interface serial0 overload
Ip nat inside source list 10 pool test overload
(当内部全局地址只允许用公网IP时不允许用端口代替时,此时需要先将公网IP地址建立一个地址池)
Ø
最后,如果要想检验所配置的NAT,可以用命令
Show ip nat statistics
Show ip nat translations
Debug ip nat
二、 实验
环境:现在这两家合作公司之间各有一个路由器R1和R2,两个路由器用的是背靠背连接,每个公司各有一个公网IP,其中R2所在的公司有一台邮件服务器,它的IP是192.168.2.10
要求:两个公司的员工都可以上网,并且要保证外面的人可以访问邮件服务器
先配置R1:
Router>enable
Router#config ter
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#hostname R1
R1(config)#no ip domain-lookup
R1(config)#line con 0
R1(config-line)#no exec-timeout 0 0
R1(config-line)#logging synchronous
R1(config-line)#exit
R1(config)#in s0/0/0
R1(config-if)#ip address 202.96.209.133 255.255.255.0
R1(config-if)#clock rate 64000
R1(config-if)#no shutdown
%LINK-5-CHANGED: Interface Serial0/0/0, changed state to down
R1(config-if)#exit
R1(config)#in f0/1
R1(config-if)#ip address 192.168.1.1 255.255.255.0
R1(config-if)#no shutdown
%LINK-5-CHANGED: Interface FastEthernet0/1, changed state to upR1(config-if)#
R1(config-if)#exit
R1(config)#ip dhcp pool xinyu
R1(dhcp-config)#network 192.168.1.0 255.255.255.0
R1(dhcp-config)#default-route 192.168.1.1
R1(dhcp-config)#exit
R1(config)#access-list 10 permit 192.168.1.0 0.0.0.255
R1(config)#in f0/1
R1(config-if)#ip nat inside
R1(config-if)#exit
R1(config)#in s0/0/0
R1(config-if)#ip nat outside
R1(config-if)#exit
R1(config)#ip nat inside source list 10 interface serial0/0/0 overload
接下来,配置R2
Router>
Router>enable
Router#config ter
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#no ip domain-lookup
Router(config)#line con 0
Router(config-line)#no exec-timeout 0 0
Router(config-line)#logging syn
Router(config-line)#exit
Router(config)#hostname R2
R2(config)#in s0/0/0
R2(config-if)#ip address 202.96.209.134 255.255.255.0
R2(config-if)#no shutdown
%LINK-5-CHANGED: Interface Serial0/0/0, changed state to down
R2(config-if)#exit
R2(config)#in f0/1
R2(config-if)#ip address 192.168.2.1 255.255.255.0
R2(config-if)#no shutdown
%LINK-5-CHANGED: Interface FastEthernet0/1, changed state to upR2(config-if)#
R2(config-if)#exit
R2(config)#ip dhcp pool xinyu1
R2(dhcp-config)#network 192.168.2.0 255.255.255.0
R2(dhcp-config)#default-route 192.168.2.1
R2(dhcp-config)#dns-server 1.1.1.1
R2(dhcp-config)#exit
R2(config)#ip access-list standard xinyu10
R2(config-std-nacl)#permit 192.168.2.0 0.0.0.255
R2(config-std-nacl)#exit
R2(config)#in f0/1
R2(config-if)#ip nat inside
R2(config-if)#exit
R2(config)#in s0/0/0
R2(config-if)#ip nat outside
R2(config-if)#exit
R2(config)#ip nat inside source list xinyu10 interface s0/0/0 overload
R2(config)#ip nat inside source static tcp 192.168.2.10 110 202.96.209.134 110
R2(config)#ip nat inside source static tcp 192.168.2.10 25 202.96.209.134 25
R2(config)#
最后,用两个局域网的PC机互相ping一下对方的路由器的s0/0/0上端口的公网IP,发现是可以ping通的,并且在用任意一台机器访问一下
http://202.96.209.134:110
或http://202.96.209.134:25,发现是都可以通的
此时,在分别在两台路由器上运行一下show ip nat translations