Narzędzia użytkownika

Narzędzia witryny


sk1:routing_wstep

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
sk1:routing_wstep [2018/04/10 15:41]
jkonczak [[Ekstra] Wybrane mechanizmy odrzucające nielogiczne pakiety w Linuksie]
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 48: Linia 48:
 ===== Wyświetlanie tablic routingu w systemie Linux ===== ===== Wyświetlanie tablic routingu w systemie Linux =====
 Narzędzia ''​route''​ (net-tools) i ''​ip route''​ (iproute2) Narzędzia ''​route''​ (net-tools) i ''​ip route''​ (iproute2)
 +
 Wypisanie trasy: Wypisanie trasy:
   * ''​route''​   * ''​route''​
   * ''​ip route [list/​show]''​\\   * ''​ip route [list/​show]''​\\
-Sprawdzenie ​trasy do konkretnego ​adresu: +Sprawdzenie ​adresu następnego skoku do podanego ​adresu ​docelowego
-  * ''​ip route get [addr]''​+  * ''​ip route get <addr>''​ 
 + 
 +++++ Przykłady poleceń |  
 +<​html><​pre>​ 
 +<b>/ # ip route</​b>​ 
 +<span title="​Trasa domyślna (trasa do 0.0.0.0/​0)"​ style="​background-color:​rgba(0,​255,​0,​0.2)">​default</​span>​ via 10.0.1.2 dev br0 proto dhcp src 10.0.1.3 metric 3  
 +<span title="​Cel trasy - sieć 10.0.0.0/​24"​ style="​background-color:​rgba(0,​255,​0,​0.2)">​10.0.0.0/​24</​span>​ <span title="​Następny skok" style="​background-color:​rgba(255,​0,​0,​0.2)">​via 10.0.1.1</​span>​ <span title="​Urządzenie przez które dostępny jest adres następnego skoku" style="​background-color:​rgba(255,​255,​0,​0.4)">​dev br0</​span>​ proto dhcp <span title="​Adres używany jako źródłowy,​ ma znaczenie jeśli komputer ma wiele adresów IP" style="​background-color:​rgba(0,​0,​255,​0.15)">​src 10.0.1.3</​span>​ <span title="​Metryka (koszt) trasy" style="​background-color:​rgba(255,​0,​255,​0.2)">​metric 3</​span>​  
 +<span title="​Trasa bez adresu IP następnego skoku oznacza, że komputery z tej sieci są bezpośrednio połączone do podanego interfejsu"​ style="​background-color:​rgba(255,​0,​0,​0.2)">​10.0.1.0/​24 dev br0</​span>​ proto dhcp scope link src 10.0.1.3 metric 3  
 +10.0.2.0/24 via 10.0.1.254 dev br0  
 +10.0.3.0/24 via 10.0.1.254 dev br0 metric 200 <span title="​Przykład dodatkowej opcji trasy" style="​background-color:​rgba(0,​0,​0,​0.1)">​mtu 1480</​span>​  
 +<span title="​Przykład specjalnego typu trasy (tutaj: zaznaczenie,​ że tych adresów nie ma w sieci)"​ style="​background-color:​rgba(0,​0,​0,​0.1)">​blackhole 10.0.4.0/​24</​span>​  
 + 
 +<b>/ # route -n</​b>​ 
 +Kernel IP routing table 
 +Destination ​    ​Gateway ​        ​Genmask ​        Flags Metric Ref    Use Iface 
 +<span title="​Trasa domyślna"​ style="​background-color:​rgba(0,​255,​0,​0.2)">​0.0.0.0</​span> ​        ​10.0.1.2 ​       0.0.0.0 ​        ​UG ​   3      0        0 br0 
 +<span title="​Cel trasy - sieć lub komputer 10.0.0.0, w zależności od maski podanej dalej" style="​background-color:​rgba(0,​255,​0,​0.2)">​10.0.0.0</​span> ​       10.0.1.1 ​       <span title="​Maska adresu docelowego – w tym przypadku /24, czyli jest to adres do sieci" style="​background-color:​rgba(0,​255,​0,​0.2)">​255.255.255.0</​span> ​  ​UG ​   3      0        0 br0 
 +10.0.1.0 ​       <span title="​Brak adresu następnego skoku oznacza sieć bezpośrednio połączoną"​ style="​background-color:​rgba(255,​0,​0,​0.2)">​0.0.0.0</​span> ​        ​255.255.255.0 ​  ​U ​    ​3 ​     0        0 br0 
 +10.0.2.0 ​       <span title="​Adres następnego skoku" style="​background-color:​rgba(255,​0,​0,​0.2)">​10.0.1.254</​span> ​     255.255.255.0 ​  ​UG ​   0      0        0 br0 
 +10.0.3.0 ​       10.0.1.254 ​     255.255.255.0 ​  ​UG ​   200    0        0 br0 
 +10.0.4.0 ​       0.0.0.0 ​        ​255.255.255.0 ​  ​U ​    ​0 ​     0        0 * 
 + 
 +<b>/ # ip route get 10.0.1.2</​b>​ 
 +10.0.1.2 dev br0 src 10.0.1.3 uid 1000  
 +    cache  
 + 
 +<b>/ # ip route get 10.0.0.1</​b>​ 
 +10.0.0.1 via 10.0.1.1 dev br0 src 10.0.1.3 uid 1000  
 +    cache  
 + 
 +<b>/ # ip route get 150.254.32.129</​b>​ 
 +150.254.32.129 via 10.0.1.2 dev br0 src 10.0.1.3 uid 1000  
 +    cache
  
 +<b>/ # ip route get 10.0.3.3</​b> ​   ​
 +10.0.3.3 via 10.0.1.254 dev br0 src 10.0.1.3 uid 1000 
 +    cache mtu 1480
 +</​pre></​html>​
 +++++
 ===== Polityka systemu względem ruchu przechodzącego ===== ===== Polityka systemu względem ruchu przechodzącego =====
 Domyślnie Linux **nie** pozwala na przekazywanie (forward) pakietów. \\ Domyślnie Linux **nie** pozwala na przekazywanie (forward) pakietów. \\
Linia 104: 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 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:  ​
-  net.ipv4.conf.all.rp_filter=0 +  ​sysctl ​net.ipv4.conf.all.rp_filter=0 
-  net.ipv4.conf.p4p1.rp_filter=0 +  ​sysctl ​net.ipv4.conf.p4p1.rp_filter=0 
-  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 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:  ​
-  net.ipv4.conf.p4p1.accept_local=1 +  ​sysctl ​net.ipv4.conf.p4p1.accept_local=1 
-  net.ipv4.conf.p4p2.accept_local=1+  ​sysctl ​net.ipv4.conf.p4p2.accept_local=1
  
 Dokładny opis: https://​www.kernel.org/​doc/​Documentation/​networking/​ip-sysctl.txt Dokładny opis: https://​www.kernel.org/​doc/​Documentation/​networking/​ip-sysctl.txt
sk1/routing_wstep.1523367694.txt.gz · ostatnio zmienione: 2018/04/10 15:41 przez jkonczak