本节提供了以下配置配置例子:
1、动态内部源地址转换示例
2、内部全局地址复用示例
3、重叠地址转换示例
4、tcp负载均衡示例
5、nat多个outside口负载均衡示例
(1)动态内部源地址转换示例
在以下配置中,本地全局地址从nat地址池net200中分配,该地址池定义了地址范围为200.168.12.2~200.168.12.100。只有内部源地址匹配访问列表1的数据包才会建立nat转换记录。
!
interface fastethernet 0/0
ip address 192.168.12.1 255.255.255.0
ip nat inside
!
interface fastethernet 1/0
ip address 200.168.12.1 255.255.255.0
ip nat outside
!
ip nat pool net200 200.168.12.2 200.168.12.100 netmask 255.255.255.0
ip nat inside source list 1 pool net200
!
access-list 1 permit 192.168.12.0 0.0.0.255
(2)内部全局地址复用示例
内部全局地址复用,其实就是napt。rgnos8.1以上版本的软件对于动态nat自动实现napt。在以下配置中,本地全局地址从nat地址池net200中分配,该地址池只定义200.168.12.200一个ip地址,但允许复用。只有内部源地址匹配访问列表1的数据包才会建立该类型nat转换记录。
!
interface fastethernet 0/0
ip address 192.168.12.1 255.255.255.0
ip nat inside
!
interface fastethernet 1/0
ip address 200.168.12.200 255.255.255.0
ip nat outside
!
ip nat pool net200 200.168.12.200 200.168.12.200 netmask 255.255.255.0
ip nat inside source list 1 pool net200
access-list 1 permit 192.168.12.0 0.0.0.255
通过显示nat 映射表,可以看到是否能够正确建立转换记录:
red-giant#show ip nat translations
pro inside global inside local outside local outside global
tcp 200.168.12.200:2063 192.168.12.65:2063 168.168.12.1:23 168.168.12.1:23
(3)内部源地址静态napt示例
静态napt 可以用于构建虚拟服务器。这里的构建虚拟服务器,是指在nat内部网架设服务器,然后通过nbr 路由器的静态napt映射到外部网。这样,用户访问nbr全局地址上的虚拟服务器,就被转换到内部网相应的服务器上。
下面的例子是将一台内网的web服务器192.168.12.3映射到全局ip200.198.12.1的80端口。配置命令脚本如下:
!
interface fastethernet 0/0
ip address 192.168.12.1 255.255.255.0
ip nat inside
!
interface fastethernet 1/0
ip address 200.198.12.1 255.255.255.0
ip nat outside
!
ip nat inside source static tcp 192.168.12.3 80 200.198.12.1 80
上例的web服务器,对于内网用户,可以直接用内网地址192.168.12.3直接访问。但有些游戏服务器构建在nat的内部网,不仅要求外网用户能正常访问,还要求内网用户能以全局ip来访问这台游戏服务器。这时就要用到静态napt命令中的permit-inside关键字。配置命令脚本如下:
!
interface fastethernet 0/0
ip address 192.168.12.1 255.255.255.0
ip nat inside
no ip redirects
!
interface fastethernet 1/0
ip address 200.198.12.1 255.255.255.0
ip nat outside
!
ip nat inside source static tcp 192.168.12.4 7777 200.198.12.1 7777 permit-inside
这时内网用户就可以通过全局ip200.198.12.1来访问192.168.12.4这台游戏服务器了。同时注意要在inside口配上no ip redirects,防止inside口发重定向的报文,以提高效率。
更详细的配置步骤见6.7章节《构建本地服务器配置示例》。
(4)重叠地址转换示例
当内部网络地址与外部网络地址重叠时,外部重叠地址在内部网络上应该表现为不同的私有网络地址。在以下配置中,内部网络分配了非注册的192.198.12.0/24网络地址,外部网络已经分配了该地址,因此当内部网络通过域名方式访问外部重叠地址主机时,nat会将重叠地址转换为地址池net172中的地址,这样重叠地址的问题就解决了。以下配置,访问外部重叠地址主机时,只能通过主机域名,如果需要通过ip地址直接访问,就要配置外部源地址静态nat映射。内部主机访问外部主机的映射方式采用动态napt方式。
!
interface fastethernet 0/0
ip address 192.198.12.1 255.255.255.0
ip nat inside
!
interface fastethernet 1/0
ip address 200.198.12.1 255.255.255.0
ip nat outside
! !
ip nat pool net200 200.198.12.2 200.198.12.100 netmask 255.255.255.0
ip nat pool net172 172.16.198.2 172.16.198.100 netmask 255.255.255.0
ip nat inside source list 1 pool net200
ip nat outside source list 1 pool net172
ip route 172.16.198.0 255.255.255.0 200.198.12.2
access-list 1 permit 192.198.12.0 0.0.0.255
!
通过显示nat 映射表,可以看到是否能够正确建立转换记录:
red-giant#sh ip nat translations
pro inside global inside local outside local outside global
udp 200.198.12.2:1256 192.168.12.91:1256 200.198.168.11:53 200.198.168.11:53
tcp 200.198.12.2:1257 192.168.12.91:1257 172.16.198.2:23 192.168.12.91:23
red-giant#
在以上配置中,如果没有配置到172.16.198.0/24的静态路由,从内部接口接收到目标地址为该网络的数据包,路由器不能判断出来该数据将往哪个接口转发,导致通讯失败。所以当配置重叠地址时,必须配置静态路由或者在outside接口配置次ip地址,使得路由器知道地址转换以后该往哪个接口转发数据包。
tcp负载均衡示例
在以下配置中,定义了一个虚拟主机地址,所有来自外部网络访问该虚拟主机的tcp连接,将被路由器分配到多台实际主机上,从而实现负载分流的目标。realhosts定义了实际主机地址池,访问列表1定义了虚拟主机地址。外部网的主机要有路由到这个虚拟主机地址。以下配置,只对tcp流量产生作用,对其它流量保持不变,除非有另外的nat配置。
!
interface fastethernet 0/0
ip address 10.10.10.1 255.255.255.0
ip nat inside
!
interface fastethernet 1/0
ip address 200.198.12.1 255.255.255.0
ip nat outside
!
ip nat pool realhosts 10.10.10.2 10.10.10.3 netmask 255.255.255.0 type rotary
ip nat inside destination list 1 pool realhosts
!
access-list 1 permit 10.10.10.100
!
通过显示nat 映射表,可以看到是否能够正确建立转换记录:
red-giant#sh ip nat translations
pro inside global inside local outside local outside global
tcp 10.10.10.100:23 10.10.10.2:23 100.100.100.100:1178 100.100.100.100:1178
tcp 10.10.10.100:23 10.10.10.3:23 200.200.200.200:1024 200.200.200.200:1024
(6)域名解析中继服务(dns relay)示例
在一些nat应用场合,nat内网里的主机直接将dns服务器地址指向nat inside接口上的ip地址,然后内网主机的dns请求都发向nat inside的接口。由于路由器自身不提供dns服务,这时就是要求路由器将收到的dns请求报文转发到真正的dns服务器,并且将解析结果应答给请求主机。这个功能就被称作域名解析中继服务(dns relay)。
假设nat inside接口的ip地址是192.168.1.1,dns服务器的ip是202.101.98.55,则dns relay功能配置如下:
!
access-list 1 permit 192.168.1.0 0.0.0.255
!
interface fastethernet 0/0
ip address 192.168.1.1 255.255.255.0
ip nat inside
!
interface fastethernet 1/0
ip address 200.168.12.1 255.255.255.0
ip nat outside
!
ip nat pool net200 200.168.12.2 200.168.12.10 netmask 255.255.255.0
!
ip nat inside source list 1 pool net200
ip nat application source list 1 destination udp 192.168.1.1 53 dest-change
202.101.98.55 53
!
上述ip nat application命令的语义就是:如果有源地址满足access-list 1、目的地址是192.168.1.1、目的端口是53的udp报文,则修改这个ip报文的目的地址为202.101.98.55、目的端口为53。
(7)nat 多个outside口负载均衡示例
在nbr1000e的路由器上,有多个wan口作nat的outside口。这时多个wan口之间实现按带宽分布负载。当某个wan口线路不通时,自动将负载分配到存活的线路上。缺省情况下按nat 的全局目标地址进行分流。全局配置模式下的ip default-route balance by-source命令,修改成按内部网源地址进行均衡。下面就一个nbr1000e两个wan口负载均衡的例子。其中nbr1000e有两条线路上外网:
a) interface fastethernet 1/0 为100m 的以太网静态ip 上网;
b) interface fastethernet 1/1 接一个1m 的adsl,通过pppoe 上网。
拓朴图如下:

配置如下:
!
! 配置acl ,允许内部网用户访问internet
access-list 99 permit 192.168.0.0 0.0.0.255
! 配置dialer-list ,用于pppoe拨号
dialer-list 1 protocol ip permit
!
!配置nbr1000e的lan 口
interface fastethernet 0/0
ip nat inside
!有pppoe ,所以把lan的mtu改小
ip mtu 1488
ip address 192.168.0.1 255.255.255.0
!
! 这个wan0 口以静态ip 连接外部网,每60 秒发一个dns 请求来检测线路
interface fastethernet 1/0
ip nat outside
ip address 218.5.19.2 255.255.255.0
keepalive 60 dns 202.101.98.55
! 带宽100m ,以kbits 为单位
bandwidth 100000
!
! 这个wan1 口接adsl ,通过pppoe 拨号上网
interface fastethernet 1/1
pppoe enable
! 配置pppoe 拨号为非按需拨号
pppoe-client dial-pool-number 2 no-ddr
!拨号配置
interface dialer 1
encapsulation ppp
ppp pap sent-username user password 7 072b102a07
ip nat outside
mtu 1488
ip address negotiate
dialer pool 2
dialer idle-timeout 1200
dialer-group 1
! 带宽1m ,单位kbits
bandwidth 1000
!
! 配置nat 地址池,因为nat 有多个outside 口,当outside 口为fastethernet 1/0 时
采用218.5.19.2 的地址。当outside 口为dialer 1 即pppoe 的出口时,使用dialer 口
上的地址。
ip nat pool nbr_setup_build_pool prefix-length 24
address 218.5.19.2 218.5.19.2 match interface fastethernet 1/0
address interface dialer 1 match interface dialer 1
! 启用nat 内部源地址转换。
ip nat inside source list 99 pool nbr_setup_build_pool
! 配置缺省路由为两个wan ,使均衡生效。
ip route 0.0.0.0 0.0.0.0 fastethernet 1/0 202.101.98.1
ip route 0.0.0.0 0.0.0.0 dialer 1
!