一、 NAT简介

NAT的功能就是指将使用私有地址的网络与公用网络INTERNET相连,使用私有地址的内部网络通过NAT路由器发送数据时,私有地址将被转化为合法注册的IP地址从而可以与INTERNET上的其他主机进行通讯。

NAT路由器被置于内部网和INTERNET的边界上并且在把数据包发送到外部网络前将数据包的源地址转换为合法的IP地址。当多个内部主机共享一个合法IP地址时,地址转换是通过端口多路复用即改变外出数据包的源端口并进行端口映射完成。
二、 NAT工作过程

假设某公司申请DDN专线时,电信提供的合法地址为61.138.0.93/30,61.128.0.94/30,公司内部网络地址为192.168.0.0/24,路由器局域口地址192.168.0.254/24,广域口地址61.138.0.93/30,

当192.168.0.1/24这台计算机向INTERNET上的服务器202.98.0.66发出请求,则相应的操作过程如下:

⑴内部主机192.168.0.1/24的用户发出到INTERNET上主机202.98.0.66的连接请求;

⑵边界路由器从内部主机接到第一个数据包时会检查其NAT映射表,如果还没有为该地址建立地址转换映射,路由器便决定为该地址进行地址转换,路由器为该内部地址192.168.0.1到合法IP地址61.138.0.93的映射,同时附加端口信息,以区别与内部其他主机的映射。

⑶边界路由器用合法IP地址61.138.0.93及某端口号来替换内部IP地址192.168.0.1和对应的端口号,并转发该数据包。

⑷INTERNET服务器202.98.0.66接到该数据包,并以该包的地址(61.138.0.93)来对内部主机192.168.0.1作出应答。

⑸当边界路由器接受到目的地址为61.138.0.93的数据包时路由器将使用该IP地址、端口号从NAT的映射表中查找出对应的内部地址和端口号,然后将数据包的目的地址转化为内部地址192.168.0.1,并将数据包发送到该主机。对于每一个请求路由器都重复2-5的步骤。
 三、路由器NAT功能配置

以上面的假设为例,分别说明在CISCO、3COM路由器下配置NAT功能

一CISCO路由器

以CISCO2501为例,要求其IOS为11.2版本以上

cisco2501#conf t

cisco2501(config)# int e0

cisco2501(config-if)# ip address 192.168.0.254 255.255.255.0

cisco2501(config-if)# ip nat inside

(指定e0口为与内部网相连的内部端口)

cisco2501(config-if)#int s0

cisco2501(config-if)#encapsulation ppp

(指定封装方式为PPP)

cisco2501(config-if)#ip address 61.138.0.93 255.255.255.252

cisco2501(config-if)# ip nat outside

(指定s0为与外部网络相连的外部端口)

cisco2501(config-if)#exit

cisco2501(config)# bandwidth 128

(指定网络带宽128k)

cisco2501(config)# ip route 0.0.0.0 0.0.0.0 Serial0

(指定缺省路由)

cisco2501(config)# ip nat pool a 61.138.0.93 61.138.0.93 netmask 255.255.255.252

(指定内部合法地址池,起始地址,结束地址为合法IP 61.138.0.93)

cisco2501(config)# access-list 1 permit 192.168.0.0 0.0.0.255
 (定义一个标准的access-list规则,以允许哪些内部地址可以进行地址转换)

cisco2501(config)# ip nat inside source list 1 pool a overload

(设置内部地址与合法IP地址间建立地址转换)

cisco2501(config)#end

cisco2501#wr

二3COM路由器

以3COM OCBN8832为例,要求其SOFTWARE VERSION为11.0版本以上

以root注册,进行如下配置:

⑴配置局域网端口

[1] EnterpriseOS #setdefault !1 -ip netaddress=192.168.0.254 255.255.255.0

[2] EnterpriseOS #setdefault !! -path control =enable (激活路由器局域口PATH)

[3] EnterpriseOS #setdefault !1 -port control=enable (激活路由器局域口PORT)

⑵配置广域网串行端口

[4] EnterpriseOS #setdefault !3 -path linetype=leased (指明该端口使用的通信线路类型)

[5] EnterpriseOS #setdefault !4 -port owner=ppp (指明该端口的使用者)

[6] EnterpriseOS #setdefault !4 -ip netaddress=61.138.0.93 255.255.255.252

[7] EnterpriseOS #setdefault !4 -nat addressmap 192.168.0.0/24 61.138.0.93 outbound

(指定将192.168.0.0/24内部主机使用的IP地址转换成61.138.0.93)

[8] EnterpriseOS #setdault !4 -nat control=enable (启用NAT服务)

[9] EnterpriseOS #setdault !3 -path control=enable

[10]EnterpriseOS #setdault !4 -port control=enalbe

⑶配置缺省路由

[11]EnterpriseOS #setdault -ip control=router (激活路由器的路由功能)

[12]EnterpriseOS #add -ip route 0.0.0.0 0.0.0.0 !4