第11章 拾遗1:网络地址转换(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 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 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 /
CPE(config-if)#ip nat inside //指定该接口为NAT的内部端口
CPE(config-if)#ex
CPE(config)#interface serial /
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 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 pool mypool
CPE(config)#interface serial /
CPE(config-if)#ip nat outside //指定S0/0为NAT的外网接口
CPE(config-if)#ex
CPE(config)#interface fastEthernet /
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 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 pool mypool overload
CPE(config)#interface serial /
CPE(config-if)#ip nat outside //指定NAT的外网接口
CPE(config-if)#ex
CPE(config)#interface fastEthernet /
CPE(config-if)#ip nat inside //指定NAT的内网接口
CPE(config-if)#ex
CPE(config)#ex
CPE#show ip nat statistics //查看NAT配置状态
Total translations: ( static, dynamic, extended)
Outside Interfaces: Serial0/
Inside Interfaces: FastEthernet0/
Hits: Misses:
Expired translations:
Dynamic mappings:
-- Inside Source
access-list pool mypool refCount
pool mypool: netmask 255.255.255.0
start 131.107.0.1 end 131.107.0.1
type generic, total addresses , allocated (%), misses
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 131.107.0.1
CPE(config)#ip nat inside source static tcp 10.0.0.6 131.107.0.1
CPE(config)#ip nat inside source static tcp 10.0.0.4 131.107.0.1
CPE(config)#ip nat inside source static tcp 10.0.0.4 131.107.0.1
CPE(config)#interface fastEthernet /
CPE(config-if)#ip nat inside //指定NAT的内网接口
CPE(config-if)#ex
CPE(config)#interface serial /
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了。
第11章 拾遗1:网络地址转换(NAT)和端口映射的更多相关文章
- 网络地址转换NAT与端口地址转换PAT
网络地址转换NAT与端口地址转换PAT 一.网络地址转换 NAT (Network Address Translation) 1.1.网络地址转换简介 需要在专用网(内网)连接到因特网的路由器上安装 ...
- 2016.7.9 计算机网络复习要点第四章之虚拟专用网VPN和网络地址转换NAT
1.虚拟专用网VPN (1)一个机构内,对于那些仅在本机构内部使用的计算机就可以由本季候自行分配其IP地址,让这些计算机使用仅在本机构有效的IP地址(本地地址),不需要申请全球唯一的IP地址(全球地址 ...
- 网络地址转换-NAT
网络地址转换-NAT 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.NAT组网和常用术语 私网:局域网内IP 公网:因特网的公网ip地址 NAT设备:就是讲私网地址转换为公网的 ...
- 【计算机网络】网络地址转换NAT
网络地址转换NAT 要知道到每个IP使能的设备都需要一个IP地址.以一个家庭为例,假设当地的ISP已为该家庭分配过一块地址,但是后期家庭中的智能设备增加(智能手机.电脑等),这些都需要IP地址才可上网 ...
- Ubuntu搭建ssh连接(连接方式:桥接网卡、网络地址转换(NAT))
操作系统:Ubuntu Server 16.04.2 SSH软件:Putty(远程连接工具,视本机操作系统选择对应版本的putty) --------------------------------- ...
- Windows Server 2012R2 网络地址转换NAT
一.NAT概述 网络地址转换NAT(Network Address Translation)可以动态改变通过路由器的IP报文的内容(修改报文的源IP地址和/或目的IP地址).离开路由器的报文的源地址或 ...
- iptables nat及端口映射
iptables nat及端口映射 发布: 2010-6-11 15:05 | 作者: admin | 来源: SF NetWork 门户网站 iptables 应用初探(nat+三层访问控制) ip ...
- VMware实现iptables NAT及端口映射
1. 前言 本文只讲解实战应用,不会涉及原理讲解.如果想要了解iptables的工作流程或原理可参考如下博文. 具体操作是在PC机的VMware虚拟机上进行的,因此涉及的地址都是内网IP.在实际工作中 ...
- vbox NAT 设置端口映射(NAT+8080端口转发)
VirtualBox的提供了四种网络接入模式,它们分别是: 1.NAT 网络地址转换模式(NAT,Network Address Translation) 2.Bridged Adapter 桥接模式 ...
随机推荐
- .NET本质论 方法
方法和JIT编译 CLR只执行本机的机器代码.如果一个方法体由CIL组成,那么它就必须在调用之前被转换为本机的机器码(将MSIL编译为本机代码,运行库提供了两种方式.一种就是在安装与部署时的预编译(由 ...
- COM,SOM, QT, GObject, ObjectiveC
COM,SOM, QT, GObject, ObjectiveC https://en.wikipedia.org/wiki/IBM_System_Object_Model#Comparison_of ...
- 代理模式proxy
代理模式的共同优点如下: (1) 能够协调调用者和被调用者,在一定程度上降低了系统的耦合度. (2) 客户端可以针对抽象主题角色进行编程,增加和更换代理类无须修改源代码,符合开闭原则,系统具有较好的灵 ...
- cat命令详解
命令cat cat 命令用于连接文件并打印到标准输出设备上 语法格式: cat [-AbeEnstTuv] [--help] [--version] fileName 参数说明: -n 或 --num ...
- 使用shell脚本批处理控制大数据环境服务启动停止
三台集群机器: master 192.168.168.200 slave1 192.168.168.201 slave2 192.168.168.202 1.start-maste ...
- 安装chrome扩展json-handle
chrome插件安装 方式一,在线安装 直接插到json-handle地址,添加即可 https://chrome.google.com/webstore/detail/json-handle/iah ...
- js this详解,事件的三种绑定方式
this,当前触发事件的标签 在绑定事件中的三种用法: a. 直接HTML中的标签里绑定 onclick="fun1()"; b. 先获取Dom对象,然后利用dom对象在js里绑定 ...
- Ubuntu 14.04 正式版 12.4
安装Ubuntu 14.04后要做的5件事情 4月17日,开源免费系统Ubuntu官方正式宣布发布Ubuntu 14.04 LTS(代号Trusty Tahr)正式版.官方声称该版本主打云计算,在云平 ...
- 微信JS API PHP类
CURL操作类: <?php namespace app\common; class curl{ public static function wxcurl($getUrl){ $ch = cu ...
- Java ArrayList排序方法详解
由于其功能性和灵活性,ArrayList是 Java 集合框架中使用最为普遍的集合类之一.ArrayList 是一种 List 实现,它的内部用一个动态数组来存储元素,因此 ArrayList 能够在 ...