实验一:
BGP的基本配置
实验需求:

  1. 建立BGP邻居
  2. 查看邻居信息

    实验步骤一:为接口配置IP地址
    [R1-GigabitEthernet0/0/0]ip ad 192.168.12.1 24
    [R2-GigabitEthernet0/0/1]ip ad 192.168.12.2 24
    [R2-GigabitEthernet0/0/0]ip ad 192.168.23.1 24
    [R4-GigabitEthernet0/0/0]ip ad 192.168.23.2 24
    [R4-GigabitEthernet0/0/1]ip ad 192.168.34.1 24
    [R5-GigabitEthernet0/0/0]ip ad 192.168.34.2 24
    [R5-GigabitEthernet0/0/1]ip ad 192.168.45.1 24
    [R3-GigabitEthernet0/0/0]ip ad 192.168.45.2 24
    [R3-GigabitEthernet0/0/1]ip ad 192.168.56.1 24
    [R6-GigabitEthernet0/0/0]ip ad 192.168.56.2 24
    实验步骤二:建立BGP邻居关系
    [R1]bgp 100 #创建bgp AS区域为100
    [R1-bgp]router-id 1.1.1.1 #将路由的router-id修改(以便区别)
    [R1-bgp]peer 192.168.12.2 as-number 200 #建立邻居关系写与对方直连接口的IP地址并且写上对方的AS区域号
    [R2]bgp 200 #在R2上创建bgp AS区域为200
    [R2-bgp]router-id 2.2.2.2 #将路由器的router-id修改(以便区别)
    [R2-bgp]peer 192.168.12.1 as-number 100 #建立邻居关系写与对方直连接口的IP地址并且写上对方的AS区域号
    [R2]display bgp peer #查看R1和R2邻居关系表
    ![

]()
红色就是代表建立邻居成功
前面的时间越上越好(只限于在建立好的状态下最好)
所有对应区域都需要这么配置,按照AS区域号建立邻居
[R3]bgp 200 #在R3上创建bgp AS区域为200
[R3-bgp]router-id 3.3.3.3 #将路由的router-id修改(以便区别)
[R3-bgp]peer 192.168.56.2 as-number 600 #建立邻居关系写与对方直连接口的IP地址并且写上对方的AS区域号
[R6]bgp 600 #在R6上创建bgp AS区域为600
[R6-bgp]router-id 6.6.6.6 #将路由的router-id修改(以便区别)
[R6-bgp]peer 192.168.56.1 as-number200 #建立邻居关系写与对方直连接口的IP地址并且写上对方的AS区域号
总结:

  1. 上述只是建立邻居的过程,但是并没有同步数据库信息。
  2. 因为BGP属于外部路由协议所有AS100和AS600属于外部路由协议,AS200之间需要运行内部路由协议OSPF所有BGP只配到AS100和AS600就可以,中间 的AS200配置ospf
    实验二:
    实验需求:
  3. 配置内部路由协议(AS200需要配置)ospf。都配置成骨干区域就可以
    实验步骤一:
    将AS200配置为ospf
    [R2]ospf 1 router-id 2.2.2.2 #将ospf1 修改router-id (这里的router-id和bgp 的router-id是不冲突的自己运行自己的)
    [R2-ospf-1]area 0 #进入到骨干区内(0代表骨干区)
    [R2-ospf-1-area-0.0.0.0]network 192.168.23.1 0.0.0.0 #将自己直连的网段宣告进去
    [R4]ospf 1 router-id 4.4.4.4 #将ospf1 修改router-id (这里的router-id和bgp 的router-id是不冲突的自己运行自己的)
    [R4-ospf-1]area 0 #进入到骨干区内(0代表骨干区)
    [R4-ospf-1-area-0.0.0.0]network 192.168.23.2 0.0.0.0 #将自己直连的网段宣告进去

[R4-ospf-1-area-0.0.0.0]network 192.168.34.1 0.0.0.0 #将自己直连的网段宣告进去
[R5]ospf 1 router-id 5.5.5.5 #将ospf1 修改router-id (这里的router-id和bgp 的router-id是不冲突的自己运行自己的)
[R5-ospf-1]area 0 #进入到骨干区内(0代表骨干区)
[R5-ospf-1-area-0.0.0.0]network 192.168.34.2 0.0.0.0 #将自己直连的网段宣告进去
[R5-ospf-1-area-0.0.0.0]network 192.168.45.1 0.0.0.0 #将自己直连的网段宣告进去
[R3]ospf 1 router-id 3.3.3.3#将ospf1 修改router-id (这里的router-id和bgp 的router-id是不冲突的自己运行自己的)
[R3-ospf-1]area 0 #进入到骨干区内(0代表骨干区)
[R3-ospf-1-area-0.0.0.0]network 192.168.45.2 0.0.0.0 #将自己直连的网段宣告进去

[R2]bgp 200 #进入到BGP200内
[R2-bgp]peer 192.168.45.2 as-number 200 #建立邻居连接,直接写想建立连接邻居的IP地址以及他的AS区域号
[R3]bgp 200 #进入到BGP200内
[R3-bgp]peer 192.168.23.1 as-number 200 #建立邻居连接,直接写想建立连接邻居的IP地址以及他的AS区域号,并且查看
将外网的As区域建立邻居关系(也就是说AS100和AS600要建立邻居关系)因为BGP是第七层的协议所有可以跨越中间设备直接建立邻居,前提是必须要让AS200这个区域互通才可以做到。
[R1-LoopBack1]ip ad 10.10.1.1 24 #创建一个回环接口
[R1-bgp]network 10.10.1.0 24 #将新创建的回环接口的网段在bgp中宣告
总结:

  1. ospf和bgp 的router-id是不冲突的但是都需要手动修改可以重复的叫,因为是两个协议
  2. bgp是基于七层的协议,所有必须要把下面层的协议搞通才能做bgp,所有要先做ospf在做bgp。
    实验三:
    需求:
    R1通过network的方式宣告自己的loopback 0 进入到bgp中,传递给R6,能让R6学习到
    问题:
    R3上的数据库中,BGP的路由不是最好的。
    原因:
    是因为在R3上BGP的数据库条目的下一跳是R2另外一个网段的接口地址,而不是与R3建立邻居所用的接口地址。
    解决方案:
    在R2上修改 发送给R3的那些路由的下一跳地址该为建邻居的地址
    [R1-LoopBack1]ip ad 10.10.1.1 24 #创建一个回环接口
    [R1-bgp]network 10.10.1.0 24 #将新创建的回环接口的网段在bgp中宣告
    [R1]display bgp routing-table #查看BGP数据库

    在R2上查看BGP数据库的时候是最好的路由条目(红色区域只有>就是最好的路径)

    在R3 上查看BGP数据库的时候就不是最好的路径(红色圈里没有>所以不是最好路径),而且下一跳的地址(nethop)R3不认识,因为当初不是和这个接口地址建立的邻居,所有将下一跳地址改为当时建立邻居的地址(在R2上修改)
    [R2-bgp]peer 192.168.45.2 next-hop-local #在R2上进入到BGP200这个区域,写一条以后R2发送给45.2这个邻居所有的路由的下一跳地址都变成了自己的本地 地址(当初与R3建立BGP邻居关系时所用的IP地址)

    [R6-LoopBack0]ip ad 10.10.6.1 24 #在R6上创建一个回环口
    [R6-bgp]network 10.10.6.0 24 #将新创建的回环口地址宣告一下
    [R3-bgp]peer 192.168.23.1 next-hop-local #在R3上进入到BGP200这个区域,写一条以后R3发送给23.1这个邻居所有的路由的下一跳地址都变成了自己的本地 地址(当初与R3建立BGP邻居关系时所用的IP地址)
    [R2-ospf-1]import-route bgp #在进入到OSPF内将bgp导入进去(也就是宣告)
    [R3-ospf-1]import-route bgp #R3也是一样的操作。
    注意将bgp导入ospf一定要在,既有ospf又有bgp的路由器上导入,最后测试。10.10.1.1能不能ping通10.10.6.1
    ping -a 10.10.1.1 10.10.6.1 #用这条命令实验能不能ping通(加入-a以改变源地址后面加源地址,在加想要ping 的地址)
    总结:
    将bgp导入进ospf内以后在ospf区域生成了多个条目的5类lsa,造成了影响我ospf区域内网络的稳定性。
    Bgp的特点就是默认引进的是外部路由,不会引进内部路由(这里的内外指的是AS相同就是内部,不相同就是外部)
    这个实验是一个错误的示范,是因为BGP是传输公网上的路由协议(传输量大),如果将BGP导入以后会导致内部的OSPF瘫痪(因为OSPF同时只能传输几千条数据,而BGP可以传输大量的数据)

实验需求:
现在BGP的邻居关系(R2和R3)是通过实际的物理接口建立的,如果物理接口坏掉了怎么办?
解决方法:
分别在两个设备上建立回环接口,并且建立BGP的邻居关系
[R2-LoopBack0]ip ad 10.10.10.1 24 #创建回环接口
[R2-ospf-1-area-0.0.0.0]network 10.10.10.1 0.0.0.0 #将新创建的回环接口网段加入到ospf area0 区域中,让两个回话接口能ping同
[R2-bgp]peer 10.10.9.1 as-number 200 #与另外一段的回环接口创建邻居关系
[R2-bgp]peer 10.10.9.1 connect-interface LoopBack 0 #建立邻居的时候是通过回环接口loopback0这个接口去创建去(如果不写这条命令,建立邻居的时候就会按照接口的IP地址去和对方的回环接口去创建)
[R3-LoopBack0]ip ad 10.10.9.1 24 #创建回环接口
[R3-ospf-1-area-0.0.0.0]network 10.10.9.1 0.0.0.0 #将新创建的回环接口网段加入到ospf area0 区域中,让两个回话接口能ping同
[R3-bgp]peer 10.10.10.1 as-number 200 #与另外一段的回环接口创建邻居关系
[R3-bgp]peer 10.10.10.1 connect-interface LoopBack 0 #建立邻居的时候是通过回环接口loopback0这个接口去创建去(如果不写这条命令,建立邻居的时候就会按照接口的IP地址去和对方的回环接口去创建)
总结:
BGP建立邻居时,存在一个机制:
更新源检测机制。
即,当BGP路由器收到一个BGP报文时,这个BGP报文的源IP地址,必须和自己本地配置的peer命令后面的IP地址得相同。(也就是说BGp发出的报文不是回环接口的IP地址而是出接口的IP地址,因此对端是不会识别这个接口的地址,因为当时设置的时候是回环口的地址)
所以,通过“回环接口”建立BGP邻居时,必须得修改BGP报文的源IP地址。
display tcp status #查看协议连接的状态
实验需求:
利用ACL技术不让R2和R3的回环接口建立邻居
[R2-acl-adv-3000]rule 10 deny tcp source 10.10.9.1 0.0.0.0destination 10.10.10.1 0.0.0.0 destination-port eq 179 #拒绝TCp中的BGP协议传输抓包看源IP地址和目标IP地址(创建acl 3000)
[R2-GigabitEthernet0/0/0]traffic-filter inbound acl 3000 #在接口上调用acl3000
[R3-acl-adv-3000]rule 5 deny tcp source 10.10.10.1 0 destination 10.10.9.1 0 destination-port eq 179 #拒绝TCp中的BGP协议传输抓包看源IP地址和目标IP地址(创建acl 3000)
[R3-GigabitEthernet0/0/0]traffic-filter inbound acl 3000 #在接口上调用acl3000
总结:
如果想要干掉BGP的连接如要在创建双向的ACl才能彻底的干掉BGP的连接,如果单方向干掉,默认的还会重新建立连接。