2012-08-24 18 views
14

Mam komputer z dwoma interfejsami sieciowymi: eth0 i eth1.W jaki sposób system operacyjny wie, jakiego interfejsu sieciowego użyć w Internecie?

eth0 - Ma adres IP 192.168.11.X/24.

eth1 - Ma IP 192.168.130.X/24. eth1 ma połączenie z Internetem.

W jaki sposób mój system operacyjny wie, którego interfejsu użyć, gdy próbuję połączyć się z Internetem? Czy iteracja dotyczy wszystkich bram domyślnych? Czy ma pamięć podręczną każdego interfejsu? Czy jest jakaś różnica w zachowaniu między Windows i Linux?

Odpowiedz

13

mam zamiar odpowiedzieć na stronie Linux domu (przynajmniej dla systemów opartych na Debianie, takich jak Ubuntu, ponieważ jest to bardziej powszechne dla użytkowników w tym punkcie):

Wpisz następujące wartości w linia komend:

route -n 

Powinieneś zobaczyć swoją „tablicę routingu” pojawiają się, z czymś, co następuje:

Destination Gateway   Genmask   ... Iface 
0.0.0.0  192.168.11.254 0.0.0.0   ... eth0 
169.254.0.0 0.0.0.0   255.255.0.0  ... eth0 
192.168.11.0 0.0.0.0   255.255.255.0 ... eth0 
192.168.130.0 0.0.0.0   255.255.255.0 ... eth1 

pominąłem kilka kolumn, ale w zasadzie, linii co oznacza, że ​​"0.0.0.0" pod "Destination" to linia określająca domyślną trasę . Innymi słowy, gdy cały ruch idzie, który nie jest przeznaczony dla żadnej innej podsieci w innych liniach (google.com, facebook.com, cokolwiek).

Jeśli to nie jest w porządku (takie jak w powyższej tabeli, gdzie „eth1” jest karta chcesz z dostępem do Internetu), należy zmienić domyślną trasę:

sudo route del default 
sudo route add default gw 192.168.130.254 netmask 255.255.255.0 

który naprawia go teraz . Aby go na stałe, edytuj plik interfejsów:

sudo gedit /etc/network/interfaces 

Edit to wyglądać mniej więcej tak (zmienić w razie potrzeby do konkretnej sytuacji):

auto eth0 
iface eth0 inet dhcp 
up route del default 

auto eth1 
iface eth1 inet dhcp 
up route add default gw 192.168.130.254 netmask 255.255.255.0 

Następnie restart sieci aby sprawdzić, czy nie podstęp:

sudo /etc/init.d/networking restart 
2

Funkcja, o którą pytasz, to tabela routingu, lista miejsc docelowych znanych hostowi.

Gdy system operacyjny musi przekazać pakiet, sprawdza tę listę i wybiera najbardziej odpowiednią (z określonych miejsc docelowych do ogólnych). Na przykład:

192.0.2.0/28 - 192.0.2.1 via eth1 
198.51.100.0/27 - 198.51.100.1 via eth0 
0.0.0.0/0  - 203.0.113.1 via eth0 

Uwaga ostatniego celu: będzie dowolny adres IPv4.

+0

Ale co się stanie, gdy komputer zostanie włączony po raz pierwszy i będzie próbował połączyć się z Internetem? Nie ma pojęcia, która etyka zapewnia dostęp do Internetu. Czy iteracja po interfejsach i kiedy powodzenie umieszcza informacje w tabeli routingu? Dzięki. –

+1

@UriH Oczekuje pewnej konfiguracji od użytkownika lub protokołu routingu. Nie losowo próbuje trasować pakiety. – cnicutar

+0

Dzięki, poszedłem i sprawdziłem, usuwając domyślną trasę i restartując eth1, wtedy zobaczyłem, że dodana została domyślna trasa, zakładam ze względu na żądanie DHCP, które zawierało opcje routera. –