1、基于Linux的地址转换技术探讨和实现摘 要:伴随着当今网络技术的蓬勃发展,人们对于IP地址的需求的数量猛增,然而对于已经分配的所剩无几的IPv4地址,对于网络的发展必定是一个瓶颈。IPv6地址的出现使得人们看到了未来的希望,但是由于技术的不完善,从IPv4到IPv6的过渡需要相当的一段时间。在这段时间里,NAT技术的出现很好地解决了所剩无几的IP地址对于日益增长的网络需求所带来的限制。NAT技术将因特网和局域网地址互相结合,使局域网内的计算机在访问因特网时使用因特网合法的地址,使得更多的的计算机在局域网中增长而不会对因特网IP地址带来巨大的压力。对于因特网上的用户可以访问局域网中指定发布的服
2、务,与此同时还能够有效地避免来自因特网的攻击,隐藏了计算机的真实IP地址,保护网络内部的计算机。NAT是解决IP地址匮乏问题的一种行之有效的技术,本文探讨了NAT技术的原理以及在Linux系统中的实现方案。关键词:Linux; IPv4; NAT技术Address Translation Technology Research and Implementation Based on LinuxABSTRACT:Along with the development of network technology, the number of people in demand for IP addre
3、sses is more than before, but for the few IPv4 addresses have been allocated. But for the development of the network must be a bottleneck. IPv6 addresses appear makes people see hope for the future, but because of the imperfect technology, the transition from the IPv4 to IPv6 requires a long time. D
4、uring this time, NAT technology solves the limitations running out of IP addresses the growing demand for network brings. NAT technology of the Internet and LAN address with each other, so that the computer on the LAN using the Internet legitimate address when accessing the Internet, making the comp
5、uter more growth rather than be in the LAN IP address of the Internet has brought tremendous pressure. For users on the Internet can access the published services specified in the LAN, while also able to effectively prevent attacks from the Internet, to hide the real IP address of the computer to pr
6、otect the internal network computer. NAT is an effective technique to solve the problem of shortage about IP addresses. This article discusses the principle of NAT technology and implementation in the Linux system.KEYWORDS: Linux; IPv4; NAT technology目 录1 引言12 相关知识及技术12.1 传输在网络间的数据报头的格式12.2 NAT地址转换技
7、术的分类12.3 SNAT和DNAT技术22.4 基础环境23 NAT技术原理34 以LINUX服务器作为网关实现NAT44.1 Linux中NAT的实现原理44.2 Iptables语法64.3 实验的设计与实现75 系统测试105.1 SNAT测试105.2 DNAT的Web测试115.3 DNAT的SSH测试126 结束语14致谢15参考文献161 引言 随着互联网的飞速发展,使得IPv4地址供不应求,这种现象在很多单位是尤为突出的,传统的解决办法是利用动态地址分配(DHCP)或者划分子网和超网技术。 利用传统的动态地址分配技术显然无法实现网络应用的需求,因为动态地址分配仅仅是简化了客户
8、端的配置,增加了IP地址分配的灵活性,并没有起到有效节省IP地址的作用。比如,晚上同时上网的客户端很多时,DHCP服务器中地址池的IP地址会很快消耗殆尽,不一定可以满足所有用户的上网请求。 划分子网技术只是在申请到一段合法的IP地址的时候将此段IP地址进行划分,其中的每一个IP地址都是在公网上的合法地址,并没有起到节省IP地址的效果。 超网技术突破了有类网络的限制,利用子网掩码的变化将可用的IP地址大大的增加了。但由于IPv4地址的自身限制,还是无法满足当今对于IP地址的巨大需求。 在这样的环境下,NAT技术应运而生,充分的缓解了IP地址匮乏带来的尴尬局面,这种技术巧妙地将因特网地址和局域网地
9、址结合起来,实现局域网地址和因特网地址的相互转换,使得局域网内的终端能够正确的在因特网上访问,还不会显示自身真实的IP地址,有效的避免了来自因特网上的攻击。同时也可以限制因特网上的用户只能访问到局域网的某台服务器上,实现了访问控制。而且可以根据不同的网络环境采用不同的方案。并且具有配置简单,易于实现,对用户也是透明的。并且NAT技术得到了广泛的运用。2 相关知识及技术2.1 传输在网络间的数据报头的格式 数据在网络间传输的基本单元是数据报,而每个数据报都包含一个报头部分和数据部分,其中报头部分描述了数据的目的地址以及和其它数据包之间的关系。 IP数据报是TCP/IP协议定义在因特网上的网络层中
10、传输的一种数据报,数据报的首部为固定长度20字节的报头部分,是所有IP数据报都有的,其中包含着四位用来存放数据报源地址和目的地址的信息,即源IP地址和目的IP地址。2.2 NAT地址转换技术的分类 (1) 静态地址转换技术(Static Nat) 静态地址转换是最简单的一种转换方式,它把局域网的IP地址一对一的转换成因特网的IP地址,并且是不会改变的,没有真正意义上的节省因特网的IP地址,但是利用了转换的技术,隐藏了终端上的真实IP地址,减少了来自外部网络对于终端发起的攻击和破坏,保护了终端。静态地址转换技术多数使用在公司和企业等服务器端。 (2) 动态地址转换技术(Dynamic Nat)
11、动态地址转换技术是将是将局域网IP地址转换到一段因特网的IP地址中,这段地址是已经购买或分配好的,实现了多对多之间的地址转换。适用于局域网内的终端数量大于分配好的因特网地址数量,但是由于转换时也同样是一个终端转换成指定网段内的一个因特网地址,所以当局域网内同时访问因特网的终端数量大于分配好的地址时,就会造成某些局域网地址无法转换而不能访问。动态转换基本实现了节约IP地址的功能,但是有局限性。 (3) 端口多路复用(Port Address Translation) 端口多路复用技术是现在网络中最常使用的地址转换技术,它其实是动态地址转换的一种变形,它可以将所有的局域网地址转换为一个因特网地址,
12、使局域网地址可以同时访问因特网,大大的节省了因特网的IP地址。端口多路复用是将不同地址的IP对应转换到指定因特网IP地址上的不同端口上。同时又可隐藏网络内部的所有主机,有效避免来自Internet的攻击。2.3 SNAT和DNAT技术 DNAT是目的地址转换技术(Destination Network Address Translation),主要用在当有一个合法的IP地址,要把对防火墙和代理服务器的访问重定向到其它的终端上。即改变的是目的地址,使报文能重路由到某个终端。 SNAT叫做源地址转换技术(Source Network Address Translation),是改变报文的源地址,这
13、在极大程度上可以隐藏本地网络等。有了这个操作,防火墙就能自动地对报文做SNAT和De-SNAT(就是反向的SNAT),以使局域网能连接到Internet。2.4 基础环境 为了满足实验设计所需的环境,应安装Linux系统,并且安装了Iptables服务,推荐为RedHat Enterprise版本,而且系统内核必须为2.4以上。 Iptables是与内核版本为2.4以上的Linux内核集成的IP信息包过滤系统。如果 Linux系统连接到因特网或局域网、服务器或连接局域网和因特网的代理服务器,则有利于在Linux系统上更好地控制IP信息包过滤和防火墙配置。3 NAT技术原理 NAT是Networ
14、k Address Translation(网络地址转换)的缩写,它不是一种新的技术,而是一种解决网络问题的成熟技术,多年来几乎没有做过任何的改动。目前,大部分的园区网所使用的网关中都支持该技术,有些单位采用专用的路由器做网关,比如CISCO,而有些学校等机构采用服务器做网关,比如Linux服务器。而无论在CISCO路由器上还是在Linux内核的服务器上都支持NAT的实现。 本文探讨的是NAT技术最重要的功能,也就会通过地址复用来提高了对IP地址的利用率。在NAT技术中涉及了两种IP地址概念:公网地址和私有地址。公网地址是合法的IP地址,它是由Inter NIC或者是网络服务提供商分配的地址,
15、是全球唯一的地址,是可路由的地址。私有地址就是局域网内部的地址,是网络供应商预留的,只能在局域网内部使用的私有的IP地址,这些地址不能被路由。这些私有地址包括10.0.0.010.255.255.255,172.16.0.0172.31.255.255,192.168.0.0192.168.255.255。 NAT一般是设置在网关处,本文采用代理服务器作为网关。当IP数据报从内部的终端访问因特网时,在经过代理服务器时会进行NAT技术,NAT会修改数据报的源地址,将其转换为一个可以在互联网上路由的合法的IP地址,并且把这个转换前后的两个IP都记录到系统的一张映像表中。当外部网络发送响应数据报回到这个终端,NAT会根据映像表中刚才记录的映像关系找到数据报要到达的内部终端的IP地址,然后再修改接收来的数据报的首部的目的地址,最后将数据报发送给内部地址对应的终端,从而达到两个主机之间的通信。 在配置静态地址转换后就会产生一张存放地址转换对应的私有地址和公网地址的映射表,如表3-1所示。 端口多路复用技术是在内部地址访问公共网络时才进行转换,会产生相应的转换记录,也同样会存放在一张地址转换映射表中,如表3-2所示。表3-1 静态地址转换的映射表私有地址公网地址.192.168.1.1/24202.30.8.1