Dlaczego istnieje tylko jedna brama domyślna?


3

Jestem nowicjuszem w sieci, próbując zrozumieć, jak działa wiele interfejsów sieciowych. Wątpię, czy na komputerze są co najmniej dwie karty sieciowe, co oznacza domyślna brama obecna w /etc/sysconfig/networkpliku. Czy jądro ma ładować równowagę między różnymi interfejsami, które mają bramy zdefiniowane w odpowiednim /etc/sysconfig/network-scripts/ifcfg-eth*pliku?

Odpowiedzi:


9

Brama domyślna to miejsce, w którym wysyłane są pakiety, gdy nie ma już określonej trasy - tak naprawdę brama domyślna ma trasę pasującą do wszystkich pakietów - trasa maski sieci / 0.

Spróbuj „netstat -rn”, aby zobaczyć trasy w systemie.

Brama domyślna nie jest interfejsem w systemie - zwykle jest to router lokalny. Może być osiągalny przez więcej niż jeden interfejs, chociaż zazwyczaj jest tylko jeden aktywny interfejs.

Nie jestem pewien co do równoważenia obciążenia, ale wydaje się rozsądne, że jeśli domyślna brama jest osiągalna z więcej niż jednego interfejsu, pakiety mogą być wysyłane ze wszystkich interfejsów do niej.

Prosty przykład konfiguracji sieci od podstaw:

ifconfig eth0 192.168.0.55 netmask 255.255.255.0
route add default gateway 192.168.0.1 eth0

Pierwsze polecenie konfiguruje interfejs i dodaje trasę do sieci lokalnej (192.168.0 / 24). Drugie polecenie dodaje domyślną trasę przez 192.168.0.1, która jest teraz osiągalna dzięki pierwszej trasie.

Jeśli masz drugi interfejs, możesz go również skonfigurować:

ifconfig eth1 192.168.0.56 netmask 255.255.255.0

Teraz każdy interfejs może osiągnąć domyślną bramę. Możesz sprawdzić, czy zachodzi równoważenie obciążenia, używając „ifconfig” i patrząc na pakiety RX / TX. Zwiększenie liczników wskazuje, że interfejs jest używany.

Aktualizacja:

W przypadku dwóch interfejsów w różnych sieciach można dodać więcej niż jedną bramę domyślną. Nie wiem, czy ta sytuacja jest obsługiwana przez etc / sysconfig. Jeśli nie, możesz dodać instrukcję „route add default gateway” do skryptu uruchamiania.

Trochę ciekawostek na ten temat: kiedyś można było wysłać pakiet przez bramę ze źródłowym adresem IP z drugiego interfejsu (routing asymetryczny). W ten sposób możesz wysyłać wszystkie pakiety z jednej bramy i odbierać je przez drugą. Jest to przydatne w przypadku, gdy masz połączenia z asymetryczną przepustowością w górę / w dół lub opóźnieniem (pomyśl satalite w dół i komórkowe łącze w górę).

Mówię „przyzwyczaiłem się”, ponieważ większość dostawców usług internetowych odfiltrowuje teraz pakiety ze źródłowym adresem IP, który nie jest przypisany do dalszego źródła.

Bardziej losowa podwójna zabawa:

Na laptopie mam dwie karty sieciowe: przewodową i bezprzewodową. Przypisuję im oba te same adresy IP w konfiguracji serwera DHCP na podstawie ich adresu ethernetowego. Po podłączeniu przewodowego uzyskuję dużą prędkość. Ale kiedy go odłączam, wszystko działa. Nie tracę nawet połączeń ze zdalnymi hostami. Jądro nie dba o to, z którego interfejsu pochodzi pakiet, o ile jest on powiązany z właściwym adresem IP.


Dziękuję za szczegółową odpowiedź. Co z przypadkiem, w którym każdy interfejs (eth0 lub eth1) jest obecny w dwóch różnych podsieciach (może być podłączony do różnych routerów)
Poorna

Zobacz zaktualizowaną odpowiedź
Julian

1
Dobra, szczegółowa odpowiedź, Julian. Mała uwaga na temat używania route add default gatewaywielu adapterów; to polecenie (i jego praca) jest ściśle powiązane z adapterem używanym podczas wydawania polecenia. Zwykle używam tego do wymuszania całego mojego prywatnego ruchu VPN przez mój nieużywany interfejs Wi-Fi; ale to tylko jeden z wielu dobrych przypadków użycia.
Jerry W Jackson

5

Domyślna brama powinna być osiągalna tylko przez jeden z interfejsów sieciowych. Posiadanie więcej niż jednej karty sieciowej w tej samej podsieci, a zatem potencjalnie niedeterministyczna ścieżka wyjściowa, może prowadzić do nieoczekiwanego i rozczarowującego zachowania.

Zobacz na przykład https://serverfault.com/questions/415304/multiple-physical-interfaces-with-ips-on-the-same-subnet

Jeśli naprawdę chcesz to zaimplementować, niezawodnym sposobem byłoby skonfigurowanie jakiejś formy agregacji sieci , co w przypadku Linuksa przekłada się na łączenie / tworzenie zespołów .


Można skonfigurować wiele bramek NIC do bram skonfigurowanych bez naruszania jakiegokolwiek standardu sieciowego. Obecnie mam Ethernet i Wi-Fi w tej samej sieci z tą samą bramą. W OSX i innych systemach operacyjnych jedna trasa będzie preferowana automatycznie względem drugiej, albo poprzez wyraźne uporządkowanie priorytetu interfejsu, albo za pomocą dowolnych środków, takich jak logiczna numeracja interfejsu. Jeśli skonfigurowany jest stały źródłowy adres IP, tak aby niezależnie od tego, który interfejs wysyła ruch, źródłowy adres IP jest taki sam i dostępny przez bramę, wówczas każdy interfejs może wysyłać na zmianę, bez problemu.
Nevin Williams

@NevinWilliams Przyznano, że standard zezwala na takie konfiguracje i definiuje kilka modeli opisujących oczekiwane zachowanie dotyczące przychodzących pakietów kierowanych na „zły” interfejs fizyczny. Odpowiedź zaktualizowana, aby usunąć standardowy punkt naruszenia.
jlliagre

Gdybyś określił „aktywną domyślną bramę”, nie miałbym żadnego problemu ... ale po dobrym chichotie, który miałem po sprawdzeniu odsyłacza, jesteśmy w porządku!
Nevin Williams,

3

W przypadku dwóch tras o równych metrykach stosowany jest schemat równoważenia obciążenia w systemie round-robin. Może to dotyczyć poszczególnych sieci lub poszczególnych pakietów. Routery Cisco (nie linksys) można skonfigurować tak, aby działały tak samo, ale pakiet zapewnia lepsze łącza równoważne dystrybucji. Jeśli chodzi o host, uważam, że jeśli nie uruchomisz demona routingu, takiego jak routowany lub bramkowany, jądro systemu wybierze jeden interfejs jako preferowaną trasę i przełączy się na inny interfejs tylko wtedy, gdy pierwszy ulegnie awarii lub brama stanie się bramą nieosiągalny przez ten interfejs.

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.