本节提供了以下配置配置例子:
    1 动态内部源地址转换示例
    2 内部全局地址复用示例
    3 重叠地址转换示例
    4 tcp负载均衡示例
    5 nat多个outside 口负载均衡示例
    6 nat速率限制和速率统计示例
    6.6.8.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
    6.6.8.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
    6.6.8.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 章节《构建本地服务器配置示例》。
    6.6.8.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 地址,使得路由器知道地址转换以后该往哪个接口转发数据包。
    6.6.8.5 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.6.8.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。
    6.6.8.7 nat 多个outside 口负载均衡示例
    在nbr 的路由器上,如果有多个wan 口作nat 的outside 口。这时多个wan 口之间实现按带宽分布负载。当某个wan 口线路不通时,自动将负载分配到存活的线路上。缺省情况下按nat 的全局目标地址进行分流。全局配置模式下的ip default-route balance by-source 命令,修改成按内部网源地址进行均衡。下面就一个nbr1000 两个wan 口负载均衡的例子。其中nbr1000 有两条线路上外网:
    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
    !
    ! 配置nbr1000 的lan 口
    interface fastethernet 0/0
    ip mtu 1488
    ip nat inside
    !有pppoe,所以把lan 的mtu 改小
    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
    !
    6.6.8.8 nat 速率限制和速率统计示例
    在以下配置中,对所有的nat 内部pc 的报文,基于内部ip 地址进行速率统计。
    !
    interface fastethernet 0/0
    ip address 192.168.210.190 255.255.255.0
    ip nat inside
    !
    interface fastethernet 1/0
    ip address 192.168.100.150 255.255.255.0
    ip nat outside
    !
    ip nat inside source list 1 interface fastethernet 1/1
    ! 配置nat 内部ip 地址速率统计,使速率统计功能生效。
    ip nat translation netflow
    !
    access-list 1 permit any
    !
    在以下配置中,对所有的nat内部pc的报文,基于内部ip地址进行速率限制,对于特殊的ip地址192.168.210.120,采用特速的ip地址限速策略。
    !
    interface fastethernet 0/0
    ip address 192.168.210.190 255.255.255.0
    ip nat inside
    !
    interface fastethernet 1/0
    ip address 192.168.100.150 255.255.255.0
    ip nat outside
    !
    ip nat inside source list 1 interface fastethernet 1/1
    ! 配置nat 内部ip 地址缺省速率限制,使速率限制功能生效。
    ip nat translation rate-limit default inbound 1600 outbound 2400
    ! 配置nat 内部ip 地址特殊ip 192.168.210.120 速率限制,使速率限制功能生效。
    ip nat translation rate-limit ip 192.168.210.120 inbound 4000 outbound 4000
    !
    access-list 1 permit any
    !
    下面是速率统计show 的显示信息:
    red-giant#sh ip nat translations flowrate inbound
    ip inbound(kb/sec) outbound(kb /sec) islimit isspecial
    192.168.210.120 3 146 * *
    192.168.210.123 0 0 * *
    192.168.210.121 0 0 * *
    192.168.210.119 0 0 * *
    192.168.210.122 0 0 * *
    上面islimit 为“*”表示该ip 需要进行速率限制,如果为“-”表示该ip 不进行速率限制但有进行速率统计。isspecial 为“*”表示该ip 是采用的特殊的限速策略,如果为“-”表示该ip 是采用的缺省的限速策略。 b.gif