7.3配置动态NAT地址转换
在本章前面已说了,H3C路由器所支持的动态NAT地址转换主要包括:NAPT、NOPAT、EASY IP这三种模式。一般情况下,通过在接口上配置所需关联的ACL和内部全局地址池(当采用EASY IP进行配置时不用配置址池)即可实现动态地址转换,让内部网络用户根据ACL(可选配置)所配置的策略动态选择地址池中可用的IP地址进行转换。但要注意:有些H3C设备还支持仅仅通过判断流出接口报文的源地址,而不使用ACL的方式来实现出接口报文的动态地址转换。
NOPAT和NAPT的区别就是根据是否同时使用端口信息来进行动态地址转换:NOPAT为不使用TCP/UDP端口信息实现的多对多地址转换是纯IP地址的转换;NAPT为使用TCP/UDP端口信息实现的多对一地址转换,可以是仅IP地址或端口,或者端口与IP地址同时进行的转换。若直接使用NAT路由器外部网络接口的IP地址作为转换后的内部全局IP地址,则就是EASY IP这种动态NAT地址转换模式了。
在H3C路由器中,NAT地址转换关联一般在NAT路由器的外部网络接口(出接口)上配置,但是当某内网主机需要通过多个出接口访问外网时,就需要在多个出接口上配置地址转换关联,配置过程就比较复杂了,所以H3C路由器又提供了内部网络接口(入接口)地址关联的配置方案。这样当NAT路由器作为VPN间互访的工具时,在出接口较多的情况下,通过在接入各私网的入接口上配置地址转换关联达到简化配置的目的。这两种配置方式的特点如下(目前主要还是在出接口上关联):
l 若配置NAT路由器外部网络接口地址关联,那么从外部网络接口发送的首个数据包会首先由ACL(或报文源地址)进行判定是否允许进行地址转换,然后根据关联找到与之对应的地址池(或接口地址)进行源地址转换,并建立地址转换表项,后续数据包直接根据地址转换表项进行转换。
l 如果配置NAT路由器内部网络接口地址关联,那么从内部网络接口接收的符合指定ACL的数据包首先会被重定向到NAT业务板,然后再做与外部网络接口地址转换类似的源地址转换处理。但该方式下地址转换不支持EASY IP特性,因为这时出口地址有多个。
【注意】NAT路由器内部网络接口地址关联的支持情况与设备的型号有关,请以设备的实际情况为准。在同时配置了入接口和出接口地址关联的情况下,若报文同时匹配了入接口和出接口的地址转换关联规则,则以出接口规则优先,即只按照出接口地址转换关联进行转换。
7.2.1配置NOPAT
NOPAT动态地址转换模式是通过配置ACL和地址池的关联,将与ACL匹配的报文的源IP地址转换为内部全局地址池中的一个IP地址,但不进行端口转换。NOPAT的具体配置步骤如表7-3所示(因为目前主要支持在出接口上关联NAT地址池,故在此仅以出接口关联进行介绍,下同)。
表7-3 NOPAT的配置步骤
步骤 | 命令 | 说明 |
Step 1 | system-view 例如: <Sysname>system-view | 进入系统视图 |
Step 2 | nat address-groupgroup-number start-address end-address 例如: [Sysname]nat address-group1 202.110.10.10 202.110.10.15 | 定义一个动态NOPAT地址转换的内部全局地址池。在NOPAT的动态地址转换过程中,NAT路由器将会从地址池中选择一个IP地址作为转换后的报文源IP地址 |
Step 3 | interfaceinterface-type interface-number 例如: [Sysname]interfaceserial 1/0 | 键入NAT路由器外部网络接口,进入接口视图 |
Step 4 | nat outbound[acl-number]address-groupgroup-numberno-pat[track vrrpvirtual-router-id] | 在出接口配置访问控制列表和地址池关联,但不使用端口信息,实现NOPAT |
下面对以上配置步骤中的一些主要命令进行说明。
1.nat address-group命令
nat address-groupgroup-numberstart-address end-address系统视图命令用来配置NAT动态地址转换使用的全局地址池。命令中的参数说明如下:
lgroup-number,内部全局地址池组索引号,取值范围为0~31。在同一个地址组下可以创建多个地址池,但是要求不仅不同地址池中定义的IP地址段之间不允许重叠,地址组成员的IP地址段也不能与其它地址池或者其它地址组成员的IP地址段重叠。
lstart-address:内部全局地址池的起始IP地址。
lend-address:内部全局地址池的结束IP地址。end-address必须大于或等于start-address,但内部全局地址池中的IP地址数不能超过255个。
内部全局地址池必须是一些连续的IP地址集合。当对需要到达外部网络的数据报文进行地址转换时,其源地址将被转换为地址池中的某个地址。如果start-address和end-address相同,表示只有一个地址。可用undo nat address-groupgroup-number命令删除原来所配置的内部地址池。但是,已经和某个ACL关联的地址池在进行NAT地址转换时是不允许删除的。
以下示例是配置一个从210.110.10.10到210.110.10.20的内部全局地址池,地址池号为1。
<Sysname>system-view
[Sysname]nat address-group1 210.110.10.10 210.110.10.20
2. nat outbound命令
nat outbound[acl-number] [address-groupgroup-number[vpn-instancevpn-instance-name] [no-pat[reversible] ] ] [track vrrpvirtual-router-id]接口视图令用来配置出接口地址关联。命令中的参数和选项说明如下:
lacl-number:可选参数,指定在进行NOPAT地址转换过程中要关联的ACL号,取值范围为2000~3999(即可以是基本ACL,也可以是高级ACL)。如果选择了该参数,则表示将一个ACL和一个内部全局地址池关联起来,符合ACL规则的报文的源IP地址才可以使用全局地址池中的IP地址进行转换;如果不选择此参数,则表示只要出口上报文的源IP地址不是出口的地址,都可以使用地址池中的地址进行地址转换。当ACL规则变为无效时,新连接的NAT会话表项将无法建立,但是已经建立的连接仍然可以继续通信。在一个接口下,一个ACL只能与一个内部全局地址池绑定;但一个内部全局地址池可以与多个ACL绑定。
laddress-groupgroup-number:指定地址转换时要使用的内部全局地址池。如果不指定地址池,则直接使用NAT路由器的出接口IP地址作为转换后的报文源地址,这就相当于采用Easy IP动态NAT地址转换模式了。
lvpn-instancevpn-instance-name:可选参数,指定内部全局地址池中的IP地址所属的VPN实例,表示可以支持VPN之间通过NAT转换进行互访。其中,vpn-instance-name表示VPN实例名,为1~31个字符的字符串,区分大小写。如果不设置该值,表示不支持MPLS VPN多实例。
lno-pat:对于NOPAT地址转换模式来说,此为必选项,指定不使用TCP/UDP端口信息实现多对多的NOPAT地址转换。若不配置该参数,则表示使用TCP/UDP端口信息实现多对一的NAPT地址转换,那就成为了下节将要介绍的NPAT的配置了。
lreversible:可选项,表示允许反向地址转换。即在内网用户主动向外网发起连接并成功触发建立地址转换表项的情况下,允许外网向该内网用户发起的连接使用已建立的地址转换表项进行目的地址转换(即内部全局地址转换为内部本地地址)。但内网用户主动向外网发起连接并成功触发建立地址转换表项后,外网向该内网用户发起的连接必须与接口上动态地址转换配置使用的地址池所关联的某个ACL匹配才能成功利用已有的地址转换表项进行目的地址转换。
ltrack vrrpvirtual-router-id:可选参数,指定出接口地址转换与VRRP备份组进行关联,作用于整个VRRP备份组。virtual-router-id表示关联的VRRP备份组号,取值范围为1~255。如果未指定本参数,则表示没有进行VRRP备份组关联。
可用undo nat outbound[acl-number] [address-groupgroup-number[vpn-instancevpn-instance-name] [no-pat[reversible] ] ] [track vrrpvirtual-router-id]命令取消与对应出接口的关联。但执行该命令后原来生成的NAT地址映射表项不会被自动删除,需要等待5~10分钟后自动老化。在此期间,使用该NAT地址映射表项的用户不能访问外部网络,但不使用该映射表项的用户不受影响。也可以使用reset nat session命令立即清除所有的NAT地址映射表项,但该命令会导致NAT业务中断,所有用户必须重新发起连接。
另外,可以在同一个NAT路由器出接口上配置不同的地址转换关联,此时要使用对应的undo命令将相应的地址转换关联删除。
以下示例是在外部网络接口Serial1/0上配置允许10.10.10.0/24网段的主机进行NOPAT动态地址转换,NAT地址池的IP地址范围为210.10.10.10~210.10.10.15。
(1)配置与NAT地址池关联的ACL。
<Sysname>system-view
[Sysname]acl number2001
[Sysname-acl-basic-2001]rule permit source10.10.10.0 0.0.0.255!---为基本ACL,允许源IP地址在10.10.10.0/24网络中的报文进行NAT地址转换
[Sysname-acl-basic-2001]rule deny!---创建一条规则,禁止其他IP包通过
[Sysname-acl-basic-2001]quit
(2)配置所需的NAT地址池。
[Sysname]nat address-group1 210.10.10.10 210.10.10.15
(3)在外部网络接口Serial1/0上配置进行NOPAT地址转换,使用地址池组1中的地址进行地址转换。
[Sysname]interfaceserial 1/0
[Sysname-Serial1/0]nat outbound2001address-group1no-pat
7.2.2配置NAPT
NAPT将在进行NAT地址转换过程中同时转换源IP地址和源端口,这样来自不同内部地址的数据报的目的地址可以映射到同一个外部IP地址,但它们的端口号被转换为该地址的不同端口号。
在NAPT地址转换中,同样可以通过配置ACL和地址池的关联,将与ACL匹配的报文的源地址映射为地址池中的外部IP地址,且同时进行端口转换。具体的配置步骤如表7-4所示。整体配置与上节介绍的NOPAT的配置步骤差不多。
表7-4 NAPT的配置步骤
步骤 | 命令 | 说明 |
Step 1 | system-view 例如: <Sysname>system-view | 进入系统视图 |
Step 2 | nat address-groupgroup-number start-address end-address 例如: [Sysname]nat address-group1 202.110.10.10 202.110.10.15 | 定义一个动态NAPT地址转换的内部全局地址池。在NAPT动态地址转换的过程中,NAT路由器将会从地址池中选择一个IP地址做为转换后的报文源IP地址 |
Step 3 | interfaceinterface-type interface-number 例如: [Sysname]interfaceserial 1/0 | 进入接口视图。注意要根据下面是在出口,还是在入口上配置地址池与ACL的关联来确定这里是NAT路由器的出口还是入口 |
Step 4 | nat outbound[acl-number]address-groupgroup-number[track vrrpvirtual-router-id] | 键入NAT路由器外部网络接口,进入接口视图 |
Step 5 | quit | 返回系统视图 |
Step 6 | nat mapping-behaviorendpoint-independent[aclacl-number] | (可选)配置地址转换模式。默认情况下,地址转换模式为Address and Port-Dependent Mapping(关心对端地址和端口转换模式) |
以上配置步骤中的nat outbound命令在上节已有介绍,只是此处不支持no-pat可选项,因为是要同时进行地址端口转换的。
nat mapping-behaviorendpoint-independent[aclacl-number]系统视图命令用来配置NPAT地址转换模式下的地址转换模式。命令中的选项和参数说明如下:
lendpoint-independent:表示采用不关心对端地址和端口的NAT地址转换模式。配置该命令后,只要是来自相同源IP地址和源端口的报文,无论其目的IP地址是否相同都将通过NAPT映射后转换为同一个外部IP地址和外部端口,并且NAT网关设备允许外部网络的主机通过该转换后的IP地址和端口来访问这些内部网络的主机。
【说明】默认情况下都是采用Address and Port-Dependent Mapping(关心对端地址和端口转换)模式,这样对于来自相同源IP地址和源端口的报文,如果其目的IP地址和目的端口不同,则通过NAPT映射后将被转换为不同的外部IP地址和外部端口,并且NAT网关设备只允许这些目的IP地址对应的外部网络的主机才可以通过该转换后的IP地址和端口来访问这些内部网络的主机。
可用undo nat mapping-behaviorendpoint-independent[aclacl-number]命令恢复默认的关心对端地址和端口转换模式。
laclacl-number:可选参数,用于控制需要遵守指定地址转换模式的报文范围的ACL,取值范围为2000~3999。配置了ACL后,表示只有符合ACL规则的报文才采用Endpoint-Independent Mapping模式进行地址转换,若不配置ACL,则表示所有的报文都采用Endpoint-Independent Mapping模式进行地址转换。
以下示例是对所有报文都以Endpoint-Independent Mapping模式进行地址转换。
<Sysname>system-view
[Sysname]nat mapping-behavior endpoint-independent
以下示例是通过高级ACL过滤源报文,仅允许FTP和HTTP通信类报文以Endpoint-Independent Mapping模式进行地址转换,其它报文默认采用Address and Port-Dependent Mapping模式进行地址转换。
<Sysname>system-view
[Sysname]aclnumber3000
[Sysname-acl-adv-3000]rulepermittcpdestination-porteq80
[Sysname-acl-adv-3000]rulepermittcpdestination-porteq21
[Sysname-acl-adv-3000]quit
[Sysname]natmapping-behaviorendpoint-independentacl3000
7.2.3配置EASY IP
Easy IP是指进行地址转换时直接使用NAT路由器的出口(外部网络接口)的公有IP地址作为转换后的源地址,能够最大程度的节省IP地址资源。它同样也可以利用ACL控制哪些内部地址可以进行地址转换,但无需配置NAT地址池。具体的配置步骤如表7-5所示。
表7-5 Easy IP的配置步骤
步骤 | 命令 | 说明 |
Step 1 | system-view 例如: <Sysname>system-view | 进入系统视图 |
Step 2 | interfaceinterface-type interface-number 例如: [Sysname] interface serial 1/0 | 进入接口视图,仅可以是NAT路由器的出接口 |
Step 3 | nat outbound[acl-number] 例如: [Sysname-Serial1/0]nat outbound2001 | 配置ACL和以上出接口地址关联,实现Easy IP特性 |
【注意】当直接使用NAT路由器出接口地址作为NAT转换后的外部IP地址时,如果修改了出接口IP地址,则应该首先使用reset nat session命令清除原NAT地址映射表项,否则就会出现原有NAT表项不能自动删除,也无法使用reset nat session命令删除的情况。
以上配置步骤中的
nat outbound
与在7.2.2节介绍的该命令功能是一样的,但此时仅参数ACL这一个参数,在此不再赘述。