当前位置: 首页 > article >正文

网络地址转换(NAT)和端口映射

1. 网络地址转换(NAT)

1.1 NAT的应用场景

(1)应用场景:允许将私有IP地址映射到公网地址,以减缓IP地址空间的消耗

  ①需要连接Internet,但主机没有公网IP地址

  ②更换了一个新的ISP,需要重新组织网络时,可使用NAT转换

  ③需要合并两个具有相同网络地址的内网

(2)NAT的优缺点

优点

缺点

①节约合法的公网IP地址

②减少地址重叠现象

③增加连接Internet的灵活性

④增加内网的安全性

①地址转换产生交换延迟,也就是消耗路由器性能。

②无法进行端到端的IP跟踪

③某些应用无法在NAT的网络中运行

1.2 NAT的类型

(1)静态NAT

  指将内部网络的私有IP地址转换为公有IP地址IP地址对是一对一的,即两个地址的映射关系己绑定死了。某个私有IP地址只转换为某个公有IP地址,借助于静态转换,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问

(2)动态NAT

  ①指将内部网络的私有IP地址转换为公用IP地址时,IP地址对是不确定的,而是随机的。所有被授权访问上Internet的私有IP地址可随机转换为任何指定的合法IP地址池中一个IP地址。如果地址池的IP地址做映射用完了,剩余的内网计算机将不能再访问外网(本质上,也是一对一的关系,只不过这种关系是动态绑定的!)。

  ②当要与外界进行通信的内部节点,如果还没有建立转换映射,边缘路由器将会动态的从公网IP地址池中选择IP对内部地址进行转化。每个转换条目在连接建立时动态建立,而在连接终止时会被回收因此,外网的计算机不能访问内网的计算机(因为映射关系是内网计算机发起且连接终止时就回收了!)

  ③动态NAT,一般用在当内部网络中只有少数节点与外界建立连接的场合时,因为只有少数的内部地址需要被转化成全局地址,可以减少对合法地址的需求。

(3)PAT

  ①这是最流行的NAT配置类型,实际上是动态NAT的一种形式,它映射多个私有网IP地址到一个公网IP地址,通过使用不同的端口来区分内网主机,被称为端口地址转换(PAT,Port Address Translation)。(见后面实验部分的分析,怎么用端口区分内网主机?)

  ②使用PAT时,internet的主机无法访问内网主机。如果需要这种访问,则需要做端口映射(注意,端口映射和端口地址转换PAT是两个概念PAT是使得多个内网主机可以通过一个公网IP同时访问Internet,而端口映射则可以让internet主机访问内网主机!见后面《端口映射》的内容

2. 实现网络地址转换

2.1 配置静态NAT

(1)网络拓扑

映射关系:PCx(10.0.0.y)映射到131.107.0.y;

(2)静态NAT映射数据包转换过程

 

  ①PC0访问Internet的Server,数据包经CPE路由器,根据配置的静态映射,数据包的源地址被131.107.0.2地址替换

  ②Server向131.107.0.2发送返回的数据包,在进入内网时,根据静态映射表,将会使用PC0的IP地址替换数据包的目标地址(10.0.0.2)。

(3)在CPE路由器上配置静态映射表

复制代码

//1. 静态NAT
Router#conf t
Router(config)#access-list 12 permit 192.168.1.0 0.0.0.255 //定义ACL,只允许192.168.1.0/24网段
Router(config)#line vty 0 15  //进入VTY虚接口,0和15分别表示起始和结束的vty的0-15号接口。
Router(config-line)#access-class 12 in  //将编号为12的ACL绑定到vty
Router(config-line)#

CPE#conf t
CPE(config)#ip nat inside source static 10.0.0.2 131.107.0.2
CPE(config)#ip nat inside source static 10.0.0.3 131.107.0.3
CPE(config)#ip nat inside source static 10.0.0.4 131.107.0.4
CPE(config)#ip nat inside source static 10.0.0.5 131.107.0.5
CPE(config)#ip nat inside source static 10.0.0.6 131.107.0.6
CPE(config)#interface fastEthernet 0/1
CPE(config-if)#ip nat inside                //指定该接口为NAT的内部端口
CPE(config-if)#ex
CPE(config)#interface serial 0/0
CPE(config-if)#ip nat outside               //指定该接口为NAT的外网端口
CPE(config-if)#ex
CPE(config)#exit
CPE#debug ip nat                            //让路由器显示NAT信息

复制代码

(4)验证:PCO主机ping 202.99.160.2,同时观察CPE路由器显示的NAT信息(要事先debug ip NAT开启这个功能!)。同时,由于配置了静态映射,外网的计算机可能通过访问131.107.0.6直接访问内网的WebServer的网站。

2.2 配置动态NAT

(1)网络拓扑

(2)在路由器上配置动态NAT

复制代码

//1. 在CPE路由器上配置动态NAT
CPE>en
CPE#config t
//定义ACL,如果内网有多个网段需要NAT,则需要在ACL都添加上
CPE(config)#access-list 10 permit 10.0.0.0 0.0.0.255
//指定公网地址池:名称为mypool,起始和结束地址以及子网掩码
CPE(config)#ip nat pool mypool 131.107.0.1 131.107.0.3 netmask 255.255.255.0
//将公网地址池与ACL绑定
CPE(config)#ip nat inside source list 10 pool mypool
CPE(config)#interface serial 0/0
CPE(config-if)#ip nat outside    //指定S0/0为NAT的外网接口
CPE(config-if)#ex
CPE(config)#interface fastEthernet 0/1
CPE(config-if)#ip nat inside     //指定f0/1为NAT的内网接口
CPE(config-if)#exit
CPE(config)#exit

//2. 在路由器上查看NAT配置状态
CPE#show ip nat statistics 

//3. 查看NAT地址转换信息(要先从内网ping外网主机)
CPE#show ip nat translations

//4. 清转转换表中的NAT条目
CPE#clear ip nat translations *

复制代码

(3)验证:让pc0、pc1、pc2、pc3四台计算机同时ping 202.99.160.2。(只有3台能ping通,因为地址池只有3个公网IP可被拿来映射!)

2.3 配置PAT

(1)网络拓扑图(与前面例相同)

(2)端口地址转换(PAT):源端口的替换

  ①假设PC0和PC1都是使用1723端口访问外网的Server。如果数据包只做地址转换(即端口不转换)那么返回的数据目标地址都是131.107.0.1,目标端口都是1723路由器就没有办法确定这个数据包应发送给PC0还是PC1

  ②如果使用一个公网IP地址让很多内网计算机访问Internet,必须由路由器对访问Internet的数据包进行统一的源端口替换,将源端口替换成不同的端口出去(如4000、4001),这样路由器就可以根据返回的数据包目标端口确定数据包应该转发给哪一个内网计算机,这就是端口地址转换的原理

(3)在路由器上配置PAT

复制代码

//1. 在CPE路由器上配置PAT
CPE>en
CPE#config t
//将内网需要PAT出去的网段添加到ACL中
CPE(config)#access-list 10 permit 10.0.0.0 0.0.0.255
//添加公网IP地址池(名称为mypool,前后IP一样,即只有一个公网IP)。
CPE(config)#ip nat pool mypool 131.107.0.1 131.107.0.1 netmask 255.255.255.0
//将公网地址池与ACL绑定(注意overload参数会启用PAT)
CPE(config)#ip nat inside source list 10 pool mypool overload
CPE(config)#interface serial 0/0
CPE(config-if)#ip nat outside    //指定NAT的外网接口
CPE(config-if)#ex
CPE(config)#interface fastEthernet 0/1
CPE(config-if)#ip nat inside     //指定NAT的内网接口
CPE(config-if)#ex
CPE(config)#ex
CPE#show ip nat statistics     //查看NAT配置状态
Total translations: 0 (0 static, 0 dynamic, 0 extended)
Outside Interfaces: Serial0/0
Inside Interfaces: FastEthernet0/1
Hits: 0  Misses: 0
Expired translations: 0
Dynamic mappings:
-- Inside Source
access-list 10 pool mypool refCount 0
 pool mypool: netmask 255.255.255.0
       start 131.107.0.1 end 131.107.0.1
       type generic, total addresses 1 , allocated 0 (0%), misses 0
CPE#

复制代码

(4)验证:使用内网中的任何一台主机都可以ping通internet上的server。

2.4 配置端口映射

(1)PAT存在的的问题通过配置PAT,只能实现内网主机使用公网IP地址访问internet,但internet的主机无法访问内网主机(如内网的WebServer),这时可以通过端口映射来解决这一问题

(2)网络拓扑图

(3)在路由器上配置端口映射

复制代码

//1. 在CPE路由器上配置端口映射
CPE>en
CPE#conf t
//静态端口映射
CPE(config)#ip nat inside source static tcp 10.0.0.5 80 131.107.0.1 80
CPE(config)#ip nat inside source static tcp 10.0.0.6 80 131.107.0.1 81
CPE(config)#ip nat inside source static tcp 10.0.0.4 25 131.107.0.1 25
CPE(config)#ip nat inside source static tcp 10.0.0.4 110 131.107.0.1 110
CPE(config)#interface fastEthernet 0/1
CPE(config-if)#ip nat inside     //指定NAT的内网接口
CPE(config-if)#ex
CPE(config)#interface serial 0/0
CPE(config-if)#ip nat outside    //指定NAT的外网接口
CPE(config-if)#ex
CPE(config)#

复制代码

(4)验证:通过internet上的PC5访问内网的WebServer、邮件服务器。

3. 在Windows上实现网络地址转换和端口映射

3.1 在Windows Server 2003上配置网络地址转换

(1)网络拓扑图

(2)实验环境

  ①Win2003_NATServer有两张网卡,其中连接内网的网卡(名称改为:inner)172.16.0.1/24(不用写网关)连接外网的网卡(名称改为:outer)192.168.1.4/24,默认网关:192.168.1.1

  ②内网中WebServer服务器:172.16.0.3/24,默认网关:172.16.0.1

(3)设置NAT

  ①“控制面板”→“管理工具”→“路由和远程访问”→“配置并启用路由和远程访问” →“自定义配置”→“NAT和基本防火墙”

  ②新增连接到内网网卡接口:在左侧树状节点中选择“NAT/基本防火墙”→“新增接口”→选择内网网卡,名称为“inner”→接口类型为“专用接口连接到专用网络”。

  ③新增连接到外网网卡的接口:“NAT/基本防火墙”→“新增接口”→选择外网网卡,名称为“outer”→接口类型为“专用接口连接到专用网络”。(至此,内网计算机可以访问internet的计算机了!)

  ④可以为“inner”接口或“outer”接口启用防火墙:如选中“inner”接口→“属性”→在“静态数据包筛选器”的“入站筛选器”或“出站筛选器”中进行设置。

  ⑤如果不要NAT转换而是采用路由器转发则需要在Router1路由器上添加到172.16.0.0/24的网段的下一段给192.168.1.4,否则内网数据包可以出去,但响应数据包没办法回来。而在NAT下内网计算机之所以能被转发,是因为内网IP到Router1时,都被转成了192.168.1.4,回来时通过NAT又被转成内网地址(172.16.0.x)了,所以数据包的收发都没问题。

(4)设置端口映射,让外网的计算机可以访问内网的WebServer服务器(172.16.0.3)

  ①在“NAT/基本防火墙”中选择“outer”接口→“属性”→“服务和端口”→“添加”,然后写上“传入端口”、“专用网址”和“传出端口”。(传入和传输是针对outer接口来讲的)

  ②在pc0上用浏览器访问172.16.0.3服务器上的网站。但要让interner上算机也可以访问内网的Web服务器,还需要在Router1将相应的端口映射到192.168.1.4(具体操作见前面的《端口映射》部分)。

3.2 在Windows XP上配置连接共享和端口映射

(1)网络拓扑图

(2)网络设置

  ①在宿主机上将WLAN网卡的连接共享给VMNet2网卡。(这相当宿主机成为一台简单的PAT/NAT服务器,将来自于内网的地址转发为外网IP,或者反之

  ②重新设置VMNet2网卡IP为10.0.0.1/24(注意:作为内网网关的网卡,本身不要写网关!

  ③将内网计算机的默认网关设置为10.0.0.1,这样就可以访问Internet了。


http://www.kler.cn/a/444067.html

相关文章:

  • Kali操作系统简单介绍
  • 图书馆管理系统(三)基于jquery、ajax
  • Pytorch | 从零构建Vgg对CIFAR10进行分类
  • 【C#】try-catch-finally语句的执行顺序,以及在发生异常时的执行顺序
  • @PostConstruct注解解释!!!!
  • Spring Boot--06--整合Swagger
  • 算法12、基础二分查找的运用(旋转数组专题)
  • 【bWAPP】XSS跨站脚本攻击实战
  • Springboot导出Excel方法(若依实例)
  • HTML5技术深度解析与实战应用
  • 网络安全(3)_安全套接字层SSL
  • 1 数据库(中):DDL(数据库设计)、DML(增删改表中数据)、DQL(查询表中数据)单表基本语法
  • Vue前端开发-axios默认配置和响应结构
  • Python机器学习笔记(七、深度学习-神经网络)
  • Cocos Creator 试玩广告开发
  • Vue 2 中 v-html 指令的使用详解
  • 面试小札:Java后端闪电五连鞭_9
  • 告别机器人味:如何让ChatGPT写出有灵魂的内容
  • JVM 垃圾回收之垃圾回收算法
  • Android Vendor Overlay机制
  • 【机器学习】【集成学习——决策树、随机森林】从零起步:掌握决策树、随机森林与GBDT的机器学习之旅
  • Qt之样式表使用(十一)
  • STM32中ADC模数转换器
  • 动手学深度学习11.1. 优化和深度学习-笔记练习(PyTorch)
  • 嵌入式驱动开发详解17(CAN驱动开发)
  • 在 Linux 下,将 tar 包打包成二进制程序