为什么要使用nat

1.内网主机过多,没有足够的合法ip可用

2.当ISP发生变化时,使用nat技术避免了ip地址的重新编址

3.当两个合并的网络中出现了重复地址

4.利用nat可以解决TCP的负责均衡问题

5.隐藏内部网络,增加安全性

nat就是将内网中使用的私有地址转换为可在internat上路由的合法地址技术

私有地址范围:

10.0.0.0—10.255.255.255

172.16.0.0—172.31.255.255

192.168.0.0—192.168.255.255

nat的四类地址:

1.inside local address(内部本地地址):内网中设备所使用的地址,一般为私有地址。

2.inside global address(内部全局地址):公有地址,一般有ISP提供。用于内网和外网通信

3.outside local address(外部本地地址):外网中设备所使用的地址,这个地址是在面向内网设备时所使用的,它不一定是一个公网地址;

4.outside global address(外部全局地址):数据在外网中使用的地址,是个合法地址

nat分类:

1.静态nat:一对一的转换,如果内网有mail或者ftp服务器可为外部用户提供服务,这些服务器地址必须采用静态nat,一便外部用户可以方便的访问这些服务器

2.动态nat:静态nat不能起到节省地址的作用。而动态nat可以让多个内部本地地址共用一个内部全局地址,静态nat不能和动态nat同时使用一个内部全局地址

3.pat端口复用:多个内部本地地址到一个内部全局地址的多对一转换。通过端口号来确定多个内部主机的唯一性

nat的优缺点:

优点:

1.极大的节省了合法地址

2.能够处理地址重复情况,避免了地址的重新编号,增加了编址的灵活性

3.隐藏了内部网络地址,增加安全性

4.可以使多个使用TCP负载特性的服务器之间实现数据的负载均衡

缺点:

1.由于nat要进行地址转换,增加了传输的延迟

2.由于nat改动了ip。失去了跟踪端到端ip流量的能力。

3.增加开销。处理nat进程增加了CPU的负荷。

nat可以实现的几个功能及工作原理:

实现功能:

1.Translation inside local address(内部地址翻译)

2.Overlapping inside global address(内部全局地址复用)

3.TCP load distribution(TCP负载重分配)

4.Handing overlapping networks(处理重叠网络)

工作原理:

1.Translation inside local address(内部地址翻译)

这是一种比较简单的方法,将ip地址一对一的映射。也即静态nat。

在内部主机连接到外部网络时,当第一个数据包到达nat路由器时,router检查他的nat表,因为nat是静态配置的,故可以查询出来,然后router将数据包的内布局部地址(inside local address,源地址)更换成内部全局地址(inside global address)再转发出去。外部主机接收到数据包用接收到的外部全局地址(outside global address,目的地址)来响应。nat接收到外部回来的数据包,再根据nat表把地址翻译成内部局部地址(inside local address),转发过去。

2.Overlapping inside global address(内部全局地址复用)

使用地址和端口将多个内部本地地址映射到较少的内部全局地址。这也就是所谓的PAT。和内部地址翻译一样,nat router同样也负责查表和翻译内部本地地址,唯一的区别就是由于使用了overloading,router将复用的内部全局地址,通过特定的端口来区分它和其他地址。nat router和外部主机的通信采用翻译过的内部全局地址,故同一般的通信没有差别,router到内部主机通讯时,同样要查nat表。

3.TCP load distribution(TCP负载重分配)

和以上两种操作不同,这是nat由外到内的翻译,所以那种以为web server 一定要放置到nat外部的说法是错误的。

外部主机向虚拟主机(定义为内部全局地址)通信,nat router接收到外部主机的请求并依据nat表建立与内部主机的链接,把内部全局地址(目的地址)翻译成内部局部地址,并转发数据包到内部主机,内部主机接收包并作出响应。nat router在使用内部局部地址和端口查询数据表,根据查询到的外部地址和端口做出响应。

此时,如果同一主机再做第二次链接,nat router将根据nat表将建立与另一虚拟主机的链接,并转发数据。

4.处理地址重叠(overlapping network)

这种方法主要用于两个intranet的互连。同样给我们处理两个重叠网络提供了方法。它的实现要求DNS server的支持。

4.1:当内网地址也是用公网注册地址(或是外网合法地址)时,如果仍然按照标准的静态nat或者动态nat转换,则可能使得转换的内网地址与外网中合法地址冲突,使数据包又返回到本地网络,这肯定是不行的。这时我们就要使用重叠网络(overlapping network)的nat转换方案了,把数据包中的目的地址转换成与外网不在同一网段的全局地址。

使用重叠nat可以实现内网和外部网络都使用注册ip地址情况下的地址转换。这里的“重叠”其实就是指内网和外网使用ip地址段重叠(因为都是公网注册ip地址)。

4.2:重叠nat的转换原理

如下图所示显示了如何处理重叠网络间的nat转换。实例中内部网络和外部网络都使用了1.0.0.0/8这个注册ip地址段。下面是重叠网络nat地址转换的演示示例。步骤序号是与图中的序号对应的。

NAT原理详解

(1)内部网络中ip地址为1.1.1.1的主机通过计算机名向外部网络中的主机C发起连接。连接请求首先会向DNS服务器发出一个由名称到ip地址的查询请求,请求包在到达路由器之前的源地址为1.1.1.1主机的内部本地地址1.1.1.1,目的地址为DNS服务器地址。在到达路由器后,请求包的源地址被替换成1.1.1.1主机的内部全局地址2.2.2.2,目的地址不变。

(2)当DNS服务器发出的查询请求应答包(其中源地址为DNS服务器地址,目的地址为1.1.1.1主机的内部全局地址2.2.2.2,并包括了解析出的C主机的ip地址1.1.1.3)到达nat路由器后,如果返回地址有重叠(也就是返回的地址在内部网络中已使用),将转换这个返回的地址。转换的方法是创建一个简单的nat条目,把解析得到的C主机ip地址1.1.1.3映射到一个从独立配置的外部本地地址池中分配到得外部本地地址3.3.3.3,参见图中下面的nat表项。

    DNS服务器会检查每一个DNS应答,确保解析得到的ip地址不是在网络中已使用的ip地址,否则路由器将转换这个解析得到的ip地址。

(3)当解析到C主机的ip地址后,内部网络1.1.1.1主机会以映射后的3.3.3.3地址作为目的地址向外部网络C主机发起连接。

(4)路由器利用原来已获得的信息建立一个内部本地地址、内部全局地址、外部本地地址和外部全局地址的nat映射表,参见图中的nat映射表项。

(5)路由器继续发送连接请求数据包,数据包的源地址用内部全局地址替换,数据包中的目的地址用外部全局地址替换,然后继续发送连接请求数据包。

(6)当外部网络主机C接收到这个数据包时,以一个应答数据包进行响应。应答数据包的源地址为C主机ip地址1.1.1.3,目的地址为内部网络全局地址2.2.2.2。

(7)当路由器接收到这个应答包时,把应答包中的目的地址用内部本地地址1.1.1.1进行替换,而源地址用外部本地地址1.1.1.3进行替换,转发给内部网络1.1.1.1主机。


至于具体的配置命令这里不再赘述. . . 欢迎指点!!!