NAT技术本身并不难理解,其主要的作用是私网地址和公网地址的转换。但是,在NAT的学习过程中,很容易把NAT的四个地址混淆,并且不知道他们运用的场合。本文就四个地址以及运用的场合进行详细分析。这是一个令多人困惑的问题,如果看了这篇文章,你顿时觉得醍醐灌顶,那还不赶紧打赏。
1:NAT产生原因
众所周知,如果希望自己的电脑可以上网,必须要到运营商(ISP)申请一个账号,这个账号就是你电脑连接上网的公网IP,是全球唯一的。(请注意:事实上,这个公网IP地址是运营商租给你的,当用户不租的时候,ISP会将此IP地址收回,并租给其他用户)。只有申请到了公网IP才可以连接到Internet.但是,IP地址只有32位,全球那么多电脑要上网,并且只能一台主机一个公网IP,显然,IP地址是不够的。对此,从长远的角度,提出了IPV6的解决方案。但是,在IPV4到IPV6的过度期间,必须存在一种技术解决地址短缺的问题,于是出现了NAT技术。
2:NAT作用
NAT完成私有地址和公有地址的转换。
3:NAT应用场合
NAT技术最常用的两种场景是:
第一种:内部网络用户使用私网地址上网
第二种:用户通过公共网络访问内部网络中的设备(例如:服务器)
4:NAT四种地址以及区别
内部本地地址:转换之前内部源地址的地址
内部全局地址:转换之后内部主机的地址
外部本地地址:转换之前目标主机的地址
外部全局地址:转换之后外部目标主机的地址
5:NAT两种适用场合的实验模拟
5.1NAT常用的第一种场合:当内部网络用户通过私用网络上网
请注意本实验中用路由器来模拟PC和Sever
实验配置如下:
PC1的配置为:
PC1#conf t
PC1#no ip routing
PC1#ip default-gateway 192.168.0.1
PC1#int f0/0
PC1#no shu
PC1#ip add 192.168.0.10 255.255.255.0
PC1#no shu
PC1#exit
Sever的配置为:
Sever#conf t
Sever #no ip routing
Sever #ip default-gateway 192.168.0.1
Sever #int f0/0
Sever #no shu
Sever #ip add 192.168.0.20 255.255.255.0
Sever #no shu
Sever #exit
对R1的配置为:
R1(config)#int f0/0
R1(config-if)#no shu
R1(config-if)#ip add 192.168.0.1 255.255.255.0///这里IP地址与PC,Sever的网关地址相同
R1(config-if)#ip nat inside
R1(config-if)#exit
R1(config)#int s1/0
R1(config-if)#no shu
R1(config-if)#ip add 200.10.10.1 255.255.255.0
R1(config-if)#ip nat outside
R1(config-if)#no shu
R1(config-if)#exit
R1(config)#ip nat inside source static 192.168.0.10 200.10.10.30
R1(config)#router ospf 1
R1(config-router)#network 200.10.10.0 0.0.0.255 a
R1(config-router)#network 200.10.10.0 0.0.0.255 area 0
对R2的配置为:
R2#conf t
R2(config)#int s1/0
R2(config-if)#no shu
R2(config-if)#ip add 200.10.10.2 255.255.255.0
R2(config-if)#exit
R2(config)#int e0/1
R2(config-if)#no shu
R2(config-if)#ip add 100.20.20.1 255.255.255.0
R2(config)#router ospf 1
R2(config-router)#network 200.10.10.0 0.0.0.255 area 0
R2(config-router)#network 100.20.20.0 0.0.0.255 area 0
R2(config-router)#exit
对PC2的配置
PC2#conf t
PC2(config)#no ip routing
PC2(config)#ip default-gateway 100.20.20.1
PC2(config)#int e0/0
PC2(config-if)#no shu
PC2(config-if)#ip add 100.20.20.2 255.255.255.0
PC2(config-if)#exit
在上述配置过程中,有一条重点命令:
(1)R1(config)#ip nat inside source static 192.168.0.10200.10.10.30
请注意:
(1)在这里,通过静态配置,我只对PC1的地址进行了转换,Server地址没有转换。
(2)将PC1的私网地址转化为公网地址的时候,地址为200.10.10.30
这里也可以转化为R1的出接口s1/0的地址200.10.10.1,但是会存在当外网访问200.10.10.1的 时候就变成全部访问PC1了。
对实验结果进行分析:
PC1#ping 100.20.20.1
由此看出PC1可以成功的访问外网。
Server#ping 100.20.20.1
由此看出,由于没有对Sever进行地址转换的配置,所以Sever不能访问外网。
如果在R1的上述配置基础上,加如下配置:
R1(config)#ip nat inside source static 192.168.0.20 200.10.10.40
此时验证实验结果:
Server#ping 100.20.20.1
发现Server可以正常访问外网。
在PC1ping200.10.10.2的过程中,查看地址转换过程:
R1#
*Mar1 00:49:42.603: NAT*: s=100.20.20.2, d=200.10.10.30->192.168.0.10[41]
*Mar1 00:49:42.899: NAT*: s=192.168.0.10->200.10.10.30, d=100.20.20.2[42]
由此可以看出,数据包从内网发向外部网络的过程,源地址为192.168.0.10的数据包,在经过具有NAT功能的路由器之后,源地址转换后200.10.10.30;在此过程中目的地址一直保持不变。
R1(config)#do show ip nat tran
此时PC2pingPC1,
由上图实验结果可以看出,当PC2pingPC1的时候,无法ping通。
(这里请思考原因,在后续会有解释)
总结:
(1)由于本实验主要是讲解本地地址和局部地址的区别,所以在NAT配置过程中采用的是最简单的静态配置,当然你也可以采用动态NAT的方式对地址进行转换。
(2)当内网设备访问外网设备的时候,进行的是内部本地地址和内部全局地址的转换
在本实验中,内部本地地址为192.168.0.10和192.168.0.20
内部全局地址为200.10.10.30和200.10.10.40
NAT在此种运行场合中,仅进行的是内部本地地址和北部全局地址的转换。
5.2 NAT常用的第二种场合:外网设备访问内网采用私有地址的设备
当一个处于公共网网络的设备(上图中PC2)想访问一个企业内部的设备(例如:上图中的服务器)的时候,此服务器采用的私有地址(192.168.0.20),由于企业网内部安全的需要,不允许此公网地址(PC2的地址为100.20.20.2)出现在私有内部网络,那么就需要将此公网地址(100.20.20.2)转化为私有地址。那么,这里公网地址PC2的地址(100.20.20.2)就是外部全局地址,PC2经过NAT转换后的私有地址(本实验中是192.168.0.30)就是外部本地地址。
实验拓扑跟上图一样:
实验的配置在上面配置的基础上,在R1上添加如下配置命令:
R1(config)#ip nat outside source static 100.20.20.2 192.168.0.30///
上面这句命令的意思是:将外部全局地址100.20.20.2转化为私有地址192.168.0.30
此时,PC2pingServer发现还是不通。
但是
R1(config)#do show ip nat tran
Pro Insideglobal Inside local Outside local Outside global
192.168.0.30 100.20.20.2
200.10.10.30 192.168.0.10------
200.10.10.40 192.168.0.20------
发现外部全局地址100.20.20.2已经由NAT路由器转换为外部本地地址192.168.0.30.
也就是说NAT已经发挥作用,那么为什么还是无法ping通呢?
外部全局地址100.20.20.2成功的转化为外网局部地址192.168.0.30后,内网本地地址192.168.0.20回应192.168.0.30时,发现内部网络没有192.168.0.30这个地址,也就无法ping通。所以,我认为需要为NAT路由器R1指定一条通过S1/0到达192.168.0.30的路由。添加静态路由如下:
R1(config)#ip route 192.168.0.30 255.255.255.255 s1/0
但是发现指定路由之后,还是无法ping通。(请各位大牛看看,这里 怎么修改才能ping通)
6:总结
关于NAT技术的四种地址的区别已经通过上述常用的两种场合进行详细解析,至于在第二种场合中PC2无法ping通server,请大牛们提供些建议。
网友评论