2017年10月17日 星期二

26 - OSPF不規則區域解決


26 - OSPF不規則區域解決

哪些情況為OSPF不規則區域?
1. 被分割的區域0   區域0接區域1接區域0
2. 連續的區域設計。不是所有區域都接在區域0上。 區域0接區域1接區域2


不規則區域解決方案

1. OSPF多進程的雙向重分布
2. Tunnel   (GRE)
3. VL  (虛擬鏈路)   (OSPF)


Lo 22.1.1.1area 1Lo 33.1.1.1area 1
R1# show ip route ospf
R1可以收到R2環回口的路由,R1可以收到R3環回口的路由,R1不能收到R4環回口的路由。

44.1.1.1的路由收不到,因為區域2沒有掛在區域0上,只要掛在區域0的都能正常運作。

R4能收到R3的環回口路由嗎
R4# show ip route ospf
R4上什麼路由都沒有,沒辦法轉發任何數據。

現在要讓R4收到所有的路由,有三個方法


1. OSPF多進程的雙向重分布
重分布的概念就是把一個路由協定重分布到另外一個路由協定。

R3# show run | se ospf
R3上建立2OSPF進程,一個OSPF進程跟左邊跑區域1,一個OSPF進程跟右邊跑區域2,然後在把這2OSPF進程互相重分布。

R3(config)# no router ospf 1
R3(config)# router ospf 1
R3(config-router)# network 33.1.1.1 0.0.0.0 area 1
R3(config-router)# network 23.1.1.1 0.0.0.255 area 1
R3(config-router)# exit
上面專門跟左邊跑區域1,然後在做一個進程
R3(config)# router ospf 2       (這個進程號本地有效,本地區分的)
R3(config-router)# network 34.1.1.0 0.0.0.255 area 2


R3# show ip ospf neighbor
R3上用兩個進程來區分不同的鄰居關係


R3# show ip router ospf
上面這些路由是通過OSPF進程1學到的,44.0.0.0是通過OSPF進程2學到的。

然後在把這兩個不同的進程互相重分布

R3(config)# router ospf 1
R3(config-router)# redistribute ospf 2 subnets
R3(config-router)# exit
我把OSPF 2學過來的進程路由放在OSPF 1裡面去。
R3(config)# router ospf 2
R3(config-router)# redistribute ospf 1 subnets
反過來把OSPF 1學過來的進程路由放在OSPF 2裡面去。
雙進程的雙向重分布


R3# show run | se ospf 


R1# show ip router ospf
這時R1己收到R4的路由34.1.1.044.1.1.1


R4# show ip router ospf
原本R4什麼都收不到,現在所有路由都收到了。
只在R3設定了OSPF多進程的雙向重分布,其他都沒動。因為進程是本地有效



2. Tunnel   (GRE)


第二種和第三種的方法都是一樣的,既然我把區域2掛在區域1上面,我能不能在區域1上面打一條隧道(一條虛擬隧道),打完隧道後讓區域2感覺他是建在區域0上。(像似把區域1給透明掉了)


所以要在R2R3上配置
R2(config)# interface tunnel 0 
R2(config-if)# tunnel source 22.1.1.1
R2(config-if)# tunnel destination 33.1.1.1
然後給tunnel一個IP地址
R2(config-if)# ip address 100.1.1.1 255.255.255.0


R2# show run int tun 0
來原和目標首先要路由可到達,否則這個隧道建不起來。


同樣的也要在R3上配置
R3(config)# interface tunnel 0 
R3(config-if)# tunnel source 33.1.1.1
R3(config-if)# tunnel destination 22.1.1.1
R3(config-if)# ip address 100.1.1.2 255.255.255.0     (要同一個網段)


R3# show run int tun 0
最後在Ping對面的地址,可以通就可確定隧道已建立起來。

R3# ping 100.1.1.1



現在區域0和區域2還是分割的,中間只是加一條隧道線而己

現在要把新加進來的隧道也宣告進區域0裡面(新加的100.1.1.0的網段放進去區域0)

R2(config)# router ospf 1
R2(config-router)# network 100.1.1.0 0.0.0.255 area 0

R3(config)# router ospf 1
R3(config-router)# network 100.1.1.0 0.0.0.255 area 0 




這時候區域0就變大了,R1R2R3都在區域0裡面了,
現在只是把Tunnel 0(虛擬的線)宣告進區域0,原本的實線沒有宣告進區域0,實線還是區域1


R4# show ip router ospf 

R2R3中間可能有好多個路由器,中間是一條虛擬的線連在一起,在2ABR之間,把中間所有的路由器所有的線都透明掉了



3. VL  (虛擬鏈路)   (OSPF)

一樣是在做隧道,變成用OSPF的方法在做隧道
R2(config)# router ospf 1
R2(config-router)# area 1 virtual-link 33.1.1.1
virtual-link後面不是配置接口的IP地址,是要配置路由器的Router-ID
這個隧道是穿越區域1的,跟R3建立隧道
R3(config)# router ospf 1
R3(config-router)# area 1 virtual-link 22.1.1.1


R2# show run | se ospf 


R2# show ip ospf virtual-links
R2# clear ip ospf processes         (清鄰居)






2017年10月11日 星期三

35 – BGP綜合實驗


35 – BGP綜合實驗

OSPF基本配置
所有設備環回口010.10.X.X/24

OSPF配置
R1-R3在區域2中,R2-R4在區域1中,R4-R5區域0中。
1. 所有的RID均為10.10.X.X
2. Area 1不能用默認的網路類型,其他都用默認的網路類型。
3. R1-R5環回口可以在任何區域。
4. 在合適的路由器上做配置,使R5只能看到除直連以外的三條路由:10.10.1.0/2410.10.2.0/2410.10.3.0/24
  Distrbu-list
5. 配置使得area 2學到其他area的路由是從R2學到。
6. 除了R5以外 確保其他路由器都可以學到所有網段。


 BGP基本配置
1. 如圖AS歸屬。R2R3R5屬於AS 235,建立兩條iBGP鄰居,R5R2R5R3。要求建立盡可能長的TCP連接。
2. R4屬於64512,與R5建立一條eBGP鄰居關係。要求用兩台路由器的loopback 0建立;要求此TCP建立的session無論什麼情況都只能由R4發起,也就是說是通過R4的,隨機端口到R5179端口,R5不能主動發起與R4TCP連接要求;使用最小的eBGP多跳;不能用ACL和任何過濾。
R5做一條默認路由
 Show tcp bri
3. R1屬於AS 1,需要與R3建立一條eBGP session,要求R1R3只要路由可逹必須保持eBGP鄰居。
4. R1R2建立一條eBGP鄰居。要求R1不能出現eBGP關鍵字,R2不能出現UPDATE關鍵字;R2不能與R1fa 1/0建立eBGP鄰居;在R1做配置,當BGP建立時,無論如何都是從R1發起到R2 179端口,用ACL來完成。
R1 nei 1.1.123.2 up lo 0
        R2 nei 10.10.1.1 remot 1
              nei 10.10.1.1 eb

BGP高級配置
1. R5上把loopback 0宣告進BGP,在R4上觀察此路由一直在flappingR4上做配置解決此問題。
       Network 10.10.5.0 mask 255.255.255.0 backdoor
2. R5上,通過network宣告一條10.0.0.0/8的路由到BGP中,使此路由可以在除了R1以外的其他路由器上看到,此解決方法只能在R5BGP上做,不可以在任何地方增加接口或者靜或者OSPF彙總。
       Auto-su
       No-export
3. R4上增加一條環回口loopback 0 104 地址為
   104.1.1.1 255.255.255.0
   104.1.2.1 255.255.255.0 se
   104.1.3.1 255.255.255.0 se
   104.1.4.1 255.255.255.0 se
   104.1.5.1 255.255.255.0 se

    用最小的命令行把這些路由放進去BGP使R5看到這些路由的ORIGINE TYPEIGP
    重分佈直接
4. R5上做配置,使得R4傳過來的5條路由的AS-PATH均為 645136451464512
5. R2R3上做置,使得R1接受UPDATE時,這幾條的AS-PATH
235 1 235 使用最少的配置步驟和命令行。
6. R1上做配置,確保R1能收到這4條路由。
    Neighbor 10.10.3.3 allowas-in
7. R1上增加loopback 101地址101.1.1.1/24
    Loopback 102 101.1.2.1/24
    Loopback 103 101.1.3.1/24
    Loopback 104 101.1.4.1/24
    Loopback 105 101.1.5.1/24
    把這幾條路由宣告進BGP,使其他路由器可以看到這條路由的起源是IGP。可能出現環路,試著解決它。 (難度較大)
     Next-hop-unchange
8. R5上做配置,針對101.1.1.0/24這條路由,要求R5看到最優的路由是從R3過來的,用wigtht來做。
9. R5上做配置,針對101.1.2.0/24這條路由,要求R5看到最優的路由是從R3過來的,用local-preference來做。
10. R1上做配置,針對101.1.3.0/24這條路由,要求R5看到最優的路由是從R3過來的,用AS-PATH來做。
11. R1上做配置,針對101.1.4.0/24這條路由,要求R5看到最優的路由是從R3過來的,用origine來做。
12. R1上做配置,針對101.1.5.0/24這條路由,要求R5看到最優的路由是從R3過來的,用MED來做。




R1-R3在區域2中,R2-R4在區域1中,R4-R5區域0中。
1. 所有的RID均為10.10.X.X

R1(config)# router ospf 1
R1(config-router)# router-id 10.10.1.1
R1(config-router)# network 10.10.1.1 0.0.0.0 area 2  
R1(config-router)# network 100.1.1.0 0.0.0.255 area 2 

R2(config)# router ospf 1
R2(config-router)# router-id 10.10.2.2
R2(config-router)# network 10.10.2.2 0.0.0.0 area 2 
R2(config-router)# network 100.1.1.2 0.0.0.255 area 2
R2(config-router)# network 26.1.1.0 0.0.0.255 area 1


R2#show ip ospf interface brief
哪個接口宣告到哪個區域和哪個進程


R3(config)# router ospf 1
R3(config-router)# router-id 10.10.3.3
R3(config-router)# network 10.10.3.3 0.0.0.0 area 2 
R3(config-router)# network 100.1.1.0 0.0.0.255 area 2
R3(config-router)# network 36.1.1.0 0.0.0.255 area 1

R4(config)# router ospf 1
R4(config-router)# router-id 10.10.4.4
R4(config-router)# network 10.10.4.4 0.0.0.0 area 0 
R4(config-router)# network 46.1.1.0 0.0.0.255 area 1
R4(config-router)# network 45.1.1.0 0.0.0.255 area 0 

R5(config)# router ospf 1
R5(config-router)# router-id 10.10.5.5
R5(config-router)# network 10.10.5.5 0.0.0.0 area 0 
R5(config-router)# network 45.1.1.0 0.0.0.255 area 0 

R6(config)# router ospf 1
R6config-router)# router-id 10.10.6.6
R6(config-router)# network 0.0.0.0 0.0.0.0 area 1 
偷懶的方式

2. Area 1不能用默認的網路類型,其他都用默認的網路類型。

R2(config)# interface s 1/0
R2(config-if)# ip ospf network point-to-multipoint
R3(config)# interface s 1/0
R3(config-if)# ip ospf network point-to-multipoint  

R4(config)# interface s 0/0
R4(config-if)# ip ospf network point-to-multipoint

R6(config)# interface s 0/0
R6(config-if)# ip ospf network point-to-multipoint 
R6(config)# interface s 0/1
R6(config-if)# ip ospf network point-to-multipoint 
R6(config)# interface s 0/2
R6(config-if)# ip ospf network point-to-multipoint


R5# show ip router ospf
1. point-to-multipoint會生成一個對端直連地址的32位主機路由。
2. 沒有DR (point-to-multipoint是一個多個點到點的集合)
3. 通過組播建鄰居。沒有寫network單播建鄰居,他組播自己建鄰居的。 

目前還是沒有看到R1R2R3環回口路由。


3. R1-R5環回口可以在任何區域。
配置虛擬鏈路                                 11:00
R2(config)# router ospf 1
R2(config-router)# area 1 virtual-link 10.10.4.4 

R3(config)# router ospf 1
R3(config-router)# area 1 virtual-link 10.10.4.4 

R4(config)# router ospf 1
R4(config-router)# area 1 virtual-link 10.10.2.2
R4(config-router)# area 1 virtual-link 10.10.3.3


R5# show ip router ospf

4. 在合適的路由器上做配置,使R5只能看到除直連以外的三條路由:10.10.1.0/2410.10.2.0/2410.10.3.0/24
    Distrbu-list                                                                                12:40
要分兩步做首先要把10.10.1.0/2410.10.2.0/2410.10.3.0/24這三條路由從32位變成24位,然後在去做過濾只允許三條其他deny掉。
改網路類型
R1(config)# interface loopback 0
R1(config-if)# ip ospf nework point-to-point 

R2(config)# interface loopback 0
R2(config-if)# ip ospf nework point-to-point

R3(config)# interface loopback 0
R3(config-if)# ip ospf nework point-to-point 


把環回口32位主機路由的特性改成24位的。
R5# show ip router ospf

變成24位後在開始做過濾,可在R4上做配置也可以在R5上配置,R5in的方向做配置

把要過濾的路由用prefix-list把他寫出來
R5(config)# ip prefix-list ABC permit 10.10.1.0/24
R5(config)# ip prefix-list ABC permit 10.10.2.0/24
R5(config)# ip prefix-list ABC permit 10.10.3.0/24

把要過濾的路由用ACL把他寫出來。
R5(config)# access-list 1 permit 10.10.1.0
R5(config)# access-list 1 permit 10.10.2.0
R5(config)# access-list 1 permit 10.10.3.0

用哪一種方法寫都可以把路由抓出來,意思都一樣。

R5(config-router)# distribute-list prefix ABC
如果用prefix-list後面加prefix ABC

R5(config)# router ospf 1
R5(config-router)# distribute-list 1 in serial 0/0
如果用ACL distribute-list後面加1就可以了,在進來的方向in,在serial 0/0接口。

R5# clear ip router *
R5# show ip router ospf
現在只收到這三條了。

如果在out方向除了接口還多了路由協定。

5. 配置使得area 2學到其他area的路由是從R2學到。         20:15
R1# show ip router ospf
他能從R2走也能從R3走。附載均衡
唯一能改的就是R2s 1/0改比64還小或把R3s 1/0改比64還大。

R2(config)# interface s 1/0
R2(config-if)# ip ospf cost 60

R1# show ip router ospf

6. 除了R5以外 確保其他路由器都可以學到所有網段。      22:50



BGP基本配置
1. 如圖AS歸屬。R2R3R5屬於AS 235,建立兩條iBGP鄰居,R5R2R5R3。要求建立盡可能長的TCP連接。                   23:30
全網都通了所以R2R3R5可以放在同一個AS,顯然的要用環回口建立
R2(config)# router bgp 235
R2(config-router)# neighbor 10.10.5.5 remote-as 235
R2(config-router)# neighbor 10.10.5.5 update-source loopback 0
R2(config-router)# neighbor 10.10.5.5 next-hop-self 

R3(config)# router bgp 235
R3(config-router)# neighbor 10.10.5.5 remote-as 235
R3(config-router)# neighbor 10.10.5.5 update-source loopback 0
R3(config-router)# neighbor 10.10.5.5 next-hop-self 

R5(config)# router bgp 235
R5(config-router)# neighbor 10.10.2.2 remote-as 235
R5(config-router)# neighbor 10.10.2.2 update-source loopback 0
R5(config-router)# neighbor 10.10.2.2 next-hop-self
R5(config-router)# neighbor 10.10.3.3 remote-as 235
R5(config-router)# neighbor 10.10.3.3 update-source loopback 0
R5(config-router)# neighbor 10.10.3.3 next-hop-self

R5# show ip bgp summary
全部都數字表示鄰居沒問題

2. R4屬於64512,與R5建立一條eBGP鄰居關係。要求用兩台路由器的loopback 0建立;要求此TCP建立的session無論什麼情況都只能由R4發起,也就是說是通過R4的隨機端口到R5179端口,R5不能主動發起與R4TCP連接要求;使用最小的eBGP多跳;不能用ACL和任何過濾。
          R5做一條默認路由
           Show tcp bri                                                               27:40
也就是說通過R4的隨機端口到目標端口179R5發起TCP session

要先看R4有沒有去往R5的環回口路由。
R4# show ip router

但是R5有沒有回來的路由呢?
R5# show ip router ospf
R5並沒有去往R4的環回口路由,因為R5做了路由過濾,只收到1.02.03.0的環回口路由。

默認路由的特點:他不會主動查默認路由去主動發起TCP session,但是他能夠被動響應TCP session的回包路由。

默認路由解決二個問題:
1. 不會主動發起TCP session
2. 讓對端主動發起的時候,我能夠有路由回去。

最簡單的方法是在R5上配置一條默認路由指向R4
R5(config)# ip route 0.0.0.0 0.0.0.0 45.1.1.4

R4# ping 10.10.5.5 source loopback 0

R4(config)# router bgp 64512
R4(config-router)# neighbor 10.10.5.5 remote-as 235
R4(config-router)# neighbor 10.10.5.5 update-source loopback 0
R4(config-router)# neighbor 10.10.5.5 ebgp-multihop 2  

R5(config)# router bgp 235
R5(config-router)# neighbor 10.10.4.4 remote-as 64512
R5(config-router)# neighbor 10.10.4.4 update-source loopback 0
R5(config-router)# neighbor 10.10.4.4 ebgp-multihop 2


R4# show tcp brief
這是在看路由器收到哪些TCP session,或者主動向外發出了哪些TCP session
IP 10.10.4.4、源端口46169 (隨機),目的地IP 10.10.5.5、目的地端口179
說明了R4主動向179目標端口發送TCP session;由R4主動向R5發起TCP連接請求;自己的隨機端口向目標的179發送TCP session的請求。


R5# show tcp brief


3. R1屬於AS 1,需要與R3建立一條eBGP session,要求R1R3只要路由可逹必須保持eBGP鄰居。                         34:40
只要路由可逹就要保證R1R3eBGP session,還是在做環回口建立eBGP鄰居關係。

首先要確定用環回口建立的話,要先能ping10.10.3.3
R1# ping 10.10.3.3 source 10.10.1.1

R1(config)# router bgp 1
R1(config-router)# neighbor 10.10.3.3 remote-as 235
R1(config-router)# neighbor 10.10.3.3 update-source loopback 0
R1(config-router)# neighbor 10.10.3.3 ebgp-multihop 

R3(config)# router bgp 235
R3(config-router)# neighbor 10.10.1.1 remote-as 1
R3(config-router)# neighbor 10.10.1.1 update-source loopback 0
R3(config-router)# neighbor 10.10.1.1 ebgp-multihop


4. R1R2建立一條eBGP鄰居。要求R1不能出現eBGP關鍵字,R2不能出現UPDATE關鍵字;R2不能與R1fa 1/0建立eBGP鄰居;在R1做配置,當BGP建立時,無論如何都是從R1發起到R2 179端口,用ACL來完成。
R1 nei 1.1.123.2 up lo 0
        R2 nei 10.10.1.1 remot 1
              nei 10.10.1.1 eb                                37:10

R2的物理接口跟R1的環回口建立eBGP鄰居。
先看R2有沒有到R1的環回口路由。
R2# ping 10.10.1.1


R2(config)# router bgp 235
R2(config-router)# neighbor 10.10.1.1 remote-as 1
R2(config-router)# neighbor 10.10.1.1 ebgp-multihop 2 

R1(config)# router bgp 1
R1(config-router)# neighbor 100.1.1.2 remote-as 235
R1(config-router)# neighbor 100.1.1.2 update-source loopback 0
在寫任何一個eBGP鄰居關係的時候,只要保neighborIP地址是我對端update-sourceIP地址,交叉相連是一樣的他鄰居肯定能起來


R1# show tcp brief
現在不是R1主動發起的,而是由R2主動發起的

只須R2主動向R1發的TCP 179deny掉就行了,只能在R1in方向做配置不能在R2out方向做配置
因為ACL不能限制自己;ACL只能過濾穿越的流量 
R1(config)# ip access-list extended tcp
R1(config-ext-nacl)# deny tcp host 100.1.1.2 host 10.10.1.1 eq 179
R1(config-ext-nacl)# permit ip any any
R1(config-ext-nacl)# exit 
R1(config)# interface eth 0/0
R1(config-if)# ip access-group tcp in 


R1# clear ip bgp *
R2# clear ip bgp * 

R1# show tcp brief

會看到R2主動發一個封包被,但是被R1deny掉了
R1# show ip access-lists
6說明了匹6個封包

結:
. BGP在建立鄰居關係的時候,他不僅僅只是環回口對環回口、物理口對物理口
. BGPsession是雙向的可以由左邊主動發起也可以由右邊主動發起,總這是一個session誰先主動發起接下來這個session就按誰的TCP三次握手

BGP高級配置
1. R5上把loopback 0宣告進BGP,在R4上觀察此路由一直在flappingR4上做配置解決此問題。                                                                     55:10

OSPF學過來的環回口是32位的,首先把環回口改成 /24
R5(config)# interface loopback 0
R5(config-if)# ip ospf network point-to-point 

R5(config)# router bgp 235
R5(config-router)# network 10.10.5.0 mask 255.255.255.0
一下子斷掉一下子又起來就叫flapping
R5上通過eBGP10.10.5.5/24路由傳給R4同時也能通過OSPF學到這條路由
OSPF學過來的環回口是32位的,跟eBGP傳過來的是24位的,他們不是同一條路由所以就不會翻滾,所以才要先把他改成同一條路由才會翻
OSPFBGP都放進路由他們就比誰的AD
一但把環回口路由宣告進BGP之後,R5會通過BGP傳給R4傳到R4之後會把路由表當中的OSPF傳過來的路由刷掉變成BGP學過來的
但是OSPF這個路由又不能被清掉IGPOSPF一清掉eBGP鄰居就會當掉

只要eBGP路由來覆蓋OSPF的路由他的鄰居就會斷掉,鄰居一當掉eBGP路由就消失了,eBGP路由一消失OSPF路由又收到了,OSPF收到了eBGP鄰居又起來了,eBGP鄰居起來eBGP路由又傳過來了

官方這樣一個問題叫backdoor
R4(config)# router bgp 64512
R4(config-router)# network 10.10.5.0 mask 255.255.255.0 backdoor


R4# show ip bgp
沒有做backdoor的時候前面是沒有r

BGP學過來的路由同時也從IGP學過來了,但是BGPIGPAD的時候IGP比較失敗了,所以會打上一個 *r或者r
打上r的有兩個特點:
   1. 不會放進路由表
   2. 會傳遞給我的BGP鄰居
不會放進BGP的路由表,如果身後還有其他的鄰居還是會往後傳


2. R5上,通過network宣告一條10.0.0.0/8的路由到BGP中,使此路由可以在除了R1以外的其他路由器上看到,此解決方法只能在R5BGP上做,不可以在任何地方增加接口或者靜或者OSPF彙總。
         Auto-su
         No-export                                                                                    01:13:00 
R5(config)# router bgp 235
R5(config-router)# network 10.0.0.0
R5(config-router)# auto-summary 

R5# show ip bgp
自動彙總不會影響其他路由,僅僅只會影響到重分佈進來的路由 

R5(config)# access-list 10 permit 10.0.0.0 
R5(config)# route-map COMM
R5(config-route-map)# match ip address 10
R5(config-route-map)# set community no-export
R5(config-route-map)# exit 

R5(config)# router-map COMM permit 999
R5(config-route-map)# exit 

R5(config)# router bgp 235
R5(config-router)# neighbor 10.10.2.2 route-map COMM out
R5(config-router)# neighbor 10.10.2.2 send-community
R5(config-router)# neighbor 10.10.3.3 route-map COMM out
R5(config-router)# neighbor 10.10.3.3 send-community

R1# show ip bgp
這時候R1就看不到10.0.0.0這條路由


3. R4上增加一條環回口loopback 0 104 地址為
   104.1.1.1 255.255.255.0
   104.1.2.1 255.255.255.0 se
   104.1.3.1 255.255.255.0 se
   104.1.4.1 255.255.255.0 se
   104.1.5.1 255.255.255.0 se 

   用最小的命令行把這些路由放進去BGP使R5看到這些路由的ORIGINE TYPEIGP
    重分佈直接                                                                                        01:19:40

R4(config)# interface loopback 104
R4(config-if)# ip address 104.1.1.1 255.255.255.0
R4(config-if)# ip address 104.1.2.1 255.255.255.0 secondary
R4(config-if)# ip address 104.1.3.1 255.255.255.0 secondary
R4(config-if)# ip address 104.1.4.1 255.255.255.0 secondary
R4(config-if)# ip address 104.1.5.1 255.255.255.0 secondary
R4(config-if)# exit 

R4(config)# route-map C
R4(config-route-map)# match interface loopback 104
R4(config-route-map)# set origin igp
R4(config-route-map)# exit 

R4(config)# router bgp 64512
R4(config-router)# redistribute connected route-map C


R4# show ip bgp


4. R5上做配置,使得R4傳過來的5條路由的AS-PATH均為 645136451464512                                 01:23:15

R5(config)# access-list 11 permit 104.1.0.0 0.0.7.255
R5(config)# route-map AS
R5(config-route-map)# match ip address 11
R5(config-route-map)# set as-path prepend 64513 64514
R5(config-route-map)# exit 

R5(config)# route-map AS permit 999
R5(config-route-map)# exit 

R5(config)# router bgp 235
R5(config-router)# neighbor 10.10.4.4 route-map AS in 


R5# clear ip bgp * so
R5# show ip bgp


5. R2R3上做置,使得R1接受UPDATE時,這幾條的AS-PATH
235 1 235  使用最少的配置步驟和命令行。         01:29:00 

R1# show ip bgp
第一步把私有的AS刪掉,然後在去考慮在右邊增加 1235
R2(config)# router bgp 235
R2(config-router)# neighbor 10.10.1.1 remove-private-as 

R3(config)# router bgp 235
R3(config-router)# neighbor 10.10.1.1 remove-private-as


R1# show ip bgp
解決第一個問題 

R2(config)# access-list 11 permit 104.1.0.0 0.0.7.255
R2(config)# route-map AS
R2(config-route-map)# match ip address 11
R2(config-route-map)# set as-path prepend 1 235
R2(config-route-map)# exit 

R2(config)# route-map AS permit 999
R2(config-route-map)# exit 

R2(config)# router bgp 235
R2(config-router)# neighbor 10.10.1.1 route-map AS out


R3(config)# access-list 11 permit 104.1.0.0 0.0.7.255
R3(config)# route-map AS
R3(config-route-map)# match ip address 11
R3(config-route-map)# set as-path prepend 1 235
R3(config-route-map)# exit 

R3(config)# route-map AS permit 999
R3(config-route-map)# exit 

R3(config)# router bgp 235
R3(config-router)# neighbor 10.10.1.1 route-map AS out 


看一下ACL有沒有生效
R3# show ip access-lists
有匹配就說明是對的

R1# show ip bgp
沒有104.1.0.0的路由了
因為在R2R3在出去的時候加的AS號是1,而R1所在的AS也是1,所以R1上收不到104的路由。


6. R1上做配置,確保R1能收到這4條路由。
    Neighbor 10.10.3.3 allowas-in                                     01:36:35   

R1(config)# router bgp 1
R1(config-router)# neighbor 100.1.1.2 allowas-in 1
allowas-in 1這個關鍵字是:
當我發現你發給我的路由當中AS-PATH跟我的AS有重複的話,我能夠允許重複的次數。
我允許100.1.1.2給我發的這個路由,所偕帶的這個AS號跟我的AS重複幾次,後面的1為重複一次。 

同樣的也要跟R3
R1(config-router)# neighbor 10.10.3.3 allowas-in 1


R1# clear ip bgp * so
R1# show ip bgp
104的路由又過來了

7. R1上增加loopback 101地址101.1.1.1/24
    Loopback 102 101.1.2.1/24
    Loopback 103 101.1.3.1/24
    Loopback 104 101.1.4.1/24
    Loopback 105 101.1.5.1/24
    把這幾條路由宣告進BGP,使其他路由器可以看到這條路由的起源是IGP。可能出現環路,試著解決它。 (難度較大)
               Next-hop-unchange                                                                    01:39:20 

R1(config)# interface loopback 101
R1(config-if)# ip address 101.1.1.1 255.255.255.0
R1(config)# interface loopback 102
R1(config-if)# ip address 102.1.1.1 255.255.255.0
R1(config)# interface loopback 103
R1(config-if)# ip address 103.1.1.1 255.255.255.0
R1(config)# interface loopback 104
R1(config-if)# ip address 104.1.1.1 255.255.255.0
R1(config)# interface loopback 105
R1(config-if)# ip address 105.1.1.1 255.255.255.0 

R1(config)# router bgp 1
R1(config-router)# network 101.1.1.0 mask 255.255.255.0
R1(config-router)# network 102.1.1.0 mask 255.255.255.0
R1(config-router)# network 103.1.1.0 mask 255.255.255.0
R1(config-router)# network 104.1.1.0 mask 255.255.255.0
R1(config-router)# network 105.1.1.0 mask 255.255.255.0


怎麼看他出現環路
R5# traceroute 101.1.1.1

他一直在R5R4來回丟封包。
BGP這樣當中出現環路是很正常的,路由在傳遞的時候沒有任何問題,但是它數據在轉發的時候就可能出現這樣一個問題。

先查路由表
R5# show ip route
101.1.1.0通過BGP學過來的,去往10.10.2.2O IA45.1.1.4所以數據會發到R4

R4# show ip route
目標一樣是去往101.1.1.0數據包到了R4他的目標地址是不變的,101.1.1.0告訴他丟給R5
為什麼會傳給R5
R1101.1.1.0的路由通過eBGP傳給R2R3R2R3通過iBGP傳給R5R5通過eBGP傳給R4,所以在R4上看到的101.1.1.0這條路由一定是從R5學過來的。

R4丟給R5R5丟給R4數據包在這裡一直不停的丟出不去

解決這問題最根本的點就是數據包到了R4應該直接往R2R3
R4上要把101.1.1.0的下一跳改成R2R3的環回口數據包就發上去了

要在R5上做配置,
R5(config)# router bgp 235
R5(config-router)# neighbor 10.10.4.4 next-hop-unchanged
在跟R4建立eBGP的時候next-hop-unchanged(下一跳點不變) 

在回到R4上看
R4# show ip route
什麼叫unchanged
R1101.1.1.0的路由通過eBGP傳給R2,這個路由的下一跳是R1
R2101.1.1.0的路由通過iBGP傳給R5,這個路由的下一跳是R2R3
這時候在R5R4發路由的時候寫了一句next-hop-unchanged,就變成R4R5上收到的下一跳路由不變(R5一樣的下一跳),這時候就能看到R2R3為下一跳。

R5# traceroute 101.1.1.1
!H 是沒有去往目標IP的路由,R6只跑OSPF並沒有跑BGP


8. R5上做配置,針對101.1.1.0/24這條路由,要求R5看到最優的路由是從R3過來的,用wigtht來做。                             01:39:20

R5# show ip bgp
R5101.1.1.0的路由可以從R2傳過來也能從R3傳過來,最終的結果是從R2傳過來的。 

R5(config)# access-list 21 permit 101.1.1.0
R5(config)# route-map W
R5(config-route-map)# match ip address 21
R5(config-route-map)# set weight 10
R5(config-route-map)# exit 
R5(config)# route-map W permit 999
R5(config-route-map)# exit 
R5(config)# router bgp 235
R5(config-router)# neighbor 10.10.3.3 route-map W in 

R5# clear ip bgp * soft
R5# show ip bgp

看大於號 > 打在哪條路由就選哪條路由