NAT概述
NAT(Network Address Translation,网络地址转换)是1994年提出的。当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法
NAT的工作原理
借助于NAT,私有(保留)地址的"内部"网络通过路由器发送数据包时,私有地址被转换成合法的IP地址,一个局域网只需使用少量IP地址(甚至是1个)即可实现私有地址网络内所有计算机与Internet的通信需求。
NAT实现方式
NAT的实现方式有三种,即静态转换Static Nat、动态转换Dynamic Nat和端口多路复用OverLoad。
静态转换:是指将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,是一成不变的,某个私有IP地址只转换为某个公有IP地址。借助于静态转换,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问。
动态转换:是指将内部网络的私有IP地址转换为公用IP地址时,IP地址是不确定的,是随机的,所有被授权访问上Internet的私有IP地址可随机转换为任何指定的合法IP地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。动态转换可以使用多个合法外部地址集。当ISP提供的合法IP地址略少于网络内部的计算机数量时。可以采用动态转换的方式。
端口多路复用:(Port address Translation,PAT)是指改变外出数据包的源端口并进行端口转换,即端口地址转换(PAT,Port Address Translation).采用端口多路复用方式。内部网络的所有主机均可共享一个合法外部IP地址实现对Internet的访问,从而可以最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自internet的***。因此,目前网络中应用最多的就是端口多路复用方式。
NAT的优缺点
(1)NAT的优点
节省共有合法IP地址
处理地址重叠
增强灵活性
安全性
(2)NAT缺点
延迟增大
配置和维护的复杂性
不支持某些应用,可以通过静态NAT映射来避免
NAT包含四类地址
内部局部地址
外部局部地址
内部全局地址
外部全局地址
NAT的转换条目
简单转换条目
扩展转换条目
静态NAT配置案例
实验拓扑图
1,配置sw二层交换机
SW#conf t
SW(config)#no ip routing //关闭路由功能
SW(config)#int f1/0 //进入端口f1/0
SW(config-if)#speed 100 //配置速率
SW(config-if)#dup full //配置全双工模式
SW(config-if)#ex
2,配置R1路由器
R1#conf t
R1(config)#int f0/0
R1(config-if)#ip add 192.168.100.1 255.255.255.0
R1(config-if)#no shut
R1(config-if)#int f0/1
R1(config-if)#ip add 12.0.0.1 255.255.255.0
R1(config-if)#no shut
R1(config-if)#ex
R1(config)#ip route 0.0.0.0 0.0.0.0 12.0.0.2 ##配置为默认路由
3,配置R2路由器
R2#conf t
R2(config)#int f0/0
R2(config-if)#ip add 12.0.0.2 255.255.255.0
R2(config-if)#no shut
R2(config-if)#int f0/1
R2(config-if)#ip add 13.0.0.1 255.255.255.0
R2(config-if)#no shut
R2(config-if)#ex
R2(config)#ip route 0.0.0.0 0.0.0.0 12.0.0.1 //配置默认路由
4,配置pc机的ip地址并测试全网互通性
配置pc机的ip地址
测试全网互通性
5,在R1上配置NAT,开启debug功能
R1(config)#ip nat inside source static 192.168.100.10 12.0.0.10
R1(config)#ip nat inside source static 192.168.100.20 12.0.0.20
R1(config)#int f0/0
R1(config-if)#ip nat inside //将NAT应用于内部
R1(config)#int f0/1
R1(config-if)#ip nat out //将NAT应用于内部
R1#debug ip nat //测试NAT地址
IP NAT debugging is on
6,测试NAT是否进行了地址转换,查看debug结果
PC1> ping 13.0.0.13
13.0.0.13 icmp_seq=1 timeout
13.0.0.13 icmp_seq=2 timeout
84 bytes from 13.0.0.13 icmp_seq=3 ttl=62 time=41.886 ms
84 bytes from 13.0.0.13 icmp_seq=4 ttl=62 time=38.922 ms
R1#
*Mar 1 00:30:38.259: NAT*: s=192.168.100.10->12.0.0.10, d=13.0.0.13 [1514]
R1#
*Mar 1 00:30:40.259: NAT*: s=192.168.100.10->12.0.0.10, d=13.0.0.13 [1515]
R1#
*Mar 1 00:30:42.263: NAT*: s=192.168.100.10->12.0.0.10, d=13.0.0.13 [1516]
*Mar 1 00:30:42.291: NAT*: s=13.0.0.13, d=12.0.0.10->192.168.100.10 [1516]
R1#
*Mar 1 00:30:43.307: NAT*: s=192.168.100.10->12.0.0.10, d=13.0.0.13 [1517]
*Mar 1 00:30:43.335: NAT*: s=13.0.0.13, d=12.0.0.10->192.168.100.10 [1517]
R1#
*Mar 1 00:30:44.347: NAT*: s=192.168.100.10->12.0.0.10, d=13.0.0.13 [1518]
*Mar 1 00:30:44.379: NAT*: s=13.0.0.13, d=12.0.0.10->192.168.100.10 [1518]
//出方向将源地址s=192.168.100.10转换成12.0.0.10,回方向将
目标地址d=12.0.0.10转换成192.168.100.10
静态NAT端口映射案列
实验拓扑图
实验环境
一台Linux作为提供服务的服务器
一台win7作为公网的客户端
1,打开Linux,安装web服务并且编辑网页内容
[root@192 ~]# yum install httpd -y //安装服务
[root@192 ~]# vim /var/www/html/index.html //编辑测设网页
this is inside web
[root@192 ~]# systemctl start httpd //开启服务
[root@192 ~]# systemctl stop firewalld.service //关闭防火墙
[root@192 ~]# setenforce 0 //关闭增强型安全功能
2,测试访问Linux提供的出来的网站
3,将Linux的网卡绑定为vmnet1(仅主机模式)
4,给Linux服务器固定ip地址
[root@192 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 ##修改固定ip
[root@192 ~]# service network restart ##重启网卡服务
5,配置R1路由器
R1#conf t ##全局模式
R1(config)#int f0/0 ##进入接口
R1(config-if)#ip add 192.168.100.1 255.255.255.0 ##配置网关
R1(config-if)#no shut ##开启
R1(config-if)#ex
R1(config)#int f0/1
R1(config-if)#ip add 12.0.0.1 255.255.255.0
R1(config-if)#no shut
R1(config-if)#ex
6,将win7网卡绑定为vmnet2(仅主机模式),并设定固定ip
7,在R1路由器上配置NAT映射,并开启debug功能
R1#conf t
R1(config)#ip nat inside source static tcp 192.168.100.100 80 12.0.0.100 8080 extendable
//内部端口启用NAT,tcp协议,IP地址加端口,映射外部网地址加端口,后面一定要加个扩展extendable
on Interface NVI0, changed state to up
R1(config)#int f0/0 ##进入接口f0/0
R1(config-if)#ip nat inside //设置为内部
R1(config-if)#int f0/1 ##进入接口f0/1
R1(config-if)#ip nat outside //设置为外部
R1(config-if)#end
R1#debug ip nat //测试启动端口映射
IP NAT debugging is on
8,使用公网win7访问丝网Linux服务器搭建的网站服务
9,debug捕捉端口和地址转换的过程
R1#
*Mar 1 00:09:18.395: NAT*: TCP s=49163, d=8080->80
*Mar 1 00:09:18.395: NAT*: s=12.0.0.12, d=12.0.0.100->192.168.100.100 [119]
//抓取到端口与地址转换的过程,实现NAT端口映射
谢谢阅读!!!