网络(十二)之NAT的原理及配置命令

NAT的原理及配置命令

续上篇的ACL,本篇我们就讲一些目前营运商常用的地址转换协议–NAT,这也是缓冲IP地址不足的,所诞生的协议。

NAT的概念

AT(Network Address Translation,网络地址转换)是1994年提出的。当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。
这种方法需要在专用网连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。
另外,这种通过使用少量的公有IP 地址代表较多的私有IP 地址的方式,将有助于减缓可用的IP地址空间的枯竭。
我们知道,私有地址和公有地址之间是不能够通信的,那我们在访问公有地址的时候(比如说访问百度),就需要将我们的私有地址转换为公有IP地址,这样才能正常的访问互联网。而这种转换的访问就叫做NAT。而NAT的方法有也三种访问方法。

NAT的三种实现方法

静态转换Static Nat:
是指将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,是一成不变的,某个私有IP地址只转换为某个公有IP地址。借助于静态转换,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问。
动态转换Dynamic Nat:
是指将内部网络的私有IP地址转换为公用IP地址时,IP地址是不确定的,是随机的,所有被授权访问上Internet的私有IP地址可随机转换为任何指定的合法IP地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。动态转换可以使用多个合法外部地址集。当ISP提供的合法IP地址略少于网络内部的计算机数量时。可以采用动态转换的方式。
端口多路复用(Port address Translation,PAT)OverLoad:
是指改变外出数据包的源端口并进行端口转换,即端口地址转换(PAT,Port Address Translation).采用端口多路复用方式。内部网络的所有主机均可共享一个合法外部IP地址实现对Internet的访问,从而可以最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自internet的攻击。因此,目前网络中应用最多的就是端口多路复用方式。

NAT三种实现配置命令

静态地址转换:
R1(config)#ip nat inside source static 192.168.1.1 202.100.1.100 //静态的把192.168.1.1转换成202.100.1.100
R1(config)#interface f0/0
R1(config-if)#ip nat inside //定义接口所属区域
R1(config)#interface f0/1
R1(config-if)#ip nat outside //定义接口所属区域
R1#show ip nat translations //查看NAT转换表。

动态地址转换:
R1(config)#ip access-list standard nat //定义标准ACL
R1(config-std-nacl)#permit 192.168.1.0 0.0.0.255 //抓取需要转换前的地址
R1(config)#ip nat pool ccie 202.100.1.100 202.100.1.101 netmask 255.255.255.0 //定义转换后的地址或者地址池
R1(config)#ip nat inside source list nat pool ccie //关联转换前和转换后的地址。
R1(config)#interface f0/0
R1(config-if)#ip nat inside //定义接口所属区域
R1(config)#interface f0/1
R1(config-if)#ip nat outside //定义接口所属区域

PAT地址转换:
R1(config)#ip access-list standard nat //定义标准ACL
R1(config-std-nacl)#permit 192.168.1.0 0.0.0.255 //抓取需要转换前的地址
R1(config)#ip nat pool ccie 202.100.1.100 202.100.1.101 netmask 255.255.255.0 //定义转换后的地址
R1(config)#ip nat inside source list nat pool ccie overload //关联转换前和转换后的地址。并启用复用机制,
R1(config)#interface f0/0
R1(config-if)#ip nat inside //定义接口所属区域
R1(config)#interface f0/1
R1(config-if)#ip nat outside //定义接口所属区域
R1(config)#ip nat inside source list nat interface FastEthernet0/1 overload //最节约地址的方式,使用公网接口上的IP做地址转换。

NAT的端口映射

如果使用静态NAT去转换服务器。这时,服务器相当于完全裸露在网络中,也就是说,除了你想提供的服务以外,其他主机还可以对这台服务器进行其他的网络访问,为了隐藏真实的端口,提高安全性,可以使用NAT的端口映射技术,把想要提供服务的端口单独的映射出去。
R1(config)#ip nat inside source static tcp 172.16.1.100 80 202.100.2.100 8080 //把172.16.1.100的 tcp 80端口(Http)服务器,映射成202.100.2.100 端口号为8080.这样,只要访问202.100.2.100 8080就相当于访问172.16.1.100 80。

NAT实现实例

在这里插入图片描述
拓扑设计要素:R3除了配置IP地址,不配置路由协议。R1R2配置一条默认路由指向R3。确保内网的主机无法访问到对端的路由器。即PC0无法访问R2。
要求:
内网A做静态NAT,使得PC0可以正常的访问R2。
内网B做动态NAT,使得PC2可以正常访问R1。

实例配置命令

R1:
R1(config)#ip nat inside source static 192.168.1.2 13.1.1.1
R1(config)#interface f0/0
R1(config-if)#ip nat inside
R1(config)#interface f0/1
R1(config-if)#ip nat outside

R2:
R2(config)#ip access-list standard nat
R2(config-std-nacl)#permit 172.16.1.0 0.0.0.255
R2(config)#ip nat pool ccie 23.1.1.10 23.1.1.11 netmask 255.255.255.0 /
R2(config)#ip nat inside source list nat pool ccie
R2(config)#interface f0/0
R2(config-if)#ip nat inside
R2(config)#interface f0/1
R2(config-if)#ip nat outside

实例查看与分析

配置完成,先来看PC0访问R2,成功访问。
在这里插入图片描述
再来看PC2访问R1,也成功访问。
在这里插入图片描述
分析:
对于静态来说,地址转换一对一,以内网A来说,私有地址192.16.1.2转换为公网IP13.1.1.1.这样可以正常的访问公网了。但是PC1就访问不了,理由是没转换地址。
对于动态地址来说,地址虽然也是一对一,但是有个释放的时间。以内网B为例,这里我们做了公网IP地址池23.1.1.10 和 23.1.1.11.那么这里172.16.1.0网段就可以访问网络了,如PC2与服务器都可以访问公网。但是有个局限,那就是我们这里只有2个公网IP,那么同一时间也只能容忍两台PC访问。所以这里在加一台PC访问的话,是无法访问网络的,只能等他们释放出来,别的PC才能访问。可以通过下面这条命令来查看是否释放出来了。
R1#show ip nat translations //查看NAT转换表。

扫描二维码关注公众号,回复: 9401445 查看本文章

最后

NAT转换目前还是IPV4的情况下,还是广为使用的,比如动态NAT,用1千个公网IP来给1万人使用。毕竟这1万个人里不可能同时上网吧。当然,这里只是简单的提一下,具体实施办法还得根据实际情况分析设计。上面的实例这里只将到静态和动态的。至于PAT的实现也是差不多的道理,可以根据 上面的命令配置即可。PAT的话是可以实现一个公网IP给整个网段使用,但是一般情况下十几台PC就差不多了,毕竟端口是有限的。多的话也不能正常的访问了。
最后,感谢观看。

发布了21 篇原创文章 · 获赞 0 · 访问量 935

猜你喜欢

转载自blog.csdn.net/Stephen_jj/article/details/104499104