本文是一个非常实用的BGP团体属性过滤器应用配置实验,介绍了基于同一用户需求的两种不同配置方案,并且均有完整的配置结果验证过程。通过本实验,可以充分理解团体属性过滤器的作用,以及灵活应用的配置思路和配置方法。
如图8-78所示,某网络中各路由器均运行BGP路由协议,各相邻路由器之间建立对应的BGP对等体关系。一开始用户要求通过Community属性及Community Filter实现RouterE上连接的用户不能访问RouterC上连接的192.168.2.0/24、172.16.0.0/24这两个网段,以及RouterB上连接的172.16.1.0/24网段的用户,后来又要求RouterD也不能访问RouterB上连接的172.16.1.0/24网段用户,其他用户间的访问不受限制。

图8-78 Community Filter应用配置示例的拓扑结构
1.基本配置思路分析
要实现本示例最初的要求,可以在RouterC上配置在向RouterB通告192.168.2.0/24、172.16.0.0/24这两个网段的BGP路由,以及RouterB向RouterA通告172.16.1.0/24网段的BGP路由时添加一个特定的团体属性,如100:1,并依次在RouterB上配置向RouterA、在RouterA上配置向RouterD通告BGP路由时携带团体属性。然后在RouterD上创建Community Filter,设置在向RouterE通告BGP路由时,或者在RouterE上创建Community Filter,设置在从RouterD接收BGP路由时过滤192.168.2.0/24、172.16.0.0/24、172.16.1.0/24这三个网段的BGP路由,以实现RouterE不能访问这三个网段用户的目的。
至于后来又想要RouterD也不能访问172.16.1.0/24网段的用户,此时可以使RouterB向RouterA通告该网段BGP路由时修改配置,同时打上100:1和NO-EXPORT两个团体属性即可,这样就不能向其EBGP对等体RouterD进行通告了。
BGP路由的Community属性和Community Filter都是在完成基本BGP功能配置基础上进行配置的。根据以上分析可得出本示例如下基本配置思路。
(1)配置各路由器接口的IP地址。
(2)在AS 100内通过OSPF实现三层互通,包括各Loopback接口,但不包括连接EBGP对等体的接口。
(3)配置各路由器的BGP基本功能和路由器反射器功能,并分别将各路由上的Loopback接口所在网段的路由通过network 命令(也可以是import-route命令)引入到BGP路由表中。
(4)在RouterC上配置在向RouterB通告192.168.2.0/24和172.16.0.0/24这两个网段BGP路由,以及在RouterB上配置向RouterA通告172.16.1.0/24网段BGP路由时设置团体属性为100:1,并在RouterB上配置向RouterA、在RouterA向RouterD通告路由时携带团体属性。
(5)在RouterD上创建Community Filter过滤器,拒绝向RouterE发布带有100:1团体属性的BGP路由,或者在RouterE上创建Community Filter过滤器,拒绝接收带有100:1团体属性的BGP路由。
(6)在RouterB配置向RouterA通告172.16.1.0/24网段BGP路由时同时携带100:1和NO_EXPORT两个团体属性,使其不能向外部AS传递,但可以本地AS内部传递。
- 具体配置步骤
(1)配置各路由器的接口IP地址。在此仅介绍RouterA上的配置,其他路由器上的配置方法一样,略。须把AS 100中各路由器上的Loopback接口的OSPF网络类型改成广播类型,否则只能生成32位掩码OSPF路由。
<Huawei > system-view
[ Huawei**] system-name**RouterA
RouterA\]**interface**gigabitethernet 0/0/0 \[RouterA-GigabitEthernet0/0/0\]**ip address**10.1.1.1 24 \[RouterA-GigabitEthernet0/0/0\]**quit** \[RouterA\]**interface**gigabitethernet 0/0/1 \[RouterA-GigabitEthernet0/0/1\]**ip address**10.1.2.1 24 \[RouterA-GigabitEthernet0/0/1\]**quit** \[RouterA\]**interface**loopback0 \[RouterA-Loopback0\]**ip address**192.168.1.1 24 \[RouterA-Loopback0\] **ospf network-type broadcast**#---指定Loopback0接口为广播网络类型 \[RouterA-Loopback0\]**quit** (2)在AS 100内通过OSPF实现三层互通,包括各Loopback接口,但不包括连接EBGP对等体的接口。 假设各设备均运行1号OSPF进程(相邻设备的OSPF路由进程可以不同),加入到区域0中。在此仅以RouterA为例进行介绍,其他路由器上的OSPF路由配置方法一样,参照即可。 \[RouterA\] **ospf** 1 \[RouterA-ospf-1\] **area** 0 \[RouterA-ospf-1-area-0.0.0\] **network** 10.1.1.0 0.0.0.255 \[RouterA-ospf-1-area-0.0.0\] **network** 192.168.1.0 0.0.0.255 \[RouterA-ospf-1-area-0.0.0\] **quit** \[RouterA-ospf-1\] **quit** (3)配置各路由器的BGP基本功能和路由反射器功能。各对等体间使用直连物理接口建立TCP连接,RouterA\~RouterE五台路由器的Router ID分别配置为1.1.1.1\~5.5.5.5,并在将各路由器上的Loopback接口对应网段路由引入到BGP路由表中。 因为IBGP路由只能传一跳,所以缺省情况下,来自RouterC的BGP路由是不能通过RouterB再传递到RouterA,来自RouterA路由也不能通过RouterB传递给RouterC。为此,把RouterB配置为RR,把RouterC作为他的客户端,这样RouterB在收到来自RouterA或RouterC的BGP路由时就可以反射给对方了。但要注意,反射路由不会改变BGP路由的下一跳属性,所以需要在AS 100中通过IGP(本示例采用OSPF)实现三层互通,并且在RouterA上配置向RouterB发布路由时把下一跳改为自己与RouterB建立TCP连接时的源IP地址,否则RouterB上收到来自RouterA的外部AS路由时可能无效。 1. RouterA上的配置。 \[RouterA\] **bgp** 100 \[RouterA-bgp\] **router** -**id** 1.1.1.1 \[RouterA-bgp\] **peer** 10.1.1.2 **as** -**number** 100 \[RouterA-bgp\] **peer** 10.1.1.2 **next-hop-local**#---指定向RouterB通告IBGP路由时把下一跳改为自己的TCP连接源IP地址,使RouterB收到外部AS路由时有效 \[RouterA-bgp\] **peer** 10.1.2.2 **as** -**number** 200 \[RouterA-bgp\] **network** 192.168.1.0 24 1. RouterB上的配置。 \[RouterB\] **bgp** 100 \[RouterB-bgp\] **router** -**id** 2.2.2.2 \[RouterB-bgp\] **peer** 10.1.1.1 **as** -**number** 100 \[RouterB-bgp\] **peer** 10.1.3.2 **as** -**number** 100 \[RouterB-bgp\]**peer** 10.1.3.2 **reflect-client**#---配置RouterB为RR,并把RouterC作为其客户端 \[RouterB-bgp\]**network** 172.16.1.0 24 1. RouterC上的配置。 \[RouterC\] **bgp** 100 \[RouterC-bgp\] **router** -**id** 3.3.3.3 \[RouterC-bgp\] **peer** 10.1.3.1 **as** -**number** 100 \[RouterC-bgp\] **network** 192.168.2.0 24 \[RouterC-bgp\] **network** 172.16.0.0 24 1. RouterD上的配置。 \[RouterD\] **bgp** 200 \[RouterD-bgp\] **router** -**id** 4.4.4.4 \[RouterD-bgp\] **peer** 10.1.2.1 **as** -**number** 100 \[RouterD-bgp\] **peer** 10.1.4.2 **as** -**number** 300 1. RouterE上的配置。 \[RouterE\] **bgp** 300 \[RouterE-bgp\] **router** -**id** 5.5.5.5 \[RouterE-bgp\] **peer** 10.1.4.1 **as** -**number** 200 \[RouterE-bgp\] **network** 192.168.0.0 24 以上配置好后,在RouterE上执行**display bgp routing-table** 命令,可看到他已学习到了所引入的全部5个网段的BGP路由,包括RouterC上连接的192.168.2.0/24和172.16.0.0/24两个网段的BGP路由,如图8-79所示。在RouterD上执行**display bgp routing-table**命令结果也一样,参见图8-79所示。  图8-79 配置团体属性过滤前,RouterE上的BGP路由表 (4)在RouterC上配置在向RouterB通告192.168.2.0/24和172.16.0.0/24这两个网段BGP路由,以及在RouterB上配置向RouterA通告172.16.1.0/24网段BGP路由时设置团体属性为100:1,允许携带团体属性,并在RouterB上配置向RouterA、在RouterA向RouterD通告路由时携带团体属性。 BGP路由的团体属性是通过路由策略配置的,所以先需要创建路由策略,匹配对应的BGP路由网段,然后为该网段的BGP路由设置团体属性。本示例采用ACL作为策略匹配工具,也可以采用IP前缀列表。 1. RouterC上的配置 \[RouterC\] **acl**2000 \[RouterC-basic-acl-2000\] **rule** 5 **permit** **source** 192.168.2.0 0.0.0.255 \[RouterC-basic-acl-2000\] **rule** 10 **permit** **source** 172.16.0.0 0.0.0.255 \[RouterC-basic-acl-2000\] **quit** \[RouterC\] **route** -**policy** commu **permit** **node** 10 \[RouterC-route-policy\] **if** -**match** **acl** 2000 \[RouterC-route-policy\] **apply** **community** 100:1 \[RouterC-route-policy\] **quit** \[RouterC\] **route** -**policy** commu **permit** **node** 20 #---此允许模式的空节点用于允许其他路由不改变团体属性通过 \[RouterC-route-policy\] **quit** \[RouterC\] **bgp** 100 \[RouterC-bgp\] **peer** 10.1.3.1 **route** -**policy** commu **export** \[RouterC-bgp\] **peer** 10.1.3.1 **advertise** -**community**#---允许向RouterB发布BGP路由时携带团体属性 \[RouterC-bgp\] **quit** 1. RouterB上的配置 \[RouterB\] **acl**2000 \[RouterB-basic-acl-2000\] **rule** 5 **permit** **source** 172.16.1.0 0.0.0.255 \[RouterB-basic-acl-2000\] **quit** \[RouterB\] **route** -**policy** commu **permit** **node** 10 \[RouterB-route-policy\] **if** -**match** **acl** 2000 \[RouterB-route-policy\] **apply** **community** 100:1 \[RouterB-route-policy\] **quit** \[RouterB\] **route** -**policy** commu **permit** **node** 20 \[RouterB-route-policy\] **quit** \[RouterB\] **bgp** 100 \[RouterB-bgp\] **peer** 10.1.1.1 **route** -**policy** commu **export** \[RouterB-bgp\] **peer** 10.1.1.1 **advertise** -**community** \[RouterB-bgp\] **quit** 1. RouterA上的配置 \[RouterA\] **bgp** 100 \[RouterA-bgp\] **peer** 10.1.2.2 **advertise** -**community** \[RouterA-bgp\]**quit** 以上配置好后,可以在RouterA或RouterD上执行**display bgp routing-table** 192.168.2.0、**display bgp routing-table** 172.16.0.0 24、**display bgp routing-table** 172.16.1.0 24命令查看对应BGP路由的详细信息,可以见到他们均有携带前面所配置的团体属性100:1。图8-80是在RouterD上执行**display bgp routing-table** 192.168.2.0命令的输出,图8-81是在RouterD上执行**display bgp routing-table** 172.16.1.0命令的输出。 (5)在RouterD上创建Community Filter过滤器,拒绝向RouterE发布带有100:1团体属性的BGP路由,或者在RouterE上创建Community Filter过滤器,拒绝接收带有100:1团体属性的BGP路由。 方案一:在RouterD上创建并应用Community Filter过滤器 \[RouterD\]**ip community-filter** 1 **permit** 100:1 \[RouterD\] **route** -**policy** comm-filter **deny** **node** 10 \[RouterD-route-policy\] **if** -**match** **community** -**filter** 1 \[RouterD-route-policy\] **quit** \[RouterD\] **route** -**policy** comm-filter **permit** **node** 20 \[RouterD-route-policy\] **quit** \[RouterD\] **bgp** 200 \[RouterD-bgp\] **peer** 10.1.4.2 **route** -**policy** comm-filter **export**  图8-80 配置好团体属性后,RouterD上的192.168.2.0路由详细信息  图8-81 配置好团体属性后,RouterD上的172.16.1.0路由详细信息 以上配置完成后,再在RouterE上执行**display bgp routing-table**命令,会发现带有100:1团体属性的192.168.2.0/24、172.16.0.0/24和172.16.1.0/24三个网段的BGP路由不见了,但仍有其他两个网段的BGP路由,如图8-82所示。但RouterD 上仍有全部的5条BGP路由,如图8-83所示。  图8-82 配置好团体属性过滤器后,RouterE上的BGP路由表  图8-83 配置好团体属性过滤器后,RouterD上的BGP路由表 方案二:在RouterE上创建并应用Community Filter过滤器 采用此方案时,需要在RouterD上先配置向RouterE通告BGP路由时携带团体属性。 1. RouterD上的配置 \[RouterD\] **bgp** 200 \[RouterD-bgp\] **peer** 10.1.4.2 **advertise-community** 1. RouterE上的配置 \[RouterE\]**ip community-filter** 1 **permit** 100:1 \[RouterE\] **route** -**policy** comm-filter **deny** **node** 10 \[RouterE-route-policy\] **if** -**match** **community** -**filter** 1 \[RouterE-route-policy\] **quit** \[RouterE\] **route** -**policy** comm-filter **permit** **node** 20 \[RouterE-route-policy\] **quit** \[RouterE\] **bgp** 300 \[RouterE-bgp\] **peer** 10.1.4.1 **route** -**policy** comm-filter **import** 以上配置好后,可以达到同样的效果,RouterE没有被团体属性过滤器过滤掉的192.168.2.0/24、172.16.0.0/24和172.16.1.0/24三个网段的BGP路由。 (6)在RouterB配置向RouterA通告172.16.1.0/24网段BGP路由时同时携带100:1和NO_EXPORT两个团体属性。 因为一个对等体只能应用一个路由策略。原来已在RouterB上为向RouterA通告172.16.1.0/24网段BGP路由携带100:1团体属性时创建了一个路由策略commu,现在再要在该网段追加NO-EXPORT团体属性,只能修改原来添加团体属性的**apply** 语句,同时带上100:1和NO-EXPORT两个团体属性即可(注意:在一个路由策略节点,同类**aaply**命令只能有一个),具体如下。 \[RouterB\] **route** -**policy** commu **permit** **node** 10 \[RouterB-route-policy\] **apply** **community** 100:1 **no** -**export** \[RouterB-route-policy\]**quit** 以上配置完成后,在RouterA上执行**display bgp routing-table** 172.16.1.0 24 命令,可以见到其有两个团体属性了,如图8-84所示。此时再在RouterC上执行**display bgp routing-table**命令,发现BGP路由表中没有了172.16.1.0/24网段BGP路由了,如图8-85所示。因为带有NO-EXPORT属性的BGP路由不能向EBGP对等体通告,所以RouterA在收来自RouterB的该网段BGP路由后不能向RouterC通告,自然RouterC不能访问该网段用户了,达到了本实验的目的。  图8-84 在RouterB上修改了团体属性后,RouterA上172.16.1.0/24网段BGP路由详细信息  图8-85 在RouterB上修改了团体属性后,RouterD上的BGP路由表 本文摘自由笔者出版、读者高度首肯的++**《华为HCIP-Datacom路由交换学习指南》**++一书。 