ip route pokaż pole src


12

Przeczytałem stronę podręcznika ipi nadal nie rozumiem, co to srcjest, i nie mogłem znaleźć dużo dokumentacji.

Proszę, jeśli potrafisz to dokładnie wyjaśnić lub wskazać link, to dobra odpowiedź.


3
Nie wiesz, co oznacza „źródło” w kontekście komunikacji IP? Nie potrzebujesz usterki serwera - potrzebujesz książki Stevensa ...
voretaq7,

Odpowiedzi:


17

Podczas dodawania trasy do hosta z wieloma domami możesz chcieć mieć kontrolę nad źródłowym adresem IP, z którego host wysyła dane podczas rozpoczynania komunikacji przy użyciu tej trasy. Po to jest src .

Krótki przykład: masz hosta z dwoma interfejsami i adresami IP 192.168.1.123/24 i 10.45.22.12/24. Dodajesz trasę do 78.22.45.0/24 przez 10.45.22.1 i chcesz się upewnić, że nie wysyłasz do 78.22.45.0/24 przy użyciu adresu 192.168.1.123 (być może dlatego, że sieć 78.22.45.0/24 nie ma trasy powrotnej do 192.168.1.0/24 lub ponieważ nie chcesz, aby Twój ruch podążał tą trasą z jednego lub drugiego powodu):

ip route add 78.22.45.0/24 via 10.45.22.1 src 10.45.22.12

Pamiętaj, że podany przez ciebie kod src wpłynie tylko na ruch pochodzący z twojego hosta. Jeśli obcy pakiet jest kierowany, to oczywiście miałby już źródłowy adres IP, więc byłby przekazywany w niezmienionej formie (chyba że używasz NAT, ale to zupełnie inna sprawa). Ponadto to ustawienie może zostać zastąpione przez proces specjalnie wybierający powiązanie z określonym adresem zamiast korzystania z ustawień domyślnych podczas inicjowania połączeń (raczej rzadko).


9

Ten srcatrybut jest wskazówką używaną przez algorytm wyboru adresu . Jest to istotne, gdy host ma wiele adresów IP, co zwykle jest, ale nie zawsze, gdy ma wiele interfejsów. Chociaż istnieją inne reguły, które wpływają na wybór adresu, a aplikacja sieciowa może również zastąpić algorytm wyboru za pomocą wywołań systemowych typu bind(), srcatrybut ten jest sposobem na użycie wyszukiwania w tablicy routingu, aby odpowiedzieć na pytanie: „Jeśli chcę zainicjować połączenie z hostem X, którego z moich adresów powinienem użyć? ”

Oto przykład ilustrujący użycie i efekt srcatrybutu. Aby podkreślić, że jest to związane z adresami i trasami, a nie tylko z interfejsami, ten przykładowy host ma tylko jeden interfejs sieciowy, ale dwa adresy. Ponadto oba adresy znajdują się w tej samej podsieci, aby podkreślić fakt, że nie ma innego oczywistego sposobu wyboru, którego należy użyć.

$ ip -4 addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 10.1.0.2/24 brd 10.1.0.255 scope global eth0
    inet 10.1.0.16/24 scope global secondary eth0
$ ip route list dev eth0
10.1.0.32/27  scope link  src 10.1.0.16
10.1.0.0/24  proto kernel  scope link  src 10.1.0.2

Ten host może komunikować się z dowolnym z pozostałych 252 adresów w tej podsieci / 24 z dowolnego adresu, ale domyślnie użyje 10.1.0.16 podczas inicjowania połączenia z 10.1.0.32 do 10.1.0.63 i użyje 10.1.0.2 dla wszystkich reszta.

Jeśli host odpowiada, a nie inicjuje, odpowie na adres docelowy żądania. Na przykład, jeśli inny host w 10.1.0.32 łączy się z tym hostem w 10.1.0.2, odpowiedź przyjdzie z 10.1.0.2, nawet jeśli nie jest to zgodne z srcatrybutem trasy powrotnej.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.