LAB
R1#sh ip int brief | exc down
Interface IP-Address OK? Method Status Protocol
FastEthernet0/0 12.0.0.1 YES manual up up
FastEthernet2/0 15.0.0.1 YES manual up up
FastEthernet4/0 14.0.0.1 YES manual up up
FastEthernet6/0 16.0.0.1 YES manual up up
R2#sh ip int brief | exc down
Interface IP-Address OK? Method Status Prot ocol
FastEthernet0/0 12.0.0.2 YES manual up up
FastEthernet2/0 23.0.0.2 YES manual up up
Loopback0 20.0.0.2 YES manual up up
R3#sh ip int brief | exc down
Interface IP-Address OK? Method Status Prot ocol
FastEthernet0/0 23.0.0.3 YES manual up up
FastEthernet2/0 34.0.0.3 YES manual up up
Loopback0 30.0.0.3 YES manual up up
R4#sh ip int brief | exc down
Interface IP-Address OK? Method Status Protocol
FastEthernet0/0 14.0.0.4 YES manual up up
FastEthernet2/0 34.0.0.4 YES manual up up
Loopback0 40.0.0.4 YES manual up up
PC5#sh protocols
Global values:
Internet Protocol routing is enabled
FastEthernet0/0 is administratively down, line protocol is down
PC5#
Routingleri aktiftir. Pc olarak kullanmak istiyorum o yüzden routing'i kapatıyorum.
PC5(config)#no ip routing
PC6(config)#no ip routing
Yine de interfaceye ip adresi vermemiz gerekiyor Routing tablosuna baktığımızda
boş çıkıyor çünkü routing'i kapattım. Switch'e default-gateway verir gibi. Buna da
aynı şekilde veriyoruz.
PC5(config)#int fa2/0
PC5(config-if)#ip add 15.0.0.5 255.255.255.0
PC5(config-if)#no shutdown
PC5#sh ip route
Default gateway is not set
Host Gateway Last Use Total Uses Interface
ICMP redirect cache is empty
PC5(config)#ip default-gateway 15.0.0.1
PC6(config)#no ip routing
PC6(config)#int fa0/0
PC6(config-if)#ip add 16.0.0.6 255.255.255.0
PC6(config-if)#no shut
PC6#sh ip route
Default gateway is not set
Host Gateway Last Use Total Uses Interface
ICMP redirect cache is empty
PC6#
PC6(config)#ip default-gateway 16.0.0.1
Routing çalışıyorsa bu komutun anlamı yok. (ip default-gateway). Ölüyor.
Eğer routing kapalıysa (no ip routing) o zaman işe yarıyor.
Bgp' de bir router tek bir otonom sisteme ait olabilir.
Bgp de komşuluk kurması sadece unicast olarak oluyordu. Yani network komutu bgp'de
hiçbir şey yapmıyordu.
Önce mutlaka komşuları neighbour komutu ile tarif etmemiz gerekiyordu.
R1(config)#router bgp 10
R1(config-router)#neighbor 12.0.0.2 remote-as 20
R1(config-router)#neighbor 14.0.0.4 remote-as 40
Standart olarak ipv4 aktif olduğu için address-family vs yazmanıza hiç gerek yok.
R2#sh run | sec bgp
router bgp 20
bgp log-neighbor-changes
neighbor 12.0.0.1 remote-as 10
neighbor 23.0.0.3 remote-as 30
R3#sh run | sec bgp
router bgp 30
bgp log-neighbor-changes
neighbor 23.0.0.2 remote-as 20
neighbor 34.0.0.4 remote-as 40
R3#
R4#sh run | sec bgp
router bgp 40
bgp log-neighbor-changes
neighbor 14.0.0.1 remote-as 10
neighbor 34.0.0.3 remote-as 30
R4#
R1#sh ip bgp summary
BGP router identifier 16.0.0.1, local AS number 10
BGP table version is 1, main routing table version 1
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State /PfxRcd
12.0.0.2 4 20 12 12 1 0 0 00:07:46 0
14.0.0.4 4 40 5 5 1 0 0 00:02:50 0
R1#
sh ip bgp summary ile komşuluğu görebiliyoruz.
Stateler burada 0 olarak görülmesi lazım Eğer idle, active vs yazıyorsa komşuluk
kurulmamıştır.
State 0 yazması komşuluk kuruldu ve 0 tane prefix öğretiyor bana demek.
R1#sh ip bgp
R1#
Gördüğünüz gibi komuş yazdığımızda boş çıktı. Komşular oturdu ama hiçbir şey
Öğrenmiyorlar. Yani çünkü kendileri de hiçbir şey öğretmediği için bgp tablosu boş.
Komşuluk var. herkes bgp anonsu yapıyor. Bgp de komşuluk kurulması millete bir şeyler
öğretiyorsun anlamına gelmiyor.
Ancak ne zaman network komutu ya da redistribution gibi komutlar yazarsın o zaman bgp
aktif olur.
R1 in öğreteceği networkler 15 ve 16 numaralı netwokler.
R1 ve R2 arasındaki netwokleri öğretmeyedebilirsin. (Peering)
extenrnal bgp peerlarının ip adreslerini öğretmezsek ne olur ? çünkü normalde
Ben bir şirket olarak benim olayım kendi ip adreslerimi öğretmek. Bana ait ip
adresleri neler 15 ve 16. 12 ve 14 lü network genelde sana ISP tarafından sağlanan
ISP'lerın ip adresleridir. Bu ip adresleri ISP ile bağlantıda kullanılır.
Bana ait değildir. Bana ait olan 15 ve 16 netwokleri ben dünyaya öğretmek istiyorum.
Çift ISP üzerinden
R1(config)#router bgp 10
R1(config-router)#network 15.0.0.0 mask 255.255.255.0
R1(config-router)#network 16.0.0.0 mask 255.255.255.0
R1(config-router)#
R1#sh ip bgp
BGP table version is 3, local router ID is 16.0.0.1
Network Next Hop Metric LocPrf Weight Path
*> 15.0.0.0/24 0.0.0.0 0 32768 i
*> 16.0.0.0/24 0.0.0.0 0 32768 i
R1#
Büyüktür (>) sembolünü görüyorsanız. Hayat güzeldir ben bunları öğretiyorum
anlamına gelir.
0.0.0.0 olması next hopların kendi üzerinden öğretiliyor demek.
weight değeri 32768 yani kendi üzerinden anons edeni tercih etsin diye cihaz bu
şekilde ayarlamış. Path değeri i yani igp tarafından öğretiliyor.
En başta internal bgp'den bir yerden almadığı için i harfi de yok. Kendisi bgp'ye
dahil ediyor.
R2(config)#router bgp 20
R2(config)# network 20.0.0.0 mask 255.255.255.0
R3(config)#router bgp 30
R3(config-router)#network 30.0.0.0 mask 255.255.255.0
R4(config)#router bgp 40
R4(config-router)#network 40.0.0.0 mask 255.255.255.0
R4#sh ip bgp | begin Network
Network Next Hop Metric LocPrf Weight Path
*> 15.0.0.0/24 14.0.0.1 0 0 10 i
*> 16.0.0.0/24 14.0.0.1 0 0 10 i
* 20.0.0.0/24 34.0.0.3 0 30 20 i
*> 14.0.0.1 0 10 20 i
*> 30.0.0.0/24 34.0.0.3 0 0 30 i
*> 40.0.0.0/24 0.0.0.0 0 32768 i
R4#
Burada ne yaptık. Dikkat ederseniz 12,14,23,34'leri öğretmedik.
Yani Peerlar arası networkleri öğretmedik.
R1#ping 30.0.0.3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 30.0.0.3, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
R1#sh ip route | begin Gateway
Gateway of last resort is not set
12.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C 12.0.0.0/24 is directly connected, FastEthernet0/0
L 12.0.0.1/32 is directly connected, FastEthernet0/0
14.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C 14.0.0.0/24 is directly connected, FastEthernet4/0
L 14.0.0.1/32 is directly connected, FastEthernet4/0
15.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C 15.0.0.0/24 is directly connected, FastEthernet2/0
L 15.0.0.1/32 is directly connected, FastEthernet2/0
16.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C 16.0.0.0/24 is directly connected, FastEthernet6/0
L 16.0.0.1/32 is directly connected, FastEthernet6/0
20.0.0.0/24 is subnetted, 1 subnets
B 20.0.0.0 [20/0] via 12.0.0.2, 00:07:39
30.0.0.0/24 is subnetted, 1 subnets
B 30.0.0.0 [20/0] via 14.0.0.4, 00:06:32
40.0.0.0/24 is subnetted, 1 subnets
B 40.0.0.0 [20/0] via 14.0.0.4, 00:05:38
R1#
R1#sh ip bgp
Network Next Hop Metric LocPrf Weight Path
*> 15.0.0.0/24 0.0.0.0 0 32768 i
*> 16.0.0.0/24 0.0.0.0 0 32768 i
*> 20.0.0.0/24 12.0.0.2 0 0 20 i
* 30.0.0.0/24 12.0.0.2 0 20 30 i
*> 14.0.0.4 0 40 30 i
*> 40.0.0.0/24 14.0.0.4 0 0 40 i
R1#
30 networkünü hem 12 den öğrenmiş hem de 14ten öğrenmiş.
Yani çift ayrı yerden öğrenebiliyor.Çünkü neden böyle oldu. Aslına bakarsanız hepsini
her yerden öğrenmesi lazım. Yani 20 networkünü doğrudan da öğrenecek. 20 networkünü
dönerekde R3 ve R4 üzerinden de öğrenmesi lazım. Hem 12 ve hem de 14 networkü üzerinden
Peki burada neden ping atamadı? Pc5 ve pc6 dan attığımızda ping attı.
PC5#ping 30.0.0.3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 30.0.0.3, timeout is 2 seconds:
!!!!!
PC6#ping 30.0.0.3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 30.0.0.3, timeout is 2 seconds:
!!!!!
Şunu unutmayın ping atarken bir router her zaman en yakın interfaceyi seçer.
en yakın interface ise 14 ip'li olan interface
R1 routerın routing tablosuna baktığımızda 30 lu networke gitmek istiyorken 14lü
ipli olan yeri seçtiğini gördük.
Bgp tablosundanda bunu okuyabiliyoruz *> olan yer best rota 14.0.0.4 yü yere gittiğini
gördük. 14.0.0.4e gidiyor yani aslında hedefe gidebilmesi lazım. Ancak giderken
14lü ip adresi kullanıyor kaynak ip olarak ama 14 lü network bgp de yok.
14 lü networkü biz anons etmediğimiz için source ip belirtmediğimiz için ping atamadı
ama source ip olarak 15 olarak belirtseydik ping atardı.Çünkü 15 networkü biliniyor.
12,14,23,34 networkleri bilinmiyor.
O yüzden source belirttiğimiz durumda atabiliriz. Ya da içerdeki bir istemci ping
atabilir.
R1#sh ip bgp
Network Next Hop Metric LocPrf Weight Path
*> 15.0.0.0/24 0.0.0.0 0 32768 i
*> 16.0.0.0/24 0.0.0.0 0 32768 i
*> 20.0.0.0/24 12.0.0.2 0 0 20 i
* 30.0.0.0/24 12.0.0.2 0 20 30 i
*> 14.0.0.4 0 40 30 i
*> 40.0.0.0/24 14.0.0.4 0 0 40 i
R1#
Yani buradan şunu görmenizi istiyorum external bgp peeringleri arasındaki networkler
öğretilmemiş olmasına rağmen. Sistem çalıştı.PC5 ten trace yapalım,
PC5#traceroute 30.0.0.3
Type escape sequence to abort.
Tracing the route to 30.0.0.3
VRF info: (vrf in name/id, vrf out name/id)
1 15.0.0.1 40 msec 48 msec 20 msec
2 14.0.0.4 16 msec 64 msec 40 msec
3 34.0.0.3 40 msec 72 msec 56 msec
PC5#
14.0.0.4 bana cevap döndürebildi. Ama 14 networkü bgp ile öğretilmiyor. Routing
tablosunda yok. Nasıl bu trafik gerçekleşebilir. Bana bu router nasıl ulaşabilir.
Öncelikle 12,14,23,34 networkleri öğretilmedi. O yüzden sen R1 routerına ya da
herhangi bir routera ping attığın anda o iş patlar.
Trafik sana geri dönemez. Çünkü o ip sana öğretilmedi.
R1 routerı R3 e ping atıyorsa 14 networkü R3 bilmediği için geri dönemez. Ama ilginç
bir şekilde Pc5ten 30 networküne trace yaptım. Bu adamdan cevap aldım. Unutmayın
routerlar hedef ipye göre davranır. Ben trafiği oluşturduğum anda hedef olarak 30
networkünü yazdım. Paket rahatlık ile çıkar çünkü R1 routerı 30 networkünü biliyor.
Traceroute nasıl çalışıyor. TTL değerini bir bir artırarak. TTL değerini 1 artırdı
R1'e ulaştı. R1 kaynak ipsi ile yani 15li ip olarak cevap döndü. Ondan sonra
TTL değerini 2 yaptı. Ama hedef hala 30. Hedef 30 olduğu için R1 bunu route edebildi.
ve R4e geldi.R4 routerı TTL değeri 2 olduğu için ve 2 router geçtiği için sıfırlandı.
ve bana geri döndü. ICMP time exceeded ile geri döndü. Bu şu demek. Yani 2 nolu hopa
ulaştın diğer hattın trafiğin kaynak ipse bakara da ben routerın ipsine bakarım.
Ben bu networkü (30.0.0.0)bilmiyorum ama önemi yok. R4 routerı bana cevap dönüyor.
Yani kaynak ipsi 14.0.0.4 hedef ipsi ise 15.0.0.5 Routerlar kaynak ipye bakmaz.
Onları ilgilendirmez bile kaynak ip. O yüzden 14'lü bir kaynak ip ile trafik oluşturdun
mu ulaşır. Ama sen hedef 14lü bir trafik oluşturursan. Gitmez. Adam bana kaynak ile
geri döndüğü için, E ben hedef ile nasıl gittim. Hedefi ben 14 yazmadımki hedefi ben 30
yazdım. 14ü tercih edip toplam 3 hop ile ulaştığını gördük.
R1#sh ip bgp
Network Next Hop Metric LocPrf Weight Path
*> 15.0.0.0/24 0.0.0.0 0 32768 i
*> 16.0.0.0/24 0.0.0.0 0 32768 i
* 20.0.0.0/24 14.0.0.4 0 40 30 20 i
*> 12.0.0.2 0 0 20 i
* 30.0.0.0/24 12.0.0.2 0 20 30 i
*> 14.0.0.4 0 40 30 i
*> 40.0.0.0/24 14.0.0.4 0 0 40 i
R2#sh ip bgp
Network Next Hop Metric LocPrf Weight Path
*> 15.0.0.0/24 12.0.0.1 0 0 10 i
*> 16.0.0.0/24 12.0.0.1 0 0 10 i
*> 20.0.0.0/24 0.0.0.0 0 32768 i
* 30.0.0.0/24 12.0.0.1 0 10 40 30 i
*> 23.0.0.3 0 0 30 i
* 40.0.0.0/24 23.0.0.3 0 30 40 i
*> 12.0.0.1 0 10 40 i
R4#sh ip bgp
Network Next Hop Metric LocPrf Weight Path
* 15.0.0.0/24 34.0.0.3 0 30 20 10 i
*> 14.0.0.1 0 0 10 i
* 16.0.0.0/24 34.0.0.3 0 30 20 10 i
*> 14.0.0.1 0 0 10 i
* 20.0.0.0/24 14.0.0.1 0 10 20 i
*> 34.0.0.3 0 30 20 i
*> 30.0.0.0/24 34.0.0.3 0 0 30 i
*> 40.0.0.0/24 0.0.0.0 0 32768 i
R3#sh ip bgp
Network Next Hop Metric LocPrf Weight Path
* 15.0.0.0/24 34.0.0.4 0 40 10 i
*> 23.0.0.2 0 20 10 i
* 16.0.0.0/24 34.0.0.4 0 40 10 i
*> 23.0.0.2 0 20 10 i
*> 20.0.0.0/24 23.0.0.2 0 0 20 i
*> 30.0.0.0/24 0.0.0.0 0 32768 i
* 40.0.0.0/24 23.0.0.2 0 20 10 40 i
*> 34.0.0.4 0 0 40 i
ISP'ler R1'i transit olarak kullanıyor. Bgpde böyle bir anons çakarsanız. 2 ayrı peering
alıyorsanız 2 ayrı ISPden filtreleme yapılmazsa BGP anlamaz. Sen müşteri misin sen ISP
misin. Umrunda olmaz her node'u hedefe ulaşacak. Bir seçenek olarak değerlendirir.
Şuanda ben ISP1'e hizmet ediyorum.ISP1, 40'a gidecekse R1 üzerinden gidiyor.
Gitmemesi lazım. Bu yüzden filtreleme yapacağız. Ben buradan demişimki ISP1'e
40 networküne benim (R1) üzerinden gidebilirsin kardeşim demişim.
Aşağıda gördüğünüz gibi 40 netwrokine giderken next hop olarak 12.0.0.1 olarak best
seçilmiş yani R1 üzerinden gidiyor.
R2#sh ip route | sec 40
40.0.0.0/24 is subnetted, 1 subnets
B 40.0.0.0 [20/0] via 12.0.0.1, 00:30:46
R2#
R2#sh ip bgp
Network Next Hop Metric LocPrf Weight Path
*> 15.0.0.0/24 12.0.0.1 0 0 10 i
*> 16.0.0.0/24 12.0.0.1 0 0 10 i
*> 20.0.0.0/24 0.0.0.0 0 32768 i
* 30.0.0.0/24 12.0.0.1 0 10 40 30 i
*> 23.0.0.3 0 0 30 i
* 40.0.0.0/24 23.0.0.3 0 30 40 i
*> 12.0.0.1 0 10 40 i
R2#
Burada yapacağımız ilk manipulasyon şu şekilde. Bir ISP'den öğrendiğin bir networkü
başka ISP'ye geçmesinin önüne geçelim. Burada en yaygın kullanılan filtereleme
AS Path filtering.
Yapacağımı AS pathi filterelemek. Burada kullanılan en yaygın teknik. Sadece
kendine ait netwokleri öğretmek zaten bizim amacımız. Sadece benim networklerim
ISP'lere öğrensin. Başka networkler yani diğer ISP'den öğrendikleri mi millete öğretme
R1 routeırna bakarsanız AS path boş olan sadece 2 network var. 15 ve 16 networkü.
AS path boş ise izin ver ve anons et. Kalanları çöpe at demek buradaki en iyi yaklaşım
oluyor.
R1#sh ip bgp | begin Network
Network Next Hop Metric LocPrf Weight Path
*> 15.0.0.0/24 0.0.0.0 0 32768 i
*> 16.0.0.0/24 0.0.0.0 0 32768 i
* 20.0.0.0/24 14.0.0.4 0 40 30 20 i
*> 12.0.0.2 0 0 20 i
* 30.0.0.0/24 12.0.0.2 0 20 30 i
*> 14.0.0.4 0 40 30 i
*> 40.0.0.0/24 14.0.0.4 0 0 40 i
R1#
Ben adama hangi networkleri öğretiyormuşum bu networklere bakmak için aşağıdaki
komutu yazmak gerekiyor.
R1#sh ip bgp neighbors 12.0.0.2 advertised-routes
BGP table version is 6, local router ID is 16.0.0.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 15.0.0.0/24 0.0.0.0 0 32768 i
*> 16.0.0.0/24 0.0.0.0 0 32768 i
*> 20.0.0.0/24 12.0.0.2 0 0 20 i
*> 30.0.0.0/24 14.0.0.4 0 40 30 i
*> 40.0.0.0/24 14.0.0.4 0 0 40 i
Total number of prefixes 5
R1#
Yukardaki networkleri öğretiyormuşum. İşte bu durumda anlayabilirsiniz. R1'in 15 ve
16 networkleri dışında. Bana 20,30,40'ıda networklere ulaşmam için R1'i kullanabilir.
Çünkü ben adama öğretiyorum. Diyorum benim üzerimden gidebilirsin kardeşim.
Bgp tercih edebilir de etmeyebilir de o yüzden en güzeli onu filtrelemektir.
en kolay filtreleme ise AS path boş olanları permit et. kalan herşeyi deny ettir.
Bunun için bir AS path access list yazabilirsiniz ve diyeceğiz ki. İçinde hiçbir AS
path numarası olmayanlara izin ver. Regular expression kullanıyoruz ^ sembolu bunun
ile başlayan demek. $ bunun ile biten demek. ^$ bu şekilde kullanırsanız.
As path'in içerisinde hiçbir şeyin olmaması demek .
Bu komutu yazarsanız As-path boş olanlara sadece izin ver dedik.
R1#conf t
R1(config)#ip as-path access-list 10 permit ^$
bunun altında implicit deny var. Kalan hiçbir networkü öğretme anlamına geliyor.
Bu durumda buna bağlı olarak bir filtreleme yazarsak. Neighbor'lara bu filreyi uygula
yacağız.
Hangi yönde uygulayacağız. Out yönünde yani millete öğretirken filtrelenecek.
Ben öğretirken sadece as path boş olanları öğreteceğim şeklinde olacak.
R1(config)#router bgp 10
R1(config-router)#neighbor 12.0.0.2 filter-list 10 out
R1(config-router)#neighbor 14.0.0.4 filter-list 10 out
R1#sh run | sec bgp
router bgp 10
bgp log-neighbor-changes
network 15.0.0.0 mask 255.255.255.0
network 16.0.0.0 mask 255.255.255.0
neighbor 12.0.0.2 remote-as 20
neighbor 12.0.0.2 filter-list 10 out
neighbor 14.0.0.4 remote-as 40
neighbor 14.0.0.4 filter-list 10 out
R1#
Bu filtrenin hemen aktif olmasını istiyorsanız meşhur komutu kullacağız.
R1#clear ip bgp *
R1#
*Aug 29 07:54:39.855: %BGP-5-ADJCHANGE: neighbor 12.0.0.2 Down User reset
*Aug 29 07:54:39.855: %BGP_SESSION-5-ADJCHANGE: neighbor 12.0.0.2 IPv4 Unicast topology base removed from session User reset
*Aug 29 07:54:39.863: %BGP-5-ADJCHANGE: neighbor 14.0.0.4 Down User reset
*Aug 29 07:54:39.863: %BGP_SESSION-5-ADJCHANGE: neighbor 14.0.0.4 IPv4 Unicast topology base removed from session User reset
R1#
*Aug 29 07:54:40.903: %BGP-5-ADJCHANGE: neighbor 12.0.0.2 Up
*Aug 29 07:54:40.927: %BGP-5-ADJCHANGE: neighbor 14.0.0.4 Up
R1#
Bu komut ile bgpyi komple resetledik. İki komşu ile de reset attık. Tüm öğrettiğim
netwokleri geri çektim adamdan ve tekrar. Bu networkleri öğrettim şeklinde çalışıyor.
R1#sh ip bgp neighbors 12.0.0.2 advertised-routes
Network Next Hop Metric LocPrf Weight Path
*> 15.0.0.0/24 0.0.0.0 0 32768 i
*> 16.0.0.0/24 0.0.0.0 0 32768 i
Total number of prefixes 2
R1#
Kontrol ettiğim gördüğünüz gibi sadece kendi üzerimdeki interfaceleri öğretiyorum.
R2#sh ip bgp
Network Next Hop Metric LocPrf Weight Path
*> 15.0.0.0/24 12.0.0.1 0 0 10 i
*> 16.0.0.0/24 12.0.0.1 0 0 10 i
*> 20.0.0.0/24 0.0.0.0 0 32768 i
*> 30.0.0.0/24 23.0.0.3 0 0 30 i
*> 40.0.0.0/24 23.0.0.3 0 30 40 i
R2#
R2 routerının artık dönerek ulaşması kalktı. Önceden 2 tane hop vardı Şimdi tek hopa
düştü. Artık bu arkadaşlar benim üzerimden gidemezler.
R4#sh ip bgp
Network Next Hop Metric LocPrf Weight Path
* 15.0.0.0/24 34.0.0.3 0 30 20 10 i
*> 14.0.0.1 0 0 10 i
* 16.0.0.0/24 34.0.0.3 0 30 20 10 i
*> 14.0.0.1 0 0 10 i
*> 20.0.0.0/24 34.0.0.3 0 30 20 i
*> 30.0.0.0/24 34.0.0.3 0 0 30 i
*> 40.0.0.0/24 0.0.0.0 0 32768 i
R4#
Başka bir router artık transit oldu. Tabiki transit olacak birileri üzerinden gelmesi
lazım ISP'lerin kendi oluşturdukları omurga üzerinden dönüyorlar. ISP'ler zaten transit
olmak için varlar. ISP'ler transittirler zaten. Başkalarının networklerini başkalarına
taşırlar.
Ben türk telekomdan bir internet hizmeti alıyorsam. Dünyadaki herhangi bir AS'den gelen
trafik Türk telekom üzerinden bana gelir. ISP'nin misyonu o zaten.
Biz burada kurumsal bir şirketiz çift ISP çıkışı almışız. Yedekli olsun istemişim.
Durum böyle olunca. Benim transit olmam saçma olur.
R3#sh ip bgp
Network Next Hop Metric LocPrf Weight Path
* 15.0.0.0/24 34.0.0.4 0 40 10 i
*> 23.0.0.2 0 20 10 i
* 16.0.0.0/24 34.0.0.4 0 40 10 i
*> 23.0.0.2 0 20 10 i
*> 20.0.0.0/24 23.0.0.2 0 0 20 i
*> 30.0.0.0/24 0.0.0.0 0 32768 i
*> 40.0.0.0/24 34.0.0.4 0 0 40 i
R3#
R4#sh ip bgp
Network Next Hop Metric LocPrf Weight Path
* 15.0.0.0/24 34.0.0.3 0 30 20 10 i
*> 14.0.0.1 0 0 10 i
* 16.0.0.0/24 34.0.0.3 0 30 20 10 i
*> 14.0.0.1 0 0 10 i
*> 20.0.0.0/24 34.0.0.3 0 30 20 i
*> 30.0.0.0/24 34.0.0.3 0 0 30 i
*> 40.0.0.0/24 0.0.0.0 0 32768 i
R4#
Yapacağım işlem şu 16 networkünü R1 ile R2 arasındaki peering de kötüleyeceğim.
15 netwokünü de R4 ile olan komşuluğunda kötüleyeceğim. Tercih etmesin diye dünyayada
tercih edilmeyecek şekilde anons etsin diye. Prepend işlemi yapalım.
Öncelikle networkleri tarif eden access listler yazmam gerekiyor.
Standart acl yazmam gerekiyor.
Buna (15 networküne) match ediyorsa kötüle.
R1(config)#access-list 15 permit 15.0.0.0 0.0.0.255
R1(config)#access-list 16 permit 16.0.0.0 0.0.0.255
R1(config)#do sh access-lists
Standard IP access list 15
10 permit 15.0.0.0, wildcard bits 0.0.0.255
Standard IP access list 16
10 permit 16.0.0.0, wildcard bits 0.0.0.255
R1(config)#
Bunlara bağlı olarak yazağım şey bir route-map yazmak.Arkadaşı kötüleyeceğim.
Diyeceğimki burası berbattır. Burasını kullanma :))
16 networkünü R2 peerina, 15 networkünü ise R4 peerına kötüleyeceğim.
route-map yazdıktan sonra bir isim veriyorduk. Peeri tarif eden bir isim yazabilirsin.
Sonra route-map ebgp-ISP1 yazıp entere basarsanız. Permit 10 diye kabul ediyordu.
Yani bu route mapteki trafiği izin ver anlamında. Bu networkleri öğret anlamında
1 nolu ISP'ye yollanırken neye match edecek. Burada ip adress ile kast ettiği acl demek
16'ya yani 16.0.0.0 networkünü öğretiyosan set diyip as-path diyip prepend diyoruz.
prepend dediği önüne ekle.Önüne ekle bu yazacağım otonom sistem numaralarını.
Dünyadaki birisinin otonom sistem numasını yazmamak gerekiyor. Loop olarak düşünüp bloklama
yapar.
Öyle bir otonom sistemi yazmak gerekiyorki dünyada başka kimse de olmasın buradaki
en iyi seçenek kendi otonom sistemini kullanmaktır. Manipulayonu yaparkende genelde
önüne 3 tane daha ekle deriz.
R1(config)#route-map ebgp_ISP1 permit 10
R1(config-route-map)#match ip address 16
R1(config-route-map)#set as-path prepend 10 10 10
Burada dedikki eğer 16 nolu ip adresinden anons yapıyorsan önüne bunu ekle dedik.
10 10 10 yani 3 tane ısp numarası bu şekilde bırakırsanız kalan tüm networkleri öğretmez
Yani ACL 16'ya match edenleri öğretir. Kalanlar çöpe gider yani 15 networkünü öğretmez.
o yüzden mutlaka implicit deny kaldırmak adına bir route map daha yazacaksınız.
==========================
R1(config)#route-map ebgp_ISP1 permit 20
Bunu yazıp ne yapıyorduk. Kalan her şeyi hiçbir değişiklik yapmadan öğret diyeceğiz.
Kalan her şey anlamında hiçbir match yazmazsan, kalan her şeydir.
Hiçbir set yazmazsan hiçbir şey yapmadan demektir.
R1(config)#route-map ebgp_ISP1 permit 20
R1(config-route-map)#exit
=================================
R1#sh run | sec route
router bgp 10
bgp log-neighbor-changes
network 15.0.0.0 mask 255.255.255.0
network 16.0.0.0 mask 255.255.255.0
neighbor 12.0.0.2 remote-as 20
neighbor 12.0.0.2 filter-list 10 out
neighbor 14.0.0.4 remote-as 40
neighbor 14.0.0.4 filter-list 10 out
route-map ebgp_ISP1 permit 10
match ip address 16 //16 network ile eşleşiyorsa bunları prepend et.
set as-path prepend 10 10 10
route-map ebgp_ISP1 permit 20
=====
15 nolu access list yazmıştım onun içinde bir route-map yazalım.
R1(config)#route-map ebgp_ISP2 permit 10
R1(config-route-map)#match ip address 15
R1(config-route-map)#set as-path prepend 10 10 10
R1(config)#route-map ebgp_ISP2 permit 20
R1(config-route-map)#exit
route-map ebgp_ISP1 permit 10
match ip address 16
set as-path prepend 10 10 10
!
route-map ebgp_ISP1 permit 20
!
route-map ebgp_ISP2 permit 10
match ip address 15
set as-path prepend 10 10 10
!
route-map ebgp_ISP2 permit 20
!
route-map e permit 10
!
!
access-list 15 permit 15.0.0.0 0.0.0.255
access-list 16 permit 16.0.0.0 0.0.0.255
!
Bundan sonra bunları aktive etmek kaldı.
neighbor diyeceğiz. Bu filtreleme komutları, route map komutları önce neighbor
diyip bir komşuya özel yapılıyor. Neigbor diyip komşunun ip adresi 12.0.0.2
sonrasında route-map ve route-map adını yazacağız. Sonrasında yön yazacağız.
Hangi yönde yazacağız. Girişi yönünde mi çıkış yönünde mi ?
Ben 15 networkünü Aşağıya doğru anons ederken kötüleyerek anons edeceğim. R4'e doğru.
16 networkünü yukarı doğru anons ederken, kötüleyerek yollayacağım.
R1(config)#router bgp 10
R1(config-router)#neighbor 12.0.0.2 route-map ebgp_ISP1 out
R1(config-router)#neighbor 14.0.0.4 route-map ebgp_ISP2 out
R1#sh run | sec bgp
router bgp 10
bgp log-neighbor-changes
network 15.0.0.0 mask 255.255.255.0
network 16.0.0.0 mask 255.255.255.0
neighbor 12.0.0.2 remote-as 20
neighbor 12.0.0.2 route-map ebgp_ISP1 out
neighbor 12.0.0.2 filter-list 10 out
neighbor 14.0.0.4 remote-as 40
neighbor 14.0.0.4 route-map ebgp_ISP2 out
neighbor 14.0.0.4 filter-list 10 out
route-map ebgp_ISP1 permit 10
match ip address 16
set as-path prepend 10 10 10
route-map ebgp_ISP1 permit 20
route-map ebgp_ISP2 permit 10
match ip address 15
set as-path prepend 10 10 10
route-map ebgp_ISP2 permit 20
R1#
Bu durumda hızlı olması için clear edelim.
R1#clear ip bgp *
R1#
*Aug 29 09:42:38.975: %BGP-5-ADJCHANGE: neighbor 12.0.0.2 Down User reset
*Aug 29 09:42:38.975: %BGP_SESSION-5-ADJCHANGE: neighbor 12.0.0.2 IPv4 Unicast topology base removed from session User reset
*Aug 29 09:42:38.983: %BGP-5-ADJCHANGE: neighbor 14.0.0.4 Down User reset
*Aug 29 09:42:38.983: %BGP_SESSION-5-ADJCHANGE: neighbor 14.0.0.4 IPv4 Unicast topology base removed from session User reset
R1#
*Aug 29 09:42:39.995: %BGP-5-ADJCHANGE: neighbor 12.0.0.2 Up
*Aug 29 09:42:40.055: %BGP-5-ADJCHANGE: neighbor 14.0.0.4 Up
R1#
R4#sh ip bgp
Network Next Hop Metric LocPrf Weight Path
*> 15.0.0.0/24 34.0.0.3 0 30 20 10 i
* 14.0.0.1 0 0 10 10 10 10 i
*> 16.0.0.0/24 14.0.0.1 0 0 10 i
*> 20.0.0.0/24 34.0.0.3 0 30 20 i
*> 30.0.0.0/24 34.0.0.3 0 0 30 i
*> 40.0.0.0/24 0.0.0.0 0 32768 i
R4#
Gördüğünüz gibi 15 netwokründe 10 10 10 10 olarak anons edilmiş.
R3#sh ip bgp
Network Next Hop Metric LocPrf Weight Path
*> 15.0.0.0/24 23.0.0.2 0 20 10 i
* 34.0.0.4 0 40 10 10 10 10 i
* 16.0.0.0/24 23.0.0.2 0 20 10 10 10 10 i
*> 34.0.0.4 0 40 10 i
*> 20.0.0.0/24 23.0.0.2 0 0 20 i
*> 30.0.0.0/24 0.0.0.0 0 32768 i
*> 40.0.0.0/24 34.0.0.4 0 0 40 i
R3#
upload yönünde manipulasyon aynı AS içinde yapılır. Farklı AS'lerde tercih tercih
edilmez.
Genelde özellikle upload yönünde eşite yakın bir manipulasyon istiyorsanız bgp
pek kullanılmıyor.
Burada daha çok PBR denilen işlem yapılıyor. PBR, hedef ip'ye değil kaynak ip adrese
bakarak routing yapma özelliğidir.
PBR'da şöyle bir işlem yapılıyor. Kaynak ipsi 15 olan networkü yukarıdan yolla.
Kaynak ip adresine bakarak routing yaptırdım. Kaynak ipsi 16 olan vatandaşı da
aşağıdan yolla diyebiliyoruz. Upload yönünde de elle tutulur bir load balancing
yaptırmış olduk.
===============================================================
R1 üzerinde bir peerimden yani 14.0.0.4 ten öğrendiğiklerim weight değerini 100
yapayım.
R1#sh ip bgp
Network Next Hop Metric LocPrf Weight Path
*> 15.0.0.0/24 0.0.0.0 0 32768 i
*> 16.0.0.0/24 0.0.0.0 0 32768 i
* 20.0.0.0/24 14.0.0.4 0 40 30 20 i
*> 12.0.0.2 0 0 20 i
* 30.0.0.0/24 12.0.0.2 0 20 30 i
*> 14.0.0.4 0 40 30 i
* 40.0.0.0/24 12.0.0.2 0 20 30 40 i
*> 14.0.0.4 0 0 40 i
R1#
R1(config)#router bgp 10
R1(config-router)#neighbor 14.0.0.4 weight 100
R1#clear ip bgp *
R1#sh ip bgp
Network Next Hop Metric LocPrf Weight Path
*> 15.0.0.0/24 0.0.0.0 0 32768 i
*> 16.0.0.0/24 0.0.0.0 0 32768 i
* 20.0.0.0/24 12.0.0.2 0 0 20 i
*> 14.0.0.4 100 40 30 20 i
* 30.0.0.0/24 12.0.0.2 0 20 30 i
*> 14.0.0.4 100 40 30 i
* 40.0.0.0/24 12.0.0.2 0 20 30 40 i
*> 14.0.0.4 0 100 40 i
R1#
Artık 14.0.0.4 ün weight değeri 100 oldu. Hangi network olursa olsun 14.0.0.4den
öğrenilen weight değerini artırdım. Hep artık 14.0.0.4'ü tercih etmiş oldu.
Yani upload yönünde manipulasyon yapmış olduk. Tabiki load balancing oluşturmadı
Çünkü kime gidersem gidelim hep alttaki ISP'yi tercih ettirdik. Eğer alttaki ISP
ölürse seçenek kalmayacak. Yukardaki ISP'ye dönüşü sağlayacak ve trafik yukardan
gidecek.
Weight değerini kaldıralım.
R1(config)#router bgp 10
R1(config-router)#no neighbor 14.0.0.4 weight 100
R1(config-router)#^Z
R1#clear ip bgp *
Bir tane prefixe özel 30.0.0.0/24'e özel bir atama yaptırmak istiyoruz.
prefix list ile yazalım bunu.
Normalde aşağı yani 14 lü networkü tercih ediyordu. 12 li networkü tercih etmesini
isteyeceğiz.
R1(config)#ip prefix-list ISP2_30_0_0_0_0 permit 30.0.0.0/24
//böyle yazmamız durumunda tam buna match edeni kabul eder.
Buna bağlı olarak da bir route map yazıp bu network ile eşleşenleri
weight değerini artıralım.
Benim bgp konfigurasyonum altında bir route-map var ve out yönünde
Ben öğretirken idi. Out yönünde bir route-map daha yazacaksanız. Farklı isimle
yazamazsınız bunun altına devam etmeniz ya da içine enjekte etmeniz gerekir.
R1#sh run | sec route-map
neighbor 12.0.0.2 route-map ebgp_ISP1 out
neighbor 14.0.0.4 route-map ebgp_ISP2 out
route-map ebgp_ISP1 permit 10
match ip address 16
set as-path prepend 10 10 10
route-map ebgp_ISP1 permit 20
route-map ebgp_ISP2 permit 10
match ip address 15
set as-path prepend 10 10 10
route-map ebgp_ISP2 permit 20
route-map e permit 10
R1#
Bizim buradaki derdimiz out yönünde değil in yönünde bunu yapmak in yönünde yapmak
için ISP2 den geliyorsa şayet o peerimden bana öğretilirken değerini artıracağız.
Prefix list yapmıştım ve bu prefix liste match eden bir route map yazacağım
R1(config)#route-map ISP2_OZEL permit 10
R1(config-route-map)#match ip address prefix-list ISP2_30_0_0_0
R1(config-route-map)#set weight 100
R1(config-route-map)#
//Sonrasında kalanları da hiç değiştirmeden geçir demem lazım.
Onuda bu şekilde giriyoruz ve komut yazmadan exit diyerek çıkıyoruz.
R1(config)#route-map ISP2_OZEL permit 20
R1(config-route-map)#exit
R1(config)#
R1#sh run | sec route-map
neighbor 12.0.0.2 route-map ebgp_ISP1 out
neighbor 14.0.0.4 route-map ebgp_ISP2 out
route-map ebgp_ISP1 permit 10
match ip address 16
set as-path prepend 10 10 10
route-map ebgp_ISP1 permit 20
route-map ebgp_ISP2 permit 10
match ip address 15
set as-path prepend 10 10 10
route-map ebgp_ISP2 permit 20
route-map ISP2_OZEL permit 10
match ip address prefix-list ISP2_30_0_0_0
set weight 100
route-map ISP2_OZEL permit 20//kalanlar için aynen geçir manipulasyon yapma.
route-map e permit 10
R1#
R1#sh ip bgp
Network Next Hop Metric LocPrf Weight Path
*> 15.0.0.0/24 0.0.0.0 0 32768 i
*> 16.0.0.0/24 0.0.0.0 0 32768 i
*> 20.0.0.0/24 12.0.0.2 0 0 20 i
* 14.0.0.4 0 40 30 20 i
*> 30.0.0.0/24 12.0.0.2 0 20 30 i
* 14.0.0.4 0 40 30 i
* 40.0.0.0/24 12.0.0.2 0 20 30 40 i
*> 14.0.0.4 0 0 40 i
R1#
30 networküne baktığımızda AS Path'ler eşit ve yukardakini tercih etmiş.
Ben şimdi aşağıdaki tercih etsin diye bunu manipule ettirteceğim.
R1(config)#router bgp 10
R1(config-router)#neighbor 14.0.0.4 route-map ISP2_OZEL in
R1#sh run | sec route
router bgp 10
bgp log-neighbor-changes
network 15.0.0.0 mask 255.255.255.0
network 16.0.0.0 mask 255.255.255.0
neighbor 12.0.0.2 remote-as 20
neighbor 12.0.0.2 route-map ebgp_ISP1 out
neighbor 12.0.0.2 filter-list 10 out
neighbor 14.0.0.4 remote-as 40
neighbor 14.0.0.4 route-map ISP2_OZEL in
neighbor 14.0.0.4 route-map ebgp_ISP2 out
neighbor 14.0.0.4 filter-list 10 out
route-map ebgp_ISP1 permit 10
match ip address 16
set as-path prepend 10 10 10
route-map ebgp_ISP1 permit 20
route-map ebgp_ISP2 permit 10
match ip address 15
set as-path prepend 10 10 10
route-map ebgp_ISP2 permit 20
route-map ISP2_OZEL permit 10
match ip address prefix-list ISP2_30_0_0_0
set weight 100
route-map ISP2_OZEL permit 20
route-map e permit 10
R1#
clear etmediğim için henüz devreye girmedi.
R1#clear ip bgp *
R1#sh ip bgp
Network Next Hop Metric LocPrf Weight Path
*> 15.0.0.0/24 0.0.0.0 0 32768 i
*> 16.0.0.0/24 0.0.0.0 0 32768 i
*> 20.0.0.0/24 14.0.0.4 100 40 30 20 i
* 12.0.0.2 0 0 20 i
*> 30.0.0.0/24 14.0.0.4 100 40 30 i
* 12.0.0.2 0 20 30 i
*> 40.0.0.0/24 14.0.0.4 0 100 40 i
* 12.0.0.2 0 20 30 40 i
R1#
Eski olan rota aşağıda yazılıyor ve seçiliyor ama Gördüğünüz gibi 14.0.0.4 lü rota
tercih edilmiş.
R1#sh ip route 30.0.0.1
Routing entry for 30.0.0.0/24
Known via "bgp 10", distance 20, metric 0
Tag 40, type external
Last update from 14.0.0.4 00:02:34 ago
Routing Descriptor Blocks:
* 14.0.0.4, from 14.0.0.4, 00:02:34 ago
Route metric is 0, traffic share count is 1
AS Hops 2
Route tag 40
MPLS label: none
R1#
PC5#traceroute 30.0.0.3
Type escape sequence to abort.
Tracing the route to 30.0.0.3
VRF info: (vrf in name/id, vrf out name/id)
1 15.0.0.1 1016 msec 24 msec 24 msec
2 14.0.0.4 52 msec 52 msec 52 msec
3 34.0.0.3 80 msec 48 msec 60 msec
PC5#
Peki R3 den dönerken nasıl gidiyor ona bakalım.? Dönerken yukardan gidiyor.
R3#traceroute
Protocol [ip]:
Target IP address: 15.0.0.5
Source address: 30.0.0.3
Numeric display [n]:
Timeout in seconds [3]:
Probe count [3]:
Minimum Time to Live [1]:
Maximum Time to Live [30]:
Port Number [33434]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Type escape sequence to abort.
Tracing the route to 15.0.0.5
VRF info: (vrf in name/id, vrf out name/id)
1 23.0.0.2 44 msec 28 msec 16 msec
2 12.0.0.1 20 msec 68 msec 44 msec
3 15.0.0.5 [AS 10] 44 msec 72 msec 72 msec
R3#
Upload aşağıdan download ise yukardan oldu.Manipule ettim bu şekilde oldu.
Global hayatta bir ISP'ye gidiyorsanız yine oradan dönnmeyebilirsiniz bunun garantisi
yok.
Last updated