NAT地址转换要点.docx
《NAT地址转换要点.docx》由会员分享,可在线阅读,更多相关《NAT地址转换要点.docx(14页珍藏版)》请在冰豆网上搜索。
NAT地址转换要点
NAT讲解
1.NetworkAddressTranslation,网络地址转换,是将IP数据包头中的IP地址转换为另一个IP地址的过程。
在实际应用中,NAT主要用于实现私有网络访问公共网络的功能。
这种通过使用少量的公有IP地址代表较多的私有IP地址的方式,将有助于减缓可用IP地址空间的枯竭。
2.NAT功能:
NAT不仅能解决IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。
1.宽带分享:
这是NAT主机的最大功能。
2.安全防护:
NAT之内的PC联机到Internet上面时,它所显示的IP是NAT主机的公共IP,所以Client端的PC当然就具有一定程度的安全了,外界在进行portscan(端口扫描)的时候,就侦测不到源Client端的PC。
3.NAT实现方式:
NAT的实现方式有三种,即静态转换StaticNat、动态转换DynamicNat和端口多路复用OverLoad。
静态转换是指将内部网络的私有IP地址永久固定得转换为公有IP地址,借助于静态转换,可以实现外部网络对内部网络中某些特定设备的访问。
多用于服务器
动态转换是指将内部网络的私有IP地址转换为公用IP地址时,IP地址是不确定的,是随机的,所有被授权访问上Internet的私有IP地址可随机转换为任何指定的合法IP地址。
即只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。
动态转换可以使用多个合法外部地址集。
当ISP提供的合法IP地址略少于网络内部的计算机数量时。
可以采用动态转换的方式。
端口多路复用(PortAddressTranslation,PAT)是指改变外出数据包的源端口并进行端口转换,即端口地址转换(PAT,PortAddressTranslation).采用端口多路复用方式。
内部网络的所有主机均可共享一个合法外部IP地址实现对Internet的访问,从而可以最大限度地节约IP地址资源。
同时,又可隐藏网络内部的所有主机,有效避免来自internet的攻击。
因此,目前网络中应用最多的就是端口多路复用方式。
4.现在IP地址的适用情况,私有IP地址是指内部网络或主机的IP地址,公有IP地址是指在因特网上全球唯一的IP地址。
RFC1918为私有网络预留出了三个IP地址块,如下:
A类:
10.0.0.0~10.255.255.255
B类:
172.16.0.0~172.31.255.255
C类:
192.168.0.0~192.168.255.255
上述三个范围内的地址不会在因特网上被分配,因此可以不必向ISP或注册中心申请而在公司或企业内部自由使用。
5.虽然NAT可以借助于某些代理服务器来实现,但考虑到运算成本和网络性能,很多时候都是在路由器上来实现的。
6.NAPT(NetworkAddressPortTranslation),即网络端口地址转换,可将多个内部地址映射为一个合法公网地址,但以不同的协议端口号与不同的内部地址相对应,也就是<内部地址+内部端口>与<外部地址+外部端口>之间的转换。
NAPT普遍用于接入设备中,它可以将中小型的网络隐藏在一个合法的IP地址后面。
NAPT也被称为“多对一”的NAT,或者叫PAT(PortAddressTranslations,端口地址转换)、地址超载(addressoverloading)。
7.NAPT与动态地址NAT不同,它将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的TCP端口号。
NAPT算得上是一种较流行的NAT变体,通过转换TCP或UDP协议端口号以及地址来提供并发性。
除了一对源和目的IP地址以外,这个表还包括一对源和目的协议端口号,以及NAT盒使用的一个协议端口号。
NAT-PT(NetworkAddressTranslation-Protocol)附带协议转换器的网络地址转换器。
是一种纯IPv6节点和IPv4节点间的互通方式,所有包括地址、协议在内的转换工作都由网络设备来完成。
8.PAT的主要优势在于,能够使用一个全球有效IP地址获得通用性。
主要缺点在于其通信仅限于TCP或UDP。
当所有通信都采用TCP或UDP,PAT允许一台内部计算机访问多台外部计算机,并允许多台内部主机访问同一台外部计算机,相互之间不会发生冲突。
9.NAT工作原理
借助于NAT,私有(保留)地址的"内部"网络通过路由器发送数据包时,私有地址被转换成合法的IP地址,一个局域网只需使用少量IP地址(甚至是1个)即可实现私有地址网络内所有计算机与Internet的通信需求。
NAT将自动修改IP报文的源IP地址和目的IP地址,IP地址校验则在NAT处理过程中自动完成。
有些应用程序将源IP地址嵌入到IP报文的数据部分中,所以还需要同时对报文的数据部分进行修改,以匹配IP头中已经修改过的源IP地址。
否则,在报文数据部分嵌入IP地址的应用程序就不能正常工作。
10.Nat-工作流程
1上图这个client(终端)的gateway(网关)设定为NAT主机,所以当要连上Internet的时候,该封包就会被送到NAT主机,这个时候的封包Header之sourceIP(源IP)为192.168.1.100;
2透过这个NAT主机,它会将client的对外联机封包的sourceIP(192.168.1.100)伪装成ppp0(假设为拨接情况)这个接口所具有的公共IP,因为是公共IP了,所以这个封包就可以连上Internet了,同时NAT主机并且会记忆这个联机的封包是由哪一个(192.168.1.100)client端传送来的;
③由Internet传送回来的封包,当然由NAT主机来接收了,这个时候,NAT主机会去查询原本记录的路由信息,并将目标IP由ppp0上面的公共IP改回原来的192.168.1.100;
④最后则由NAT主机将该封包传送给原先发送封包的Client。
11.常见问题
1.NAT的作用是什么?
答:
NAT的作用是把内网的私有地址,转化成外网的公有地址,解决IP地址数量紧缺问题。
使得内部网络上的(被设置为私有IP地址的)主机可以访问Internet。
NAT还可以防止外部主机攻击内部主机(或服务器)
2.NAT分为哪几种?
答:
NAT可以分为BasicNAT和PAT:
-BasicNAT只转化IP,不映射端口。
-PAT除了转化IP,还做端口映射,可以用于多个内部地址映射到少量(甚至一个)外部地址。
NAT还可以分为静态NAT和动态NAT:
-静态NAT,将内部网络中的每个主机都永久映射成外部网络中的某个合法的地址,多用于服务器。
-动态NAT,则是在外部网络中定义了一个或多个合法地址,采用动态分配的方法映射到内部网络。
12.怎样映射?
如何将大量的内部地址,映射成少量的外部地址?
对于第四层是TCP或UDP的数据包,NAT通过更改源端口号,来实现多对少的映射。
例如:
内部IP1~IP4,4个地址映射成外部一个地址IP5。
(IP1,Port1)映射成(IP5,Port1)
(IP2,Port1)映射成(IP5,Port2)
(IP3,Port2)映射成(IP5,Port3)
(IP4,Port2)映射成(IP5,Port4)
对于ICMP包,NAT通过更改ICMP的ID,来实现多对少的映射。
13.NAT有什么弊端?
在一个具有NAT功能的路由器下的主机并没有建立真正的端对端连接,并且不能参与一些因特网协议。
一些需要初始化从外部网络建立的TCP连接和使用无状态协议(比如UDP)的服务将被中断。
除非NAT路由器作一些具体的努力,否则送来的数据包将不能到达正确的目的地址。
(一些协议有时可以在应用层网关的辅助下,在参与NAT的主机之间容纳一个NAT的实例,比如FTP。
)NAT也会使安全协议变的复杂。
14.NAT局限性
(1)NAT违反了IP地址结构模型的设计原则。
IP地址结构模型的基础是每个IP地址均标识了一个网络的连接。
Internet的软件设计就是建立在这个前提之上,而NAT使得有很多主机可能在使用相同的地址,如10.0.0.1。
(2)NAT使得IP协议从面向无连接变成面向连接。
NAT必须维护专用IP地址与公用IP地址以及端口号的映射关系。
在TCP/IP协议体系中,如果一个路由器出现故障,不会影响到TCP协议的执行。
因为只要几秒收不到应答,发送进程就会进入超时重传处理。
而当存在NAT时,最初设计的TCP/IP协议过程将发生变化,Internet可能变得非常脆弱。
(3)NAT违反了基本的网络分层结构模型的设计原则。
因为在传统的网络分层结构模型中,第N层是不能修改第N+1层的报头内容的。
NAT破坏了这种各层独立的原则。
(4)有些应用是将IP地址插入到正文的内容中,例如标准的FTP协议与IP Phone协议H.323。
如果NAT与这一类协议一起工作,那么NAT协议一定要做适当地修正。
同时,网络的传输层也可能使用TCP与UDP协议之外的其他协议,那么NAT协议必须知道并且做相应的修改。
由于NAT的存在,使得P2P应用实现出现困难,因为P2P的文件共享与语音共享都是建立在IP协议的基础上的。
(5)NAT同时存在对高层协议和安全性的影响问题。
NAT配置
1.内部本地地址:
私有IP,不能直接用于互连网。
内部全局地址:
用来代替内部本地IP地址的,对外或在互联网上是合法的的IP地址。
复用内部的全局地址:
将一个内部全局地址用于同时代表多个内部局部地址。
主要用IP地址和端口号的组合来唯一区分各个内部主机。
目前在公司内普遍应用。
2.静态nat的语法
第一步,设置外部端口。
interfaceserial0
ipaddress61.159.62.129255.255.255.248
ipnatoutside
第二步,设置内部端口。
interfaceethernet0
ipaddress192.168.0.1255.255.255.0
ipnatinside
第三步,在内部本地与外部合法地址之间建立静态地址转换。
ipnatinsidesourcestatic内部本地地址内部合法地址。
示例:
ipnatinsidesourcestatic192.168.0.261.159.62.130
//将内部网络地址192.168.0.2转换为合法IP地址61.159.62.130
至此,静态地址转换配置完毕。
注意:
从外网到内网建立静态映射后,外网能PING通内部全局地址(200.1.1.1),如果使用真实地址,则访问失败,这是因为从外网没有到达内网的路由存在!
3.动态nat的语法
第一步,设置外部端口。
设置外部端口命令的语法如下:
ipnatoutside
示例:
interfaceserial0//进入串行端口serial0
ipaddress61.159.62.129255.255.255.192//将其IP地址指定为61.159.62.129,子网掩码为255.255.255.192
ipnatoutside//将串行口serial0设置为外网端口
注意,可以定义多个外部端口。
第二步,设置内部端口。
设置内部接口命令的语法如下:
ipnatinside
示例:
interfaceethernet0//进入以太网端口Ethernet0
ipaddress172.16.100.1255.255.255.0//将其IP地址指定为172.16.100.1,子网掩码为255.255.255.0
ipnatinside//将Ethernet0设置为内网端口。
注意,可以定义多个内部端口。
第三步,定义合法IP地址池。
定义合法IP地址池命令的语法如下:
ipnatpool地址池名称起始IP地址终止IP地址子网掩码
示例:
ipnatpoolchinanet61.159.62.13061.159.62.190netmask255.255.255.192
//指明地址缓冲池的名称为chinanet,IP地址范围为61.159.62.130~61.159.62.190,子网掩码为255.255.255.192。
需要注意的是,即使掩码为255.255.255.0,也会由起始IP地址和终止IP地址对IP地址池进行限制。
或
ipnatpooltest61.159.62.13061.159.62.190prefix-length26
第四步,定义内部网络中允许访问Internet的访问列表。
定义内部访问列表命令的语法如下:
access-list标号permit源地址通配符(其中,标号为1-99之间的整数)
示例:
access-list1permit172.16.100.00.0.0.255//允许访问Internet的网段为172.16.100.0~172.16.100.255,反掩码为0.0.0.255。
需要注意的是,在这里采用的是反掩码,而非子网掩码。
第五步,实现网络地址转换。
在全局设置模式下将由access-list指定的内部本地地址与指定的内部合法地址池进行地址转换。
命令语法如下:
ipnatinsidesourcelist访问列表标号pool内部合法地址池名字
示例:
ipnatinsidesourcelist1poolchinanet
至此,动态地址转换设置完毕。
4.pat的语法
第一步,设置外部端口。
interfaceserial0
ipaddress202.99.160.1255.255.255.252
ipnatoutside
第二步,设置内部端口。
interfaceethernet0
ipaddress10.100.100.1255.255.255.0
ipnatinside
第三步,定义合法IP地址池。
ipnatpoolonlyone202.99.160.2202.99.160.2netmask255.255.255.252
//指明地址缓冲池的名称为onlyone,IP地址范围为202.99.160.2,子网掩码为255.255.255.252。
由于本例只有一个IP地址可用,所以,起始IP地址与终止IP地址均为202.99.160.2。
如果有多个IP地址,则应当分别键入起止的IP地址。
第四步,定义内部访问列。
access-list1permit10.100.100.00.0.0.255
允许访问Internetr的网段为10.100.100.0~10.100.100.255,子网掩码为255.255.255.0。
需要注意的是,在这里子网掩码的顺序跟平常所写的顺序相反,即0.0.0.255。
第五步,设置复用动态地址转换。
在全局设置模式下,设置在内部的本地地址与内部合法IP地址间建立复用动态地址转换。
命令语法如下:
ipnatinsidesourcelist访问列表号pool内部合法地址池名字overload
示例:
ipnatinsidesourcelist1poolonlyoneoverload
//以端口复用方式,将访问列表1中的私有IP地址转换为onlyoneIP地址池中定义的合法IP地址。
注意:
overload是复用动态地址转换的关键词。
ipnatinsidesourcelistaccess-list-numberpoolpool-name[overload]:
使用该命令定义访问控制列表与NAT内部全局地址池之间的映射。
ipnatoutsidesourcelistaccess-list-numberpoolpool-name[overload]:
使用该命令定义访问控制列表与NAT外部局部地址池之间的映射。
ipnatinsidedestinationlistaccess-list-numberpoolpool-name:
使用该命令定义访问控制列表与终端NAT地址池之间的映射。
showipnattranslations:
显示当前存在的NAT转换信息。
showipnatstatistics:
查看NAT的统计信息。
showipnattranslationsverbose:
显示当前存在的NAT转换的详细信息。
debugipnat:
跟踪NAT操作,显示出每个被转换的数据包。
Clearipnattranslations*:
删除NAT映射表中的所有内容.
NAT配置实例
5.
条件:
图示
要求:
R0配置NAT,R1不配置路由,使PC0能访问PC1
步骤:
1)路由器配置相应端口地址。
R0:
R1:
2)路由器R0配置NAT和默认路由
注意:
从内网到外网建立PAT映射后,若不建立默认路由,则内网能PING通外部全局地址(211.68.121.1),但如果PING外部本地地址,则访问失败,这是因为从内网没有到达外网的路由存在!
6.
条件:
server在vlan2,PC0在vlan3,PC1在vlan4,
要求:
server采用静态NAT转换为219.224.97.20;内部网络地址192.168.3.0和192.168.4.0采用PAT转换为合法的外部地址。
步骤:
1)在二层交换机上创建Vlan、Trunk并将端口加入到相应的vlan中.
2)三层交换机开启路由功能;下联配置为“Trunk”,上联为路由口并配置IP地址;创建vlan并配置interfacevlan;配置默认路由;
定义interfacevlan2、3、4是NAT进口(inside),上联端口是NAT出口(outside);内部服务区到外网的“静态NAT”;将Vlan2和Vlan3的网段采用PAT转换合法的外部地址.;配置访问控制列表
【定义NAT的进出端口】
【将源地址192.168.2.2转换为219.224.97..20,静态NAT配置已完毕,可访问目标主机115.25.87.3】
【以端口复用方式,将访问控制列表90中的私有地址转换为f0/3的合法地址】
【ACL:
允许源192.168.3.0和192.168.4.0网段通过】
3)在路由器上配置相应端口IP即可。
Ping完包之后: