Obsah
Routing a ASN
Zde budeme shromažďovat dulezite poznámky k routingu. Routing realizujeme pomocí démona QUAGGA
- MRLG pro CZFree - http://sysifos.brevnov.czf/mrlg/
- MRLG pro Internet - http://dionysus.spoje.net/mrlg/
ospfd (ipv4)
ospf filtry
OSPF filtry zabranuji šíření nežádoucích IP rozsahů do zbytku sítě (např. natované a jiné pomocné rozsahy)
router ospf redistribute connected metric-type 1 route-map just-cloud ... distribute-list net-cloud out connected access-list net-cloud permit 10.11.0.0/16 access-list net-cloud permit 10.34.0.0/16 access-list net-cloud permit 77.87.240.0/21 access-list net-cloud deny any route-map just-cloud permit 10 match ip address net-cloud
Pokud chceme vsechny connected routy sirit s volitelnou metrikou - napr. pouzivame u anycastu, kde chceme sirit jednu IP adresu z vice routeru:
redistribute connected metric 1000 route-map just-cloud
Nastaveni ospf router ID
Je nutne dodrzet tato pravidla:
- Pokud ma router nejaky dummy interface, tak jako ospf router-id pouzijeme IP adresu dummy interface
- Pokud ma router vice linek a nema zaroven zadny dummy interface (napr. klientsky router u zakaznika se dvema linkama) pouzijeme jako ospf router-id IP adresu vnitrniho LAN rozhrani smerem k zakaznikovi
- NIKDY nepouzivame jako ospf router id IP adresu rozhrani, na ktere je zapnute ospf (typicky propojovavaci rozsahy mezi routery)
Nastaveni ospf filtru na mikrotiku
Dulezite udelat na vsech mikrotikach, ktere maji zapnute ospf
routing filter add chain=ospf-out prefix=10.0.0.0/8 prefix-length=8-32 action=accept routing filter add chain=ospf-out prefix=77.87.240.0/21 prefix-length=21-32 action=accept routing filter add chain=ospf-out action=reject
* Mikrotik RouterOS v7
odlisnosti v nastaveni ospf-out filtru od verze 7.x - ukazano na predchozim nastaveni:
routing/filter/rule/ add chain=OSPF-OUT disabled=no rule="if ( dst in 10.0.0.0/8 ) { accept }" routing/filter/rule/ add chain=OSPF-OUT disabled=no rule="if ( dst in 77.87.240.0/21 ) { accept }" routing/filter/rule/ add chain=OSPF-OUT disabled=no rule="if ( dst in 0.0.0.0/0 ) { reject }"
POZOR: Pokud chcete v mikrotiku z nejakeho duvodu zadat na pevno routu do 10.0.0.0/8 staticky, je potřeba upravit i ospf filtr, aby se tato staticka routa nesirila dal do site !! - tj. v prvnim pravidle zmenime /8 na nejmensi mozny rozsah napr. pouze brevnov.
routing filter add chain=ospf-out prefix=10.11.0.0/16 prefix-length=16-32 action=accept
Sireni default routy
Na hranicnim BGP routeru
Prikaz pro distribuci musi byt pred definici networku, jinak to nefunguje ..
router ospf ospf router-id 77.87.240.1 redistribute connected route-map just-cloud redistribute connected metric-type 1 redistribute static metric-type 1 default-information originate always metric-type 1 passive-interface eth0 passive-interface eth1 passive-interface eth2 passive-interface vlan3300 network 77.87.240.20/30 area 0 network 77.87.240.8/30 area 0
Pokud chceme sirit IP adresu routru jako default gateway do zbytku site (typicky na BGP routeru s full route, ktera nema zadanou default routu) pouzijeme prikaz
default-information originate always metric-type 1
Na jinem typu routeru
Toto predpokladá, že je default routa zadaná na příslušném routeru staticky
default-information originate metric-type 1
Telnet - VTYSH
Quaggu je doporučeno konfigurovat přímo bez editace konfiguračních souborů (a nutnosti následujícího restartu). Požít se k tomu dá buď připojení přes telnet na příslušný port démona:
Vyžaduje znalost hesla do terminálu (zjistit se dá přečtením z konfiguračního souboru)
127.0.0.1:2601 - zebra 127.0.0.1:2604 - ospfd 127.0.0.1:2605 - bgpd
root@veskrini:~# telnet localhost 2601 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Hello, this is Quagga (version 0.99.15). Copyright 1996-2005 Kunihiro Ishiguro, et al. User Access Verification Password:
Druhá možnost je použít příkaz VTYSH, který sjednocuje všechny konfigurace do jednoho shellu.
Před použitím příkazu VTYSH se ujistěte, že máte v souboru /etc/bash.bashrc přidanou řádku export VTYSH_PAGER=more
Na prikladu si ukazeme, jak pridat statickou routu bez nutnosti restartu quaggy:
1. pres sshcko vlezeme na router, kde chceme routu nastavovat 2. zavolane prikaz rw 3. zavolame prikaz vtysh
root@sysifos:~# vtysh Hello, this is Quagga (version 0.99.10). Copyright 1996-2005 Kunihiro Ishiguro, et al. sysifos# sysifos# configure terminal
Po zadani prikazu configure terminal jsme v konfiguracnim rezimu
sysifos(config)#
chceme pridat do rozsahu subnet napr. 10.11.120.0/24 kterou budeme routovat pres router 10.11.6.236
sysifos(config)# ip route 10.11.120.0/24 10.11.6.236
Po zadani enter se zmena ihned projevi. pro kontrolu muzeme napsat prikaz show running-config
Na konec je potreba jeste zmenu ulozit do konfiguraku, aby se projevila i po restartu serveru.
sysifos(config)# exit sysifos# write file
terminal pak opustime dalsim napsanim prikazu exit
4. Zavolame prikaz ro
Pokud chceme jiz existujici routu zrusit, zadavame prikaz stejne, jenom pred prikaz pridame slovo no
sysifos(config)# no ip route 10.11.120.0/24 10.11.6.236
Výpis existujících rout
1. Pripojime se na terminal ospf:
root@sysifos:~# vtysh Hello, this is Quagga (version 0.99.10). Copyright 1996-2005 Kunihiro Ishiguro, et al. sysifos#
2. Zadame prikaz (pro volani prikazu show neni potreba zalogovani do konfiguracni urovne, tedy staci jen zalogovani pres telnet)
sysifos# show ip ospf database OSPF Router with ID (10.11.6.234) Router Link States (Area 0.0.0.0) Link ID ADV Router Age Seq# CkSum Link count 10.11.0.1 10.11.0.1 901 0x8000becb 0xc2ce 27 10.11.0.3 10.11.0.3 614 0x800033e9 0xa57c 5 10.11.0.4 10.11.0.4 1285 0x800030ad 0x8e4b 1 .... Net Link States (Area 0.0.0.0) Link ID ADV Router Age Seq# CkSum 10.11.6.234 10.11.6.234 1477 0x8000055a 0x4463 10.11.7.97 10.11.0.15 635 0x800005aa 0xa0cc 10.11.7.193 10.11.0.44 749 0x80000311 0x7f25 10.11.7.241 10.11.0.44 640 0x800003e5 0x87c5 10.11.8.2 10.11.0.5 1278 0x80000547 0x9712 10.11.9.18 10.11.0.22 1426 0x800004d4 0xf3f5 .... 10.34.0.1 10.34.0.1 539 0x800000b5 0x2709 E1 10.34.0.1/32 [[0x0]] 10.34.0.2 10.34.0.2 1127 0x80006f06 0x2846 E1 10.34.0.2/32 [[0x0]] 10.34.0.6 10.34.0.2 1127 0x800055f3 0x7224 E1 10.34.0.6/32 [[0x0]] 10.34.0.64 10.34.0.64 1306 0x80001522 0x1b15 E1 10.34.0.64/32 [[0x0]] 10.34.0.69 10.34.0.69 499 0x80000d30 0xc659 E1 10.34.0.69/32 [[0x0]] 10.34.0.70 10.34.0.70 1533 0x80001f5b 0x2ab6 E1 10.34.0.70/32 [[0x0]] 10.34.1.8 10.34.0.1 439 0x800000b5 0xab83 E1 10.34.1.8/29 [[0x0]] 10.34.4.192 10.34.0.1 459 0x800000b5 0xe382 E1 10.34.4.192/28 [[0x0]] 10.34.4.208 10.34.0.1 599 0x800000b5 0x81cb E1 10.34.4.208/29 [[0x0]] 10.34.5.32 10.34.0.1 479 0x80000066 0x9ea6 E1 10.34.5.32/28 [[0x0]] 10.34.6.0 10.34.0.2 1127 0x800055f3 0x6fa6 E1 10.34.6.0/25 [[0x0]] 10.34.6.240 10.34.0.2 1127 0x800055f3 0xa80c E1 10.34.6.240/28 [[0x0]] 10.34.7.0 10.34.7.1 141 0x80001f68 0xf2dd E1 10.34.7.0/25 [[0x0]] 10.34.12.0 10.34.7.1 141 0x80001f68 0xb893 E1 10.34.12.0/24 [[0x0]] ...
Co dělat když to nefunguje
Nejprve je potreba zapnout debugovani. Na zacatek konfiguraku ospfd.conf pridejte toto
debug ospf ism debug ospf zebra log file /tmp/ospf.log
Restartujte quaggu a proctete log. Pokud najdete hlasku, podobnou teto:
Ztracejí se OSPF routy
Pokud v logu najdeme tuto hlasku
2013/03/24 22:29:46 OSPF: can't setsockopt IP_ADD_MEMBERSHIP (fd 6, addr 10.11.11.41, ifindex 43, AllSPFRouters): No buffer space available; perhaps a kernel limit on # of multicast group memberships has been exceeded?
pak je problem v omezeni multicastu na routeru. Resenim je zvetsit limit na multicastove skupiny na routeru. Do /etc/sysctl.conf pridejte nasledujici radku
net.ipv4.igmp_max_memberships=400
zadejte prikaz sysctl -p a restartujte quaggu. Nyni by jiz vse melo opet fungovat
POZOR: Nezapomente opet po dokonceni debugovani zakomentovat prislusne radky v ospfd.conf !! Pokud na to zapomenete, je schopen log pretect a quagga se potom muze splasit !
BGP
Mapa site
Visuzalizace BGP peeru atp. - https://www.robtex.com/as