当前位置:文档之家› NAT网络地址转换实验详解

NAT网络地址转换实验详解

一、原理回顾网络地址转换(NAT,Network Address Translation)属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中。

原因很简单,NAT不仅完美地解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络部的计算机。

虽然NAT可以借助于某些代理服务器来实现,但考虑到运算成本和网络性能,很多时候都是在路由器上来实现的。

随着接入Internet的计算机数量的不断猛增,IP地址资源也就愈加显得捉襟见肘。

事实上,除了中国教育和科研计算机网(CERNET)外,一般用户几乎申请不到整段的C类IP地址。

在其他ISP那里,即使是拥有几百台计算机的大型局域网用户,当他们申请IP地址时,所分配的地址也不过只有几个或十几个IP地址。

显然,这样少的IP地址根本无法满足网络用户的需求,于是也就产生了NAT技术。

l.NAT简介借助于NAT,私有(保留)地址的"部"网络通过路由器发送数据包时,私有地址被转换成合法的IP地址,一个局域网只需使用少量IP地址(甚至是1个)即可实现私有地址网络所有计算机与Internet的通信需求。

NAT将自动修改IP报文的源IP地址和目的IP地址,Ip地址校验则在NAT处理过程中自动完成(对于ICMP,NAT也自动完成地址转换)。

有些应用程序将源IP地址嵌入到IP报文的数据部分中,所以还需要同时对报文进行修改,以匹配IP头中已经修改过的源IP地址。

否则,在报文数据都分别嵌入IP地址的应用程序就不能正常工作。

2.NAT实现方式NAT的实现方式有三种,即静态转换Static Nat、动态转换Dynamic Nat 和端口多路复用OverLoad。

静态转换是指将部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,是一成不变的,某个私有IP地址只转换为某个公有IP地址。

借助于静态转换,可以实现外部网络对部网络中某些特定设备(如服务器)的访问。

动态转换是指将部网络的私有IP地址转换为公用IP地址时,IP地址对是不确定的,而是随机的,所有被授权访问上Internet的私有IP地址可随机转换为任何指定的合法IP地址。

也就是说,只要指定哪些部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。

动态转换可以使用多个合法外部地址集。

当ISP提供的合法IP地址略少于网络部的计算机数量时。

可以采用动态转换的方式。

端口多路复用(Port address Translation,PAT)是指改变外出数据包的源端口并进行端口转换,即端口地址转换nternet的访问,从而可以最大限度地节约IP地址资源。

同时,又可隐藏网络部的所有主机,有效避免来自internet的攻击。

因此,目前网络中应用最多的就是端口多路复用方式。

受到NAT影响的应用程序一些高层协议(比如FTP,Quake,SIP,VPN)是在IP包的有效数据发送网络层(第三层)信息的。

比如,主动模式的F TP使用单独的端口分别来控制命令传输和数据传输。

当请求一个文件传输时,主机在发送请求的同时也通知对方自己想要在哪个端口接受数据。

但是,如果主机是在一个简单的NAT防火墙后发送的请求,那么由于端口的映射将会使对方接收到的信息无效。

一个应用层网关(Application Layer Gateway或ALG)可以修正这个问题。

运行在NAT防火墙设备上的ALG软件模块可以更新任何由地址转换而导致无效的信息。

显然,ALG需要明白它所要修正的上层协议,所以每个有这种问题的协议都需要有一个单独的ALG。

但是,除FTP外的大多数传统的客户机-服务器协议不需要发送网络层(第三层)信息,也就不需要ALG。

这个问题的另一个可能的解决方法是使用象STUN这样的技术,但是这只针对建立在UDP上的高层协议,并且需要它建这种技术。

这种技术对对称NAT也是无效的。

还有一种可能的方案是UPnP,但它需要和NAT设备配合起来使用.工作原理当一台小型商务企业的部网计算机用户连接到 Internet 资源时,该用户的 TCP/IP 协议产生一个 IP 数据包,该数据包包含以下值,这些值位于 IP 和 TCP 或 UDP 标头中:(粗体容表示受 NAT 影响的项目):•目标 IP 地址:Internet 资源 IP 地址•源 IP 地址:私有 IP 地址•目标端口:Internet 资源 TCP 或 UDP 端口•源端口: 源应用程序 TCP 或 UDP 端口请求源主机或者其它路由器将此 IP 数据包发送给 NAT, 然后由 NAT 将向外发送的数据包的地址解析如下:•目标IP地址:Internet 资源 IP 地址•源IP 地址:ISP 分配的公用地址•目标端口:Internet 资源 TCP 或 UDP 端口•源端口:重新映射的源应用程序TCP 或 UDP 端口NAT 将重新映射的 IP 数据包发送到 Internet 。

响应计算机将向 NAT 返回一个响应。

当 NAT 接收到此响应时,该数据包将包含以下地址信息:•目标IP 地址:ISP 分配的公用地址•源IP地址:Internet 资源 IP 地址•目标端口:重新映射的源应用程序 TCP 或 UDP 端口•源端口:Internet 资源的 TCP 或者 UDP 端口当 NAT 完成映射和解析地址后,将向 Internet 客户端发送数据包,此数据包包含以下地址信息:•目标 IP 地址:私有 IP 地址•源 IP 地址:Internet 资源 IP 地址•目标端口:源应用程序TCP 或者 UDP 端口•源端口:Internet 资源 TCP 或 UDP 端口对于向外发送的数据包,源 IP 地址和 TCP/UDP 端口号将被映射到一个公用源 IP 地址和一个可能变化的 TCP/UDP 端口号。

对于接收的数据包,目标 IP 地址和 TCP/UDP 端口号将被映射到私有 IP 地址和初始 TCP/UDP 端口号。

那么,NAT转换表何时进行初始化呢,一般有三种方式:手工初始化,外发数据报时,传入名字查找。

大多数NAT实现方式都使用外发数据报时初始化转换表,当部主机通过NAT向外发送数据报时,NAT此时在转换表中创建一个表项二、实验分析一:拓扑图二:使用dynamips完成实验1:启用R5和R6路由器,其中R5模拟PC5机,S1/1 ip:220.171.1.1/24 网关:220.171.1.2 2:R6路由器S1/0端口ip地址:220.171.1.2 ,Fa2/0端口ip地址:192.168.1.1/243:模拟公网实际环境:R6实现ACL来阻止192.168.1.0网络从Fa2/0到达PC5的S1/14:在R6上使用NAT来实现192.168.1.0到PC5的访问5:真实PC(ip:192.168.1.2/24 网关:192.168.1.1)三:实验步骤1:在R5上Router>enRouter# configure terminalRouter(config)#hostname PC5PC5 (config)#no ip domain-lookup /告诉Router不要对它不知道的字符串做DNS解析PC5 (config)#line console 0PC5 (config-line)#exec-timeout 0 0PC5 (config-line)#logging synchronousPC5 (config-line)#exitPC5 (config)#no ip routing /去除路由器的路由功能来模拟成pcPC5 (config)#interface s1/1PC5 (config-if)#ip address 220.171.1.1 255.255.255.0 /配置ip地址PC5 (config-if)#no shutdownPC5 (config-if)#exitPC5 (config)#ip default-gateway 220.171.1.2 /配置默认网关PC5(config)#endPC5#2:在R6上:使用ACLRouter>enableRouter#configure terminalRouter(config)#hostname R6R6(config)#no ip domain-lookupR6(config)#line console 0R6(config-line)#exec-timeout 0 0R6(config-line)#logging synchronousR6(config-line)#exitR6(config)#inter fa2/0R6(config-if)#ip address 192.168.1.1 255.255.255.0R6(config-if)#no shutdownR6(config-if)#interface s1/0R6(config-if)#ip address 220.171.1.2 255.255.255.0R6(config-if)#no shutdownR6(config-if)#ip access-group 1 out /加载ACL到s1/0的出口上以192.168.1.0的源包R6(config-if)#exitR6(config)#access-list 1 deny 192.168.1.0 0.0.0.255 /标准ACL,阻止192.168.1.0来的包R6(config)#测试:PC(IP:192.168.1.2/24 网关:192.168.1.1)ping 220.171.1.1 不通由于ACL阻止了192.168.1.0来的包,要实现外访问,必须使用NAT转换A:使用静态NAT:在部本地地址和部全局地址之间建立一对一的映射关系R6#R6#conf tR6(config)#ip nat inside source static 192.168.1.2 220.171.1.3 /配置静态nat,部本地地址和部全局地址做一对一对应R6(config)#interface fa2/0R6(config-if)#ip nat inside /设置fa2/0接口为部网络R6(config-if)#interface s1/0R6(config-if)#ip nat outside /设置s1/0网络为外部网络R6(config-if)#endR6#测试:PC(IP:192.168.1.2/24 网关:192.168.1.1)ping 220.171.1.1通B:使用动态地址转换NAT:在部本地地址和部全局地址之间建立动态的映射关系。

相关主题