18 Şubat 2018 Pazar

Routing Manipulation metric, PBR, route-maps or whatever your heart desires, Distribute List

Bgp ile rota manipulasyonu



ISP-A ve ISP-B olarak iki adet ISP miz var ve bgp ile konuşuyoruz. Hattın 100 megabit üzerinden çalışması bekleniyor. 

Çözüm :

R1 'den çıkan paketlere 3 hop as path ekleyerek toplamada as number sayısı 4 yapıyoruz ISPB için bu yüzden artık 2 hopluk(2,1) ISPA üzerinden gidecektir paketler.

R1:

access-list 1 permit 3.3.3.0 0.0.0.255
!
route-map addpath permit 10
 match ip address 1
 set as-path prepend 1 1 1
!
router bgp 1
 neighbor 2.2.2.2 route-map addpath out

R1:

interface Loopback0
 ip address 3.3.3.1 255.255.255.255
!
interface FastEthernet0/0
 ip address 1.1.1.1 255.255.255.252
!
interface FastEthernet0/1
 ip address 2.2.2.1 255.255.255.252
!
router bgp 1
 bgp log-neighbor-changes
 redistribute connected
 neighbor 1.1.1.2 remote-as 2
 neighbor 1.1.1.2 update-source FastEthernet0/0
 neighbor 2.2.2.2 remote-as 3
 neighbor 2.2.2.2 update-source FastEthernet0/1
 neighbor 2.2.2.2 route-map addpath out
!
access-list 1 permit 3.3.3.0 0.0.0.255
!
route-map addpath permit 10
 match ip address 1
 set as-path prepend 1 1 1


ISPA:

interface FastEthernet0/0
 ip address 1.1.1.2 255.255.255.252
!
interface FastEthernet1/1
 ip address 4.4.4.1 255.255.255.252
!
router bgp 2
 bgp log-neighbor-changes
 redistribute connected
 neighbor 1.1.1.1 remote-as 1
 neighbor 1.1.1.1 update-source FastEthernet0/0
 neighbor 4.4.4.2 remote-as 3
 neighbor 4.4.4.2 update-source FastEthernet1/1

ISPB:

interface FastEthernet0/1
 ip address 2.2.2.2 255.255.255.252
!
interface FastEthernet1/1
 ip address 4.4.4.2 255.255.255.252
!
router bgp 3
 bgp log-neighbor-changes
 redistribute connected
 neighbor 2.2.2.1 remote-as 1
 neighbor 2.2.2.1 update-source FastEthernet0/1
 neighbor 4.4.4.1 remote-as 2
 neighbor 4.4.4.1 update-source FastEthernet1/1
------------------

Hop count Eşit ise

veya metric ile oynanır ancak metric hop count aynı ise işe yarayacak bir çözümdür. Bgp'de önce Hop count'a bakar sonrasında metrik değerine bakar.




R2

route-map MED permit 10
 match ip address 1
 set metric 2

route-map MED permit 20
  match ip address 2
  set metric 1
  set origin igp     
 do clear ip bgp * soft


router bgp 65002
 neighbor 10.12.22.1 remote-as 65001
 neighbor 10.12.22.1 route-map MED out

R3


route-map MED permit 10
 match ip address 1
 set metric 1

route-map MED permit 20
  match ip address 2
  set metric 2
  set origin incomplete
 do clear ip bgp * soft

router bgp 65002
 neighbor 10.12.23.1 remote-as 65001
neighbor 10.12.23.1 route-map MED out

R2&R3

access-list 1 permit 10.2.1.0 0.0.254.255
access-list 2 permit 10.2.0.0 0.0.254.255

route-map MED permit 30



Show route-map

set komutunda dikkat edilecek kurallar.

1. ip next-hop: If next hop exist in the routing table then it will policy route the traffic to the next hop otherwise according to the default routing table.

Once policy uygular sonra routing tablosuna bakar.

2. ip default next-hop: If the destination exist in the routing table then it will not policy route the traffic and if destination does not exist in the routing table then it will policy route the same.

Eğer destination ip addresi var ise policy uygulamaz ancak destination ip adresi route tablosunda yok ise policy uygular. default interface içinde aynısı.

3. default interface: As same as default next-hop, i.e If the destination exist in the routing table then it will not policy route the traffic and if destination does not exist in the routing table then it will policy route the same over the specified interface





First part of configuration is creating access list.

Dikkat eldilmesi gereken buradaki permit yada deny route map'de işaretlemeyi belirtir.

ip access-list extended PC1
 permit ip host 192.168.1.100 host 1.1.1.1
ip access-list extended PC2
 permit ip host 192.168.1.200 host 1.1.1.1

then created routed-map policy ;

route-map EXAMPLE permit 10 (10 means sequance number because I use more than one configuration)
match ip address PC1(access list)
set ip next-hop 10.10.10.2
!
route-map EXAMPLE permit 20
match ip address PC2
set ip next-hop 10.10.11.2

I applied policy rule on R3(fa0/0). I can manipulate packet forwarding by source ip address.

R3:
I applied a route-map policy on the interface;

interface FastEthernet0/0
ip address 192.168.1.1 255.255.255.0
ip policy route-map EXAMPLE


you see results for pc1 and pc2;




Route map permit;

Route-map abc permit 200
match ip address INTERNET
set ip next-hop 10.10.11.2


Route map deny;

Burada hiçbir sey yazmazsak route map'in deny gibi bir olayı yoktur. Sadece işaretler.

Burada deny alttaki eylemi yapma demektir.

Route-map abc deny 200
match ip address INTERNET_2
set ip next-hop 10.10.11.2


interface FastEthernet0/0
ip policy route-map abc

--

Eğer routerin kendisinin olusturdugu paketlere uygulayacak olursak. interface altında değil

ip local policy route-map'e uy



----

Router(config)# access-list 101 permit tcp any any eq www
Router(config)# route-map PBR permit 10
Router(config-route-map)# match ip address 101
Router(config-route-map)# set ip next-hop 10.0.0.1
Router(config)# route-map PBR permit 20
Router(config-route-map)# match interface FastEthernet 0/0
Router(config-route-map)# set interface FastEthernet 0/1
Router(config)# interface FastEthernet 0/0
Router(config-if)# ip policy route-map PBR
Bu örnekte:
101 nolu ACL’e uyan trafik (yani web trafiği) 10.0.0.1 IP’sine yönlendirilmektedir. Bunun haricinde FastEthernet 0/0 interface’ine gelen trafik ise FastEthernet 0/1 interface’inden yollanmaktadır. Bu trafiklerin FastEthernet 0/0 interface’ine geldiği varsayılmıştır dolayısıyla route-map bu interface’e uygulanmıştı

Route redistribution bir kaynaktan öğrenilen rota bilgisinin başka bir kaynağa aktarılması ve o kaynak tarafından öğretilmesi anlamına gelir. Redistribute ettiğimiz rotaların üzerinde bazı işlemler yapmak için route map kullanabiliriz.

Redistribution’da route map’in yaptığı en önemli işlerden biri seed metric belirlemektir. Bir routing protokolü başka bir kaynaktan öğrendiği rotanın metriğini hesaplayamayacaktır. Bu durumda RIP ve EIGRP biz hiç bir müdahalede bulunmazsak bu rotalara verebileceği en yüksek metrik değerini verir yani bu rotaları ulaşılamaz olarak işaretler. OSPF ise varsayılanda 20 cost değerini verir. Dolayısıyla bu rotaları redistribute ederken bir metrik belirlememiz gerekecektir. Aşağıdaki yapılandırma EIGRP’den OSPF’e 10.0.0.0/24 rotasını metriği 30 olarak öğretecektir:
Router(config)# access-list 10 permit 10.0.0.0 0.0.0.255
Router(config)# route-map METRIK
Router(config-route-map)# match ip address 10
Router(config-route-map)# set metric 30
Router(config)# router ospf 1
Router(config-router)# redistribute eigrp 1 route-map METRIK subnets
Önce 10.0.0.0/24 rotasını tanımlayan bir access-list yazdık. Sonrasında METRIK route-map’ini oluşturduk ve ilk satırında match komutuyla bu ACL’e işaret ettik. Set komutuyla da vermek istediğimiz metrik değerini belirledik.
Önceki yazımdaki örnekte olduğu gibi bu örnekte de yapılandırmayı şu aşamada bırakırsak router 10.0.0.0/24 haricinde hiç bir rotayı öğretemeyecektir. Çünkü diğer tüm rotalar ilk satırdaki 10 no lu ACL’de bir eşleşme bulamayacağından route-map’in implicit deny satırına düşecektir. Bunu engellemek için gene
Router(config)# route-map METRIK permit 20
Yazmamız gerekmektedir.
Redistribution yaparken değiştirebileceğimiz bir diğer parametre OSPF metric-type parametresidir. OSPF dışardan öğrendiği rotaları 1. tip veya 2. tip (varsayılan) olarak işaretler. 1. tipte rotanın metriği OSPF areası boyunca toplanarak giderken 2. tipte sabit kalır.
set metric-type <type-1 | type-2>
komutuyla öğrettiğimiz rotanın metrik tipi değiştirilebilir.
Eğer iki routing protokolü domain’i arasında birden fazla redistribution noktamız varsa sub-optimal routing’i ve loop’ları engellemek için bir noktadan öğretilen rotaların diğer noktadan geri öğretilmesini engellemeliyiz. Bunu match ip address komutuyla bu rotaların tanımlandığı ACL’lere işaret ederek yapabileceğimiz gibi redistribution yaparken istediğimiz rotaları “etiketleyip” router’ların bu etiketleri kontrol etmesini de sağlayabiliriz. Yani bir router’a bir rotaya bir tag (32 bitlik sayısal bir değer) koyar, diğer router da bu etiketi kontrol eder ve bu etiketli rotaları geri öğretmez.
Örneğin aşağıdaki yapılandırma EIGRP’den OSPF’e redistribute ederken 10.0.0.0/8 network’üne 100 etiketi koymaktadır:
Router1(config)# access-list 1 permit 10.0.0.0 0.255.255.255
Router1(config)# route-map ETIKET permit
Router1(config-route-map)# match ip address 1
Router1(config-route-map)# set tag 100
Router1(config)# router ospf 1
Router1(config-router)# redistribute eigrp 1 route-map ETIKET
Diğer redistribution noktasında da OSPF’ten EIGRP’ye geri öğretmemesi için şöyle bir yapılandırma yapılacaktır:
Router2(config)# route-map ETIKET deny
Router2(config-route-map)# match tag 100
Router(config)# router eigrp 1
Router(config-router)# redistribute ospf 1 route-map ETIKET
Bu yapılandırmada da route-map’lerin sonundaki implicit deny’lara dikkat edilmelidir.
Son olarak redistribution’da route-map’in çalışma mekanizmasını özetlersek; route-map satırı permit ise bu satırda match komutuyla belirtilen rotalar öğretilir ve öğretilirken set komutuyla belirtilen parametreleri alır, route-map satırı deny ise direk öğretilmez. Eğer bu rotalar route-map’te belirtilen ACL tarafından deny ediliyorsa o route-map satırında bir eşleşme gerçekleşmemiş olur ve bir sonraki route-map satırına geçilir.
---------


Router(config)#access-list 50 deny 10.0.0.0 0.0.0.255
Router(config)#access-list 50 permit any
Router(config)#router eigrp 1
Router(config-router)#distribute-list 50 out
Yukarıdaki yapılandırma eigrp’nin 10.0.0.0/24 network’ünü hiç bir interface’inden öğretmemesini sağlar. ACL’nin sonundaki permit any satırı gereklidir aksi takdirde sondaki implicit deny yüzünden hiç bir rota öğretilmez.
distribute-list route-map ile de kullanılabilir. Öncelikle bilmemiz gereken route-map’te match komutlarıyla IP adresleri tarif edilirken de bir ACL veya prefix-list kullanılmalıdır:
match ip address <ACL_no> | <ACL_ismi> | prefix-list <prefix_list_ismi>
Yukarıda ACL ile yaptığımız filtrelemeyi route-map ile yapmak istersek:
Router(conf)#access-list 60 permit 10.0.0.0 0.0.0.255
Router(config)#route-map FILTRE deny 10
Router(config-route-map)#match ip address 60
Router(config-route-map)#exit
Router(config)#router eigrp 1
Router(config-router)#distribute-list route-map FILTRE out
Dikkat edilirse yukarıda 50 no’lu ACL’de 10.0.0.0/24 network’ünü deny ederken burda 60 no’lu ACL’de permit ettik. Fakat route-map satırının kendisi deny. Bunu şu şekilde açıklayalım: Route filtering’de route-map kullandığımızda belirttiğimiz ACL tarafından permit edilen satırlarda eşleşme aranır. Eşleşme bulunduğunda route-map satırı permit ise öğretilir, deny ise öğretilmez. Eğer ACL tarafından deny ediliyorsa route-map satırının permit veya deny olması önemli değildir, bir sonraki route-map satırına geçilir. İşte tam da bu sebepten dolayı bu konfigürasyonda router hiç bir rotayı öğretmez

atırlarsanız yazımın başında route-map’in de ACL gibi olduğunu, sonunda implicit deny olduğunu söylemiştim. Yani 10 no lu route-map satırına eşleşmeyen rota bilgisi implicit deny’a düşecektir. Implicit deny’ın match parametresini de permit any şeklinde bir ACL olarak düşünebiliriz. Yani tüm rota bilgileri deny edilecektir. Bu yüzden önceki konfigürasyonda ACL’nin sonuna permit any yazdığımız gibi bu konfigürasyonda da alttaki komut yazılır.
Router(config)#route-map FILTRE permit 20

----------------------


Distribute List


Bir kutunun içersine neleri koyacagımızı belirtir.

R1(config)# router rip
R1(config-router)# distribute-list prefix RIP-OUT out s0/0 (out gonderdiğim in aldığım paketler interface yazmazsak tum interfacelere uygular)



192.168.8.0 blogunu duyurmadık.

R2(config)# ip access-list standard OSPF_AREA20_FILTER
R2(config-std-nacl)# remark USED IN DIST LIST TO FILTER OSPF AREA 20 ROUTES
R2(config-std-nacl)# deny 192.168.8.0 0.0.3.255
R2(config-std-nacl)# permit any
R2(config-std-nacl)# exit 
 
 
R2(config)# router eigrp 1
R2(config-router)# distribute-list OSPF_AREA20_FILTER out ospf 1
 
İkinci yol sadece 172.16.0.0 ipsini duyurmak;
 
 
R2(config)# ip prefix-list EIGRP_192.168_FILTER description USED WITH DIST LIST TO FILTER EIGRP ROUTES 
R2(config)# ip prefix-list EIGRP_192.168_FILTER permit 172.16.0.0/16 le 24 

R2(config)# router ospf 1
R2(config-router)# distribute-list prefix EIGRP_192.168_FILTER out eigrp 1
  

Access list ile 

R2(config)# ip access-list standard R3_ROUTES_ACL 
R2(config-std-nacl)# remark ACL USED TO FILTER R3 ROUTES USED WITH ROUTE MAP
R2(config-std-nacl)# permit 192.168.25.0 0.0.0.255
R2(config-std-nacl)# permit 192.168.30.0 0.0.0.255
R2(config-std-nacl)# exit

config)# route-map FILTER_R3_ROUTES deny 10
R2(config-route-map)# description FILTER R3 OSPF ROUTES 192.168.25 AND 192.168.30
R2(config-route-map)# match ip address R3_ROUTES_ACL
R2(config-route-map)# exit
R2(config)# route-map FILTER_R3_ROUTES permit 20 
R2(config-route-map)# description PERMIT ALL OTHER OSPF ROUTES FROM R3
R2(config-route-map)# exit

R2(config)# router eigrp 1
R2(config-router)# redistribute ospf 1 route-map FILTER_R3_ROUTES metric 64 100 255 1 1500







Prefix ile;
 Sadece 192.168.48.0/22 ye izin veriyoruz.
 
R1(config)# ip prefix-list RIP-OUT permit 192.168.48.0/22
R1(config)# ip prefix-list RIP-OUT deny 192.168.48.0/22 le 24
R1(config)# ip prefix-list RIP-OUT permit 0.0.0.0/0 le 32
 
R1(config)# router rip
R1(config-router)# distribute-list prefix RIP-OUT out s0/0 
 
 -----------------------------
 
R2(config)# ip prefix-list R1-R2_SEGMENT permit 172.16.12.0/24
R2(config)# route-map R1-R2_SEGMENT permit 10
R2(config-route-map)# description FILTER AND ADD ATTRIBUTE TO 172.16.12.0/24 SEGMENT
R2(config-route-map)# match ip address prefix-list R1-R2_SEGMENT
R2(config-route-map)# set metric 25
R2(config-route-map)# set metric-type type-1 
R2(config-route-map)# exit
R2(config)# route-map R1-R2_SEGMENT permit 20 
R2(config-route-map)# description PERMIT ALL OTHER R1 EIGRP INTO OSPF ROUTES
R2(config-route-map)# exit


R2(config)# router ospf 1
R2(config-router)# redistribute eigrp 1 subnets route-map R1-R2_SEGMENT
R2(config-router)# exit
R2(config)#

https://ethernuno.wordpress.com/2016/06/02/ccnp-route-300-101-prt-3-9-configure-and-verify-filtering-with-any-protocol/

Hiç yorum yok:

Yorum Gönder