三、BGP的配置实例

上面的BGP理论啰嗦了那么多,其实真正的配置倒很简单(这也符合网络的特色),来个实验图配置一下吧!网络拓扑如下:

BGP里面怎么匹配奇偶网段 bgp配置实例_网络

 

01需求如下

1、AS 200内部使用OSPF协议使AS 200内部互通,并在AS 200内部各个路由器上都运行BGP协议(R1和R2、R3建立邻居关系,R4和R2、R3及R5建立邻居关系,),各个AS之间运行BGP协议。

2、分别在R1和R5使用BGP协议宣告21.0.0.0/24和20.0.0.0/24,使所有路由器学到这两条路由信息。

3、通过BGP的属性控制选路,实现PC 1→R1→R2→R4→R5→PC 2→R5→R4→R3→R2→R1→PC 1的路由通信。顺便将多个控制选路的方法测试一下。

4、在R2、R3和R4路由器上分别向BGP协议中注入本地的OSPF路由信息,使全网互通(虽然在第三个要求实现了控制路由选路,但是并不意味着PC1可以ping通任何一个路由器,比如R2)。

5、为了引出EBGP多跳的配置,尝试一下R1和R4直接建立对等体关系。

02开始配置

1、自行配置各个PC、路由器物理接口及loopback接口的IP地址(我是懒癌晚期患者,请多多担待),路由器IP配置参考:

<R1>sys

[R1]in g0/0/0

[R1-GigabitEthernet0/0/0]ip add 12.1.1.1 24

[R1-GigabitEthernet0/0/0]int loop 0

[R1-LoopBack0]ip add 1.1.1.1 32

2、配置AS 200内部的OSPF路由协议:

R2路由器配置如下:

[R2]ospf 1

[R2-ospf-1]area 0

[R2-ospf-1-area-0.0.0.0]net 2.2.2.2 0.0.0.0

[R2-ospf-1-area-0.0.0.0]net 12.1.1.0 0.0.0.255

[R2-ospf-1-area-0.0.0.0]net 24.1.1.0 0.0.0.255

R3路由器配置如下(相应注释请参考R2):

[R3]ospf 1

[R3-ospf-1]area 0

[R3-ospf-1-area-0.0.0.0]net 3.3.3.3 0.0.0.0

[R3-ospf-1-area-0.0.0.0]net 13.1.1.0 0.0.0.255

[R3-ospf-1-area-0.0.0.0]net 34.1.1.0 0.0.0.255

R4路由器配置如下(相应注释请参考R2):

[R4]ospf 1

[R4-ospf-1]area 0

[R4-ospf-1-area-0.0.0.0]net 4.4.4.4 0.0.0.0

[R4-ospf-1-area-0.0.0.0]net 24.1.1.0 0.0.0.255

[R4-ospf-1-area-0.0.0.0]net 34.1.1.0 0.0.0.255

3、开始配置BGP,使相应路由器为邻居关系:

R1配置如下:

[R1]bgp 100

[R1-bgp]router-id 1.1.1.1

[R1-bgp]peer 12.1.1.2 as 200

[R1-bgp]peer 13.1.1.3 as 200

[R1-bgp]network 21.0.0.0 24

由于配置BGP时,很多重复性的命令,所以,没有特别不一样的配置时,就不写注释了

R2配置如下:

[R2]bgp 200

[R2-bgp]router-id 2.2.2.2

[R2-bgp]peer 12.1.1.1 as 100

[R2-bgp]peer 4.4.4.4 as 200

[R2-bgp]peer 4.4.4.4 connect-interface LoopBack 0

[R2-bgp]peer 4.4.4.4 next-hop-local

R3配置如下:

[R3]bgp 200

[R3-bgp]router-id 3.3.3.3

[R3-bgp]peer 13.1.1.1 as 100

[R3-bgp]peer 4.4.4.4 as 200

[R3-bgp]peer 4.4.4.4 connect-interface LoopBack 0

[R3-bgp]peer 4.4.4.4 next-hop-local

R4配置如下:

[R4]bgp 200

[R4-bgp]router-id 4.4.4.4

[R4-bgp]peer 2.2.2.2 as 200

[R4-bgp]peer 3.3.3.3 as 200

[R4-bgp]peer 2.2.2.2 next-hop-local

[R4-bgp]peer 3.3.3.3 next-hop-local

[R4-bgp]peer 2.2.2.2 connect-interface LoopBack 0

[R4-bgp]peer 3.3.3.3 connect-interface LoopBack 0

[R4-bgp]peer 45.1.1.5 as 300

R5配置如下:

[R5]bgp 300

[R5-bgp]router-id 5.5.5.5

[R5-bgp]peer 45.1.1.4 as 200

[R5-bgp]network 20.0.0.0 24

现在BGP的邻居关系已经建立完成,可以通过以下命令查看:

[R1]dis bgp peerBGP local router ID : 1.1.1.1 Local AS number : 100 Total number of peers : 2 Peers in established state : 2 Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv 12.1.1.2 4 200 5 8 0 00:02:11 Established 1 13.1.1.3 4 200 7 10 0 00:04:34 Established 1

至此,PC 1已经可以和PC 2进行通信了,当然是BGP协议做的咯,但是现在除了非直连网段及AS 200内部路由器以外,也只有PC1和PC2可以通信,如PC1并不能ping通R2路由器。

4、开始做第三个需求,通过BGP的属性控制选路,实现PC 1→R1→R2→R4→R5→PC 2→R5→R4→R3→R2→R1→PC 1的路由通信。

先使用tracert命令查看PC1和PC2通信时的路由,看看都是经过哪个路由器。

PC1到达PC5所经过的路由器如下:

PC>tracert 20.0.0.1 #使用tracert命令进行查看

traceroute to 20.0.0.1, 8 hops max

(ICMP), press Ctrl+C to stop1 21.0.0.254 <1 ms 16 ms 15 ms 2 12.1.1.2 16 ms 15 ms 16 ms 3 24.1.1.4 31 ms 32 ms 31 ms 4 45.1.1.5 31 ms 47 ms 31 ms 5 *20.0.0.1 31 ms 32 ms

PC5到达PC1所经过的路由器如下:

PC>tracert 21.0.0.1

traceroute to 21.0.0.1, 8 hops max

(ICMP), press Ctrl+C to stop1 20.0.0.254 15 ms <1 ms 16 ms 2 45.1.1.4 16 ms 31 ms 16 ms 3 24.1.1.2 31 ms 31 ms 31 ms 4 12.1.1.1 47 ms 16 ms 47 ms 5 21.0.0.1 31 ms 31 ms 31 ms

来吧,开始配置选路问题(共三个方法可实现):

实现方法1:修改Local-Perf属性来改变R3路由器的优先级

在R3路由器上配置如下:

[R3]route-policy lop permit node 10

Info: New Sequence of this List.

[R3-route-policy]apply local-preference 222

[R3-route-policy]quit

[R3]bgp 200

[R3-bgp]peer 4.4.4.4 route-policy lop export

[R3-bgp]quit

[R3]quit<R3>reset bgp all

此时再查看PC5到达PC1所经过的路由器,就发现中间不经过R2路由器,而经过了R3路由器到达的PC1,如下:

PC>tracert 21.0.0.1

traceroute to 21.0.0.1, 8 hops max

(ICMP), press Ctrl+C to stop

1 20.0.0.254 <1 ms 16 ms 16 ms 2 45.1.1.4 15 ms 16 ms 31 ms 3 34.1.1.3 31 ms 32 ms 31 ms 4 13.1.1.1 47 ms 31 ms 47 ms 5 *21.0.0.1 47 ms 31 ms

实现方法2:使用AS-PATH属性控制选路

为了还原最初走R2的效果,需要清除上一步R3路由器配置的Local-Perf属性,在R3路由器执行以下命令进行删除:

[R3]bgp 200

[R3-bgp]undo peer 4.4.4.4 route-policy lop export

删除后,稍等会可以自行查看,PC2和PC1时是否又恢复了走R2路由器而不走R3。

然后在R2路由器修改AS-PATH属性(就是让R2路由器在向R4路由器通告21.0.0.0网段时,告诉R4经过了好多区域,当然,这些区域是虚造出来的,这个区域数肯定比R3所经过的区域数多,所以R4就会选择走R3而不走R2,因为要走最优路径嘛):

R2配置如下:

[R2]route-policy as permit node 10

Info: New Sequence of this List.

[R2-route-policy]apply as-path 123 123 123 add

[R2-route-policy]quit

[R2]bgp 200

[R2-bgp]peer 4.4.4.4 route-policy as export

[R2-bgp]quit

[R2]quit<R2>reset bgp all

现在在PC2再测试一下,会发现又开始走R3路由器了:

PC>tracert 21.0.0.1

traceroute to 21.0.0.1, 8 hops max

(ICMP), press Ctrl+C to stop

1 20.0.0.254 16 ms <1 ms 15 ms 2 45.1.1.4 32 ms 15 ms 31 ms 3 34.1.1.3 16 ms 31 ms 32 ms 4 13.1.1.1 31 ms 31 ms 31 ms 5 *21.0.0.1 47 ms 31 ms

实现方法3:使用MED属性控制选路

在一开始测试过,PC1去往PC5是经过R2路由器,而不是R3路由器,那么现在就增加R2路由器的MED属性并通告给R1路由器,使它经过R3路由器而不是R2路由器。

[R2]route-policy med permit node 10

Info: New Sequence of this List.

[R2-route-policy]apply cost + 500

[R2-route-policy]quit

[R2]bgp 200

[R2-bgp]peer 12.1.1.1 route-policy med export

[R2-bgp]quit

[R2]quit<R2>reset bgp all

在PC1测试一下:

PC>tracert 20.0.0.1

traceroute to 20.0.0.1, 8 hops max

(ICMP), press Ctrl+C to stop

1 21.0.0.254 16 ms <1 ms 16 ms 2 13.1.1.3 15 ms 16 ms 15 ms 3 34.1.1.4 47 ms 16 ms 16 ms 4 45.1.1.5 31 ms 31 ms 31 ms 5 *20.0.0.1 32 ms 31 ms

已经改走R3路由器了,说明配置生效,通过这三个选路的实现方法不难发现,BGP控制选路主要都是通过BGP属性值来调整完成的。BGP包含大量的属性,而这些属性直接影响着选路,所有BGP比IGP具有更强大的控制能力。

5、第四个需求:在R2、R3和R4路由器上分别向BGP协议中注入本地的OSPF路由信息,使全网互通。

R2路由器:

[R2]bgp 200[R2-bgp]import-route ospf 1

其余路由器配置基本一致:

R3:

[R3]bgp 200[R3-bgp]import-route ospf 1

R4:

[R4]bgp 200[R4-bgp]import-route ospf 1

自行查看各路由器的路由条目验证吧!文章末尾有相关查看命令。

6、第五个需求:尝试一下R1和R4直接建立对等体关系。

R1配置如下:

[R1-bgp]bgp 100[R1-bgp]peer 34.1.1.4 as 200[R1-bgp]peer 34.1.1.4 ebgp-max-hop 2

R4配置如下

[R4]bgp 200

[R4-bgp]peer 13.1.1.1 as 100

[R4-bgp]peer 13.1.1.1 eb

[R4-bgp]peer 13.1.1.1 ebgp-max-hop 2

查看验证(可能需要等一会才可建立邻居成功,等待时间不会超过两分钟)

[R1-bgp]dis bgp peer BGP local router ID : 1.1.1.1 Local AS number : 100 Total number of peers : 3 Peers in established state : 3 Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv 12.1.1.2 4 200 27 38 0 00:17:49 Established 8 13.1.1.3 4 200 55 70 0 00:45:35 Established 8 34.1.1.4 4 200 12 13 0 00:00:02 Established 8

相关查看命令:

[R4]dis ip routing-table

[R4]dis ospf routing

[R4]dis bgp peer

[R1-bgp]dis bgp peer

四、配置总结

在配置过程中需要注意以下几点,以免出现错误:1、在建立邻居关系,指定对端路由器地址前,务必保证可以ping通对端路由器。2、AS内部建立BGP邻居关系时,最好指定对方的Loopback地址,但不要忘记更新源,参考命令:“ [R3-bgp]peer 4.4.4.4 connect-interface LoopBack 0 ” 。3、若在AS内部有一个以上的的路由器运行着BGP协议,对于AS内部来说,这也是IBGP协议,不要忘记更改下一跳的属性,也就是前面提到的“保证IBGP下一跳可达”,命令参考:“[R4-bgp]peer 2.2.2.2 next-hop-local”4、前面说到,若在两个不同AS区域的路由器上建立邻居关系,哪怕这两个路由器是直连的,也要改变它的TTL值,目的是让路由器之间用来建立邻居关系的数据包,可以多经过几个路由器,再被丢弃。因为虽然不同AS的路由器是直连的,只有一跳即可,但是由于指定的是对端路由器的loopback地址,loopback地址的网段肯定与路由器直连的网段不是同一个网段,路由器收到该数据包后就把它当成另一个路由器上的地址了。所以在两个AS间建立邻居关系时,一定要改变它的跳数,IBGP之间建立邻居关系就不用改变TTL值了,因为在IBGP中,数据包的TTL值默认为255。改变TTL值的参考命令:“ [R1-bgp]peer 34.1.1.4 ebgp-max-hop 2 ”这条命令,需要跳几下就把数值设置为几就行,可以比实际跳数大,但是不能比实际跳数小。