一. NAT简介 NAT(网络地址转换)是将专用网络地址(如企业内部网intranet)转换为公用地址(如互联网Internet)的一种技术,它对外界隐藏了内部网络的IP地址。
一. NAT简介
一. NAT简介 NAT(网络地址转换)是将专用网络地址(如企业内部网intranet)转换为公用地址(如互联网Internet)的一种技术,它对外界隐藏了内部网络的IP地址。通过在内部使用专用IP地址,并将它们转换为一小部分外部网络地址,从而减少了IP地址注册的费用以及节省了目前越来越缺乏的IP地址。同时这也隐藏了内部拓扑结构,从而降低了内部网络受到攻击的风险。 NAT功能通常被集成到路由器、防火墙、单独的NAT设备中,NAT设备(或软件)维护一个状态表,用来把内部网络的专用IP地址映射到外部网络地址上去。每个数据包在NAT设备(或软件)中都被转换成正确的IP地址发往下一级。与普通路由器不同的是,NAT设备是对报头进行修改,将内部网络的源地址变为NAT设备自己的外部网络地址;而普通路由器仅在将数据包转发到目的地之前读取源地址和目的地址。
二. NAT转换表 1. 使用一个IP地址 2. 使用IP地址池 3. 同时使用IP地址和端口号三. NAT的地址转换方式 1. 静态地址转换 2. 动态地址转换
二. NAT转换表 NAT使用一个转换表来记录内部专用地址和外部地址之间的映射。1. 使用一个IP地址 最简单的形式是一个转换表只有两列;专用地址和外部地址。当这个路由器对出数据包的源地址进行转换时,它也记下来目的地址。当响应从这个目的地址返回时,路由器就使用这个数据包的源地址(作为外部地址)来找出这个数据包的专用地址。这里描述的NAT机制要求通信是由专用网发起的。下图给出了使用一个IP地址的情况。
图12-1 使用一个IP地址的NAT转换表
2. 使用IP地址池 使用一个IP地址的NAT,只允许一个专用网主机连接一个外部主机。要去掉这个限制,NAT路由器可以使用全球地址池。例如,不是仅使用一个全球地址(200.24.5.8),NAT路由器可以使用4个地址(100.24.5.8、100.24.5.9、100.24.5.10、100.24.5.11)。在这种情况下,4个专用网主机可同时接入到同一个外部主机,因为每一对地址定义一条连接。但是,这种方法仍然有一些缺点。到同一个目的地址的连接不能超过4条。没有一个专用网主机可以同时访问两个外部服务器程序。同样地,两个专用网主机也不能同时访问同一个外部服务器程序。3. 同时使用IP地址和端口号 要允许在专用网主机和外部服务器程序之间有多对多的关系,就需要在转换表中有更多的信息。例如,假定在专用网内有两个主机,地址为172.18.3.1和172.18.3.2,它们需要访问主机25.8.3.2上的HTTP服务器。如果转换表有5列而不是两列,即包括源端口号和目的端口号,以及传输层协议,那么这种二义性就消失了。下表给出了转换表的例子。
表12-1 同时使用IP地址和端口号
当从HTTP返回响应时,源地址(25.8.3.2)和目的端口号(1400)的组合定义了这个响应应当指向专用网主机。要使这样的转换能够正常的工作,临时端口号必须是惟一的。三. NAT的地址转换方式(动画演示) 1. 静态地址转换 所谓静态地址转换是指专用地址和外部网络地址之间是静态一一映射的。这种转换通常用在内部网上的主机需要对外提供服务(如Web、E-mail服务等)的情况下。2. 动态地址转换 在动态地址转换的方式下,一组专用地址与一个外部网络地址池之间建立起一种动态的一一映射关系。这种地址转换形式下,内部主机可以访问外部网络,外部主机也能对内部网络进行访问,但必须是在内网专用IP地址与外部网络地址之间存在映射关系时才能成功,并且这种映射关系是动态的。
静态地址转换
各主机打开工具区的"拓扑验证工具",选择相应的网络结构,配置网卡后,进行拓扑验证,如果通过拓扑验证,关闭工具继续进行实验,如果没有通过,请检查网络连接。 本练习将主机A、B、C、D、E、F作为一组进行实验。 本练习中主机B作为NAT服务器(主机B的b1接口连接到Internet,b2接口连接到内部局域网),主机A、C、D作为Internet上的主机,主机E、F作为内部服务器。1. 主机E启动实验平台工具栏中的"UDP工具",作为UDP服务器端来监听2828端口。 主机F启动实验平台工具栏中的"UDP工具",作为UDP服务器端来监听2929端口。2. 为主机B启动静态NAT服务,配置方法如下: (1)在主机B上启动NAT服务("nat_config"); (2)主机B在命令行下使用"nat_config "b1" full"命令将172.16.1.1接口设置为"公用接口连接到Internet"。 (3)主机B在命令行下使用"nat_config "b2" private"命令将172.16.0.1接口设置为"专用接口连接到专用网络"。 (4)主机B在命令行下使用"nat_config "b1" addrpool 172.16.1.1 172.16.1.1 255.255.255.0"命令将地址池设置为从172.16.1.1到172.16.1.1(一个地址)。 (5)主机B在命令行下使用"nat_config "b1" portmap udp 172.16.1.1 6000 172.16.0.2 2828"命令选择映射UDP协议,并添加一个新映射(从172.16.1.1:6000到172.16.0.2:2828)。 (6)主机B在命令行下使用"nat_config "b1" portmap udp 172.16.1.1 6001 172.16.0.3 2929"命令选择映射UDP协议,并添加一个新映射(从172.16.1.1:6001到172.16.0.3:2929)。3. 主机A、B、C、F启动协议分析器开始捕获数据并设置过滤条件(提取UDP协议)。4. 主机A启动"实验平台工具栏中的UDP工具"并向主机B(172.16.1.1)的6000端口发送一条数据。 主机C启动"实验平台工具栏中的UDP工具"并向主机B(172.16.1.1)的6001端口发送一条数据。5. 主机A、B、C、F停止捕获数据,分析捕获到的数据。 ● 分析主机B捕获到的数据,结合静态NAT的原理,试填写会话映射表:
表12-2 实验结果
● 结合本练习的结果,绘制第4步发送的UDP数据包在网络中的传输路径图。6. 主机B在命令行下使用"recover_config"命令停止NAT服务。
动态地址转换
本练习将主机A、B、C、D、E、F作为一组进行实验。 本练习中主机B作为NAT服务器(主机B的b1接口连接到Internet,b2接口连接到内部局域网),主机A作为Internet上的服务器,主机C、D作为Internet上的主机,主机E、F作为局域网内部主机。1. 主机A启动实验平台工具栏中的"UDP工具",作为UDP服务器来监听2828端口。2. 在主机B启动动态NAT服务,配置方法如下: (1)在主机B上重新启动NAT服务("nat_config")。 (2)主机B在命令行下使用"nat_config "b1" full"命令将172.16.1.1接口设置为"公用接口连接到Internet"。 (3)主机B在命令行下使用"nat_config "b2" private"命令将172.16.0.1接口设置为"专用接口连接到专用网络"。 (4)主机B在命令行下使用"nat_config "b1" addrpool 172.16.1.1 172.16.1.1 255.255.255.0"命令将地址池设置为从172.16.1.1到172.16.1.1。3. 主机B、F启动协议分析器开始捕获数据,设置过滤条件(提取UDP协议)。4. 主机F启动实验平台工具栏中的"UDP工具"并向主机A(172.16.1.2)的2828端口发送一条数据。5. 察看主机B捕获到的数据。 ● 分析主机B捕获到的数据,结合动态NAT的原理,试填写会话映射表:
表12-3 实验结果
6. 主机C和主机D分别ping主机E(172.16.0.2)的IP地址,观察是否ping通。7. 主机B、F停止捕获数据,分析捕获到的数据。 ● 结合实验结果,简述动态NAT在网络安全上所起到的作用以及在对等通信(在对等通信模型中,对等的双方即可以作为客户端,也可以作为服务器来使用,它们通过直接将数据包发送给对方进行通信,双方均可以主动建立连接)的影响。 ● 主机B在命令行下使用"recover_config"命令停止NAT服务。
1. 简述NAT的主要作用。列出3个使用NAT的例子。2. 找出一种使用动态NAT可以从外部网络上的主机发起通信的方法。