migracja PBR z Cisco do Junipera

JunOS / Juniper / Netscreen

Moderatorzy: mikrobi, aron, garfield, gangrena, Seba

Wiadomość
Autor
h33ren
member
member
Posty: 49
Rejestracja: 15 paź 2017, 13:46

migracja PBR z Cisco do Junipera

#1

#1 Post autor: h33ren » 13 lut 2018, 11:27

Siemka,

Mam taki PBR na switchu Cisco.

Kod: Zaznacz cały

interface Vlan130
 ip vrf forwarding ace
 ip address 172.16.30.1 255.255.255.0
 no ip redirects
 no ip unreachables
 no ip proxy-arp
 ip flow ingress
 ip policy route-map SetNextHop
 
route-map SetNextHop permit 10
 match ip address 121
 set ip next-hop 172.16.21.1
 set interface Vlan121
 
access-list 121 permit ip host 172.16.30.24 xx.xx.0.0 0.1.255.255
access-list 121 permit ip host 172.16.30.24 xx.xx.71.72 0.0.0.7
access-list 121 permit ip host 172.16.30.24 xx.xx.0.0 0.0.255.255
Mój pomysł by to zmigrować jest taki.

Kod: Zaznacz cały

firewall family inet {
	filter SetNextHop {
		term 0 {
			from {
				source-address {
					172.16.30.24/32;
					}
				}
			from {
				destination-address {
					prefix-list ADRESY-DOCELOWE;
					}
				}
			then 
				{
				next-interface irb.121;
				}
			then 
				{
				next-ip 172.16.21.1/32;
				}
			then
				{
				accept;
				}
interface irb.130 {
		family inet {
			filter {
				input SetNextHop;
				}
			}
		}
Co do wersji Junka nie mam pewności czy dobrze myślę że można zrobić next-interface oraz next-ip tak jak to napisałem. Również czy tak można zapisać source i destnation ?

Na stronie Junka są przykłady ale tam są dla interfejsów fizycznych (i często zakładają że PBR będzie między instancjami rutowania), a nie ma nigdzie dla VLANów gdzie oba VLANy są w tej samej instancji (mój scenariusz).
CCNA R&S | CCNA Sec

Szefo89
member
member
Posty: 27
Rejestracja: 10 mar 2016, 17:41

Re: migracja PBR z Cisco do Junipera

#2

#2 Post autor: Szefo89 » 14 lut 2018, 13:16

Juniper realizuje PBR przez dedykowaną instancję routingu, konfiguruje się ją jako typ forwarding. Następnie w filtrze dodajesz akcję "then routing-instance X". Nawet jeżeli cały ruch masz w jednej instancji, to żeby odpalić PBR (lub jak to nazywa Juniper - FBF), musisz stworzyć nową instancję.

Kod: Zaznacz cały

R# set routing-instances PBR instance-type forwarding 
R# set routing-instances PBR routing-options 0/0 next-hop X
Jeżeli chcesz mieć różne next-hopy dla całego ruchu, to musisz niestety stworzyć kilka instancji routingu, typu PBR_TO-R2, PBR_TO-R3 i tak dalej.

Oprócz tego musisz pamiętać, żeby do nowej instancji routingu wrzucić IPki z interfejsów, robi się to rib-groupą interface-routes. Rib-groupę tworzysz w ten sposób:

Kod: Zaznacz cały

R# set routing-options rib-groups INTERFEJSY import-rib [inet.0 PBR.inet.0]
R# set routing-options interface-routes rib-group inet INTERFEJSY
Ta konfiguracja sprawi, że IPki Twoich interfejsów zostaną zaciągnięte z inet.0 do PBR.inet.0. Dzięki temu Twoje next-hop będą osiągalne z nowej tablicy routingowej.

h33ren
member
member
Posty: 49
Rejestracja: 15 paź 2017, 13:46

Re: migracja PBR z Cisco do Junipera

#3

#3 Post autor: h33ren » 14 lut 2018, 16:35

Dzięki za podpowiedź, ale w takim razie czy ten interfejs irb.121 może być równocześnie w dwóch routing-instance ?

Bo obecnie on jest w tym samym routing-instance typu virtual-router co irb.130.

No i czy irb.130 musi też być wrzucony do "nowego" routing-instance typu forwarding ?
CCNA R&S | CCNA Sec

Szefo89
member
member
Posty: 27
Rejestracja: 10 mar 2016, 17:41

Re: migracja PBR z Cisco do Junipera

#4

#4 Post autor: Szefo89 » 15 lut 2018, 08:33

Interfejs może być tylko w jednej tablicy, więc nie można go wrzucić do tej forwarding. Myk jest taki, że tworzysz firewall filter w którym definiujesz interesujący Ciebie ruch, a jako akcję podajesz "then routing-instance X". Taki filtr podpinasz pod Twój interfejs (który jest w stworzonym przez Ciebie virtual-routerze) i jeżeli przyjdzie określony przez Ciebie typ ruchu, to router będzie szukał next-hopa w innej tablicy routingu.

W konfiguracji routing-instance będziesz miał tylko jej typ (forwarding) oraz static route (0/0).

Niestety tak to realizuje Juniper, w Cisco jest to o wiele prostsze bo podpinasz tylko odpowiednią politykę pod interfejs i masz wszystko z głowy.

https://www.juniper.net/documentation/e ... ample.html

Tutaj masz przykład. Spróbuj z tym powalczyć, jakby coś nie działało to wrzuć swoją konfiguracje, zweryfikujemy ;)

h33ren
member
member
Posty: 49
Rejestracja: 15 paź 2017, 13:46

Re: migracja PBR z Cisco do Junipera

#5

#5 Post autor: h33ren » 16 mar 2018, 10:41

Szefo

Spłodziłem tam kod dla Junka z tego Cisco PBR.

Cisco PBR

Kod: Zaznacz cały

interface Vlan130
 ip vrf forwarding ace
 ip address 172.16.30.1 255.255.255.0
 no ip redirects
 no ip unreachables
 no ip proxy-arp
 ip flow ingress
 ip policy route-map SetNextHop
 
route-map SetNextHop permit 10
 match ip address 121
 set ip next-hop 172.16.21.1
 set interface Vlan121
 
access-list 121 permit ip host 172.16.30.24 xx.xx.0.0 0.1.255.255
access-list 121 permit ip host 172.16.30.24 xx.xx.71.72 0.0.0.7
access-list 121 permit ip host 172.16.30.24 xx.xx.0.0 0.0.255.255
A na Junka napisałem taki kod

Kod: Zaznacz cały

policy-options {
	prefix-list LISTA_121 {
		xx.xx.0.0/15;
		xx.xx.71.72/29;
		xx.xx.0.0/16;
		}
	}
routing-instances {
	ROUTE121 {
		instance-type forwarding;
		routing-options {
			static {
				route 0.0.0.0/0 next-hop 172.16.21.1;
				}
			}
		}
	}
firewall {
	FILTER_130 {
		term 1 {
			from {
				source-address {
					172.16.30.24/32;
					}
				destination-address {
					prefix-list LISTA_121;
					}
				}
			then {
				next-interface {
					irb.121;
					routing-instance ROUTE121;
					}
				}
			}
		}
	}
routing-options {
	interface-routes {
		rib-group {
			inet FBF_130_TO_121
				{
					import-rib INSIDE.inet.0
					import-rib ROUTE121.inet.0
				}
			}
		}
	}
interfaces {
	irb {
		unit 130 {
			family inet {
				filter input FILTER_130;
				}
			}
		}
	}
Dobrze to zrobiłem czy się gdzieś walnąłem ?

Dodam że VLANy 121 i 130 (irb.121 i irb.130) są w tej samej routing instance o nazwie INSIDE.
CCNA R&S | CCNA Sec

Szefo89
member
member
Posty: 27
Rejestracja: 10 mar 2016, 17:41

Re: migracja PBR z Cisco do Junipera

#6

#6 Post autor: Szefo89 » 17 mar 2018, 00:21

Jeżeli dobrze pamiętam, to nie musisz dodawać interfejsu irb w filtrze w akcji THEN. Wystarczy podać tam instancję routingu, a reszta zadziała dzięki 0/0.

Oprócz tego wydaje mi się, że połączyłeś dwie komendy rib-groups w jedną, zrób to raczej tak:

Kod: Zaznacz cały

set routing-options rib-groups FBF_130_TO_121 import-rib [INSIDE.inet.0 ROUTE121.inet.0]
set routing-options interface-routes rib-group inet FBF_130_TO_121
Pierwszy wpis tworzy regułę pozwalającą na kopiowanie z INSIDE do ROUTE121, a później przypina się ją pod interface-routes.

Gdybyś chciał ograniczyć to do konkretnych prefixów, a nie wrzucać wszystkie interfejsy z INSIDE, to możesz stworzyć politykę i podpiąć ją w rib-group:

Kod: Zaznacz cały

set routing-options rib-groups FBF_130_TO_121 import-policy X

Szefo89
member
member
Posty: 27
Rejestracja: 10 mar 2016, 17:41

Re: migracja PBR z Cisco do Junipera

#7

#7 Post autor: Szefo89 » 23 mar 2018, 18:32

Generalnie udało mi się sprawdzić i Twoja wersja z pierwszego postu również działa. Widocznie Juniper uznał, że kombinowanie z instancjami routingu jest przesadzone :)

Pamiętaj tylko, że w akcji "next-ip" podajesz adres, ale także musisz dodać odpowiednią instancję routingu, jeżeli ten docelowy ipek nie znajduje się w głównej.

h33ren
member
member
Posty: 49
Rejestracja: 15 paź 2017, 13:46

Re: migracja PBR z Cisco do Junipera

#8

#8 Post autor: h33ren » 25 mar 2018, 15:47

O super dzięki że sprawdziłeś.

Ogólnie to po Wielkanocy jak skończę migracji innych elementów które mam w kolejce, to będę migrował właśnie ten PBR z Cisco na Junka i wtedy dam znać jak poszło. Ale generalnie powinno pójść bo mam też wskazówki od Ciebie.

Wielkie dzięki :)
CCNA R&S | CCNA Sec

h33ren
member
member
Posty: 49
Rejestracja: 15 paź 2017, 13:46

Re: migracja PBR z Cisco do Junipera

#9

#9 Post autor: h33ren » 05 cze 2018, 14:21

W koncu mialem okazje nad tym znowu usiasc. No i jak sie mozna spodziewac nie zadzialalo mi to.

Stwierdzilem ze zrobie tak jak radziles z osobna routing-instance (UWAGA ja nie mam opcji wyboru typu forwarding, a wiec wybralem virtual-router). Oto moj nowy kod.

Kod: Zaznacz cały

[policy-options]
    policy-statement INSIDE-TO-ROUTE121-RIB {
        term 1 {
            from {
                route-filter 172.16.21.0/24 exact;
            }
            then accept;                
        }
        term 2 {
            then reject;
        }
    }

routing-options {

    rib-groups {
        INSIDE-TO-ROUTE121 {
            import-rib [ INSIDE.inet.0 ROUTE121.inet.0 ];
            import-policy INSIDE-TO-ROUTE121-RIB;
        }
    }

[routing-instances]
    ROUTE121 {
        instance-type virtual-router;
        routing-options {
            interface-routes {
                rib-group inet INSIDE-TO-ROUTE121;
            }
            static {
                route 0.0.0.0/0 next-hop 172.16.21.1;
            }
        }
    }     
No i teraz pytanie, dlaczego jak wykonam komende show route table ROUTE121 to nic w tabeli routingu nie ma ?
CCNA R&S | CCNA Sec

Szefo89
member
member
Posty: 27
Rejestracja: 10 mar 2016, 17:41

Re: migracja PBR z Cisco do Junipera

#10

#10 Post autor: Szefo89 » 11 cze 2018, 10:11

Jeżeli dobrze widzę, to na jakimś z interfejsów powinieneś mieć podsieć 172.16.21.0/24, czy to się zgadza? Dodając exact w filtrze, złapie Ci tylko sieć /24, nie złapie na przykład 172.16.21.0/30.

Czy w instancji INSIDE masz aktywne interfejsy? Czy pojawiają się one w tablicy routingu INSIDE.inet.0?

Rib-group o nazwie "interface-routes" wyciągnie tylko podsieci z interfejsów, nie skopiuje wszystkich z danej tablicy do drugiej.

Dziwne też, że nie masz typu "forwarding", co to jest dokładnie za Juniper?

h33ren
member
member
Posty: 49
Rejestracja: 15 paź 2017, 13:46

Re: migracja PBR z Cisco do Junipera

#11

#11 Post autor: h33ren » 12 cze 2018, 15:07

Jest to QFX 5110 i wg dokumentacji nie ma opcji typu forwarding, podobno wynika to z rodzaju chipa ASIC jaki jest zastosowany w tym modelu.

W każdym razie zrobiłem to jeszcze inaczej, i w czwartek rano mam maintenance żeby sprawdzić czy mi to zadziała. Dam znać po maintenance :)
CCNA R&S | CCNA Sec

h33ren
member
member
Posty: 49
Rejestracja: 15 paź 2017, 13:46

Re: migracja PBR z Cisco do Junipera

#12

#12 Post autor: h33ren » 14 cze 2018, 11:18

Dziala.

Rozwiazalem ten problem w nastepujacy sposob.

Najpierw okreslam co mi potrzebne z tabeli rutowania.

Kod: Zaznacz cały

policy-options {
    policy-statement IMPORT-R121 {      
        term 1 {
            from {
                instance INSIDE;
                route-filter 172.16.21.0/24 exact;
            }
            then accept;
        }
        term 2 {
            then reject;
        }
    }
Robie instancje przekierowujaca.

Kod: Zaznacz cały

routing-instances {
...
    ROUTE121 {
        instance-type virtual-router;
        routing-options {
            static {
                route 0.0.0.0/0 next-hop 172.16.21.1;
            }
            instance-import IMPORT-R121;
        }
    }
Teraz filter

Kod: Zaznacz cały

firewall {
    family inet {
        filter FILTER_130 {
            term 1 {
                from {
                    source-address {
                        172.16.30.24/32;
                    }
                    destination-address {
                        XX.64.0.0/10;
                        XX.160.0.0/12;
                        XX.212.0.0/15;
                        XX.224.0.0/11;
                        XX.80.0.0/12;
                        XX.78.0.0/15;
                        XX.187.0.0/16;
                        XX.128.0.0/16;
                    }
                }
                then {
                    routing-instance ROUTE121;
                }
            }
            term 2 {
                from {
                    source-address {
                        172.16.30.24/32;
                    }
                }
                then accept;
            }
            term 3 {
                from {
                    source-address {
                        172.16.30.0/24;
                    }
                }
                then accept;
            }
        }
    }
}
No i na koncu podpiecie pod interfejs.

Kod: Zaznacz cały

interfaces {
...
       irb {
          ...
          unit 130 {
              family inet {
                address 172.16.30.1/24;
                filter {
                    input FILTER_130;
                }
              }
          }
No i dziala :-)
CCNA R&S | CCNA Sec

ODPOWIEDZ