Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Poprzednia wersja Nowa wersja | Poprzednia wersja | ||
sk1:routing_wstep [2019/04/07 23:02] jkonczak [Wyświetlanie tablic routingu w systemie Linux] |
sk1:routing_wstep [2019/04/08 15:03] (aktualna) jkonczak [Tworzenie tablicy tras] |
||
---|---|---|---|
Linia 19: | Linia 19: | ||
Schemat wyboru trasy: | Schemat wyboru trasy: | ||
- | * wybiera się trasy do sieci w których znajduje się docelowy adres o najdłuższej masce, np.:<code>172.21.0.0/16 via 172.16.0.16 dev eth2 | + | * z tras do sieci w których znajduje się docelowy adres wybiera się trasy do sieci o najdłuższej masce, np.:<code>172.21.0.0/16 via 172.16.0.16 dev eth2 |
172.21.0.0/24 via 172.16.0.24 dev eth2 | 172.21.0.0/24 via 172.16.0.24 dev eth2 | ||
172.21.0.0/28 via 172.16.0.28 dev eth2</code> pakiet kierowany do 172.21.0.15 zostanie wysłany przez 172.16.0.28, a \\ pakiet kierowany do 172.21.0.55 zostanie wysłany przez 172.16.0.24 | 172.21.0.0/28 via 172.16.0.28 dev eth2</code> pakiet kierowany do 172.21.0.15 zostanie wysłany przez 172.16.0.28, a \\ pakiet kierowany do 172.21.0.55 zostanie wysłany przez 172.16.0.24 | ||
- | * jeśli wybór nie jest jednoznaczny - trasa o najmniejszym koszcie, np.:<code>150.254.44.0/23 dev wlan0 proto kernel scope link src 150.254.45.39 metric 2003 | + | * jeśli wybór nie jest jednoznaczny - trasa o najmniejszym koszcie, np.:<code>150.254.44.0/23 dev wlan0 proto kernel scope link src 150.254.45.39 metric 2003 |
150.254.44.0/23 dev wlan1 proto kernel scope link src 150.254.44.149 metric 1002</code>tu zawsze wybrana jest trasa przez 150.254.44.149, jako ta o niższym koszcie | 150.254.44.0/23 dev wlan1 proto kernel scope link src 150.254.44.149 metric 1002</code>tu zawsze wybrana jest trasa przez 150.254.44.149, jako ta o niższym koszcie | ||
* jeśli wybór nie jest jednoznaczny - pierwsza w tablicy.<code>default via 150.254.44.1 dev wlan0 | * jeśli wybór nie jest jednoznaczny - pierwsza w tablicy.<code>default via 150.254.44.1 dev wlan0 | ||
Linia 37: | Linia 37: | ||
* użycie protokołów routingu | * użycie protokołów routingu | ||
- | Protokoły trasowania można podzielić ze względu na obszar działania: | + | Protokoły trasowania można podzielić ze względu na obszar działania (w odniesieniu do obszarów autonomicznych (AS) [[https://en.wikipedia.org/wiki/Autonomous_system_(Internet)|[1]]]): |
* wewnętrzne (IGP - Interior Gateway Protocol), np. RIP, EIGRP, OSPF, IS-IS | * wewnętrzne (IGP - Interior Gateway Protocol), np. RIP, EIGRP, OSPF, IS-IS | ||
- | * zewnętrzna (EGP - Exterior Gateway Protocol) - obecnie (jedynym) używanym jest BGP | + | * zewnętrzne (EGP - Exterior Gateway Protocol) - obecnie (jedynym) używanym jest BGP |
albo ze względu na sposób działania: | albo ze względu na sposób działania: | ||
* wektora odległości (distance vector), np. RIP, IGRP – wymieniają się z sąsiadami informacjami o osiągalnych sieciach; wyznaczają tylko koszty dotarcia do sieci | * wektora odległości (distance vector), np. RIP, IGRP – wymieniają się z sąsiadami informacjami o osiągalnych sieciach; wyznaczają tylko koszty dotarcia do sieci | ||
Linia 142: | Linia 142: | ||
===== [Ekstra] Wybrane mechanizmy odrzucające nielogiczne pakiety w Linuksie ===== | ===== [Ekstra] Wybrane mechanizmy odrzucające nielogiczne pakiety w Linuksie ===== | ||
- | Linux, widząc pakiet od adresu A wchodzący na interfejs If sprawdza, czy zna trasę do nadawcy A (2) i czy trasa do A jest przez interfejs If (1). Następnie odrzuca pakiet jeśli zmienna jądra ''rp_filter'' ma wartość odpowiednio 2 lub 1. | + | Linux, widząc pakiet wysłany z adresu A i wchodzący na interfejs If sprawdza, czy zna trasę do nadawcy A (2) i czy trasa do A jest przez interfejs If (1). Jeśli nie jest spełnione (2) lub (1), to pakiet jest odrzucany o ile zmienna jądra ''rp_filter'' ma wartość odpowiednio 2 lub 1. |
\\ | \\ | ||
Aby wyłączyć to zachowanie, należy: | Aby wyłączyć to zachowanie, należy: | ||
Linia 149: | Linia 149: | ||
sysctl net.ipv4.conf.p4p2.rp_filter=0 | sysctl net.ipv4.conf.p4p2.rp_filter=0 | ||
- | Linux, widząc pakiet od adresu A wchodzący na interfejs I sprawdza, czy nie ma ustawionego adresu A na którymś ze swoich interfejsów (czyli: czy ktoś się pod niego nie podszywa). Jeśli tak jest i zmienna ''accept_local'' jest wyłączona, pakiet jest odrzucany.\\ | + | Linux, widząc pakiet od adresu A wchodzący na interfejs I sprawdza, czy nie ma ustawionego adresu A na którymś ze swoich interfejsów (czyli: czy ktoś się pod niego nie podszywa). Jeśli tak jest, pakiet jest odrzucany o ile zmienna ''accept_local'' nie jest włączona.\\ |
Aby wyłączyć to zachowanie, należy: | Aby wyłączyć to zachowanie, należy: | ||
sysctl net.ipv4.conf.p4p1.accept_local=1 | sysctl net.ipv4.conf.p4p1.accept_local=1 |