Które pliki konfiguracyjne wpływają na tablicę routingu systemu Debian

2

O ile wiem, wchodzi podstawowa konfiguracja sieci /etc/network/interfacesi system generuje tablicę routingu na podstawie tych informacji. Nauczono mnie również, że ogólnie /etc/network/interfacesjest to miejsce, w którym można na stałe dodawać niestandardowe polecenia w celu manipulowania tabelą routingu (czasami sugerowane jest także użycie /etc/rc.localniestandardowego skryptu /etc/network/if-up.d/). Ponadto można określić niestandardowe tabele routingu w /etc/iproute2/rt_tables.

  • Czy są jakieś inne miejsca, które wpłyną na (główną) tabelę routingu?
    • W szczególności, czy są jeszcze inne możliwości, /etc/network/interfacesaby ręcznie dodawać / usuwać trasy na stałe?
  • Czy system z wieloma kartami sieciowymi ma koncepcję pierwotnych i drugorzędnych interfejsów sieciowych, czy tylko te sformułowania są pomocne dla użytkownika? (Podczas instalacji należy wybrać podstawowy, jeśli i /etc/network/interfacesbędzie zawierać odpowiedni komentarz.) Jeśli taka koncepcja istnieje, gdzie można ją skonfigurować?
  • Czy są jakieś różnice w koncepcji tabeli routingu między Debian Squeeze a Debian Jessie?

Tłem mojego pytania jest to, że mam starszy system Debian Squeeze i nowy system Debian Jessie, które uruchamiają się z różnymi tabelami routingu, ale są (o ile wiem) skonfigurowane identycznie. Mógłbym ręcznie manipulować tabelą routingu, aby dopasować ją do moich potrzeb i sprawić, by zmiany były trwałe, /etc/network/interfacesale chcę zrozumieć, co się dzieje.

EDYTOWAĆ

Oto pliki konfiguracyjne obu komputerów. Zmieniłem pierwsze części każdego adresu IP ze względów prywatności. Jednak podsieci i części adresowe odpowiednich sieci nie uległy zmianie. /etc/network/interfaces.d/Katalogu na komputerze Jessie jest pusty.

/etc/iproute2/rt_tables na Jessie

#
# reserved values
#
255 local
254 main
253 default
0   unspec
#
# local
#
#1  inr.ruhep

/etc/iproute2/rt_tables na Squeeze

#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep

/etc/rc.local na Jessie

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exit 0

/etc/rc.local na Squeeze

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exit 0

/etc/network/interfaces na Jessie

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

auto eth1
iface eth1 inet static
    address 143.103.155.254
    netmask 255.255.255.0
    network 143.103.155.0
    gateway 143.103.155.254

# The primary network interface
auto eth2
iface eth2 inet static
    address 27.126.19.194
    netmask 255.255.255.248
    network 27.126.19.192
    broadcast 27.126.19.199
    gateway 27.126.19.193
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers 143.103.5.1
    dns-search subdomain.domain.de

/etc/network/interfaces na Squeeze

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface

auto eth0
iface eth0 inet static
        address 143.103.155.254
        netmask 255.255.255.0
        network 143.103.155.0
        gateway 143.103.155.254

auto eth2
iface eth2 inet static
        address 27.126.19.194
        netmask 255.255.255.248
        network 27.126.19.192
        broadcast 27.126.19.199
        gateway 27.126.19.193

wyjście z ip route show table mainJessie

default via 143.103.155.254 dev eth1 
143.103.155.0/24 dev eth1  proto kernel  scope link  src 143.103.155.254 
27.126.19.192/29 dev eth2  proto kernel  scope link  src 27.126.19.194

wyjście z ip route show table mainSqueeze

27.126.19.192/29 dev eth2  proto kernel  scope link  src 27.126.19.194
143.103.155.0/24 dev eth0  proto kernel  scope link  src 143.103.155.254
default via 27.126.19.193 dev eth2
default via 143.103.155.254 dev eth0  scope link

wyjście z route -nJessie

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         143.103.155.254  0.0.0.0         UG    0      0        0 eth1
143.103.155.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
27.126.19.192  0.0.0.0         255.255.255.248 U     0      0        0 eth2

wyjście z route -nSqueeze

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
27.126.19.192  0.0.0.0         255.255.255.248 U     0      0        0 eth2
143.103.155.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         27.126.19.193  0.0.0.0         UG    0      0        0 eth2
0.0.0.0         143.103.155.254  0.0.0.0         UG    0      0        0 eth0
sigy
źródło
To pytanie jest zbyt szerokie i trudne do udzielenia odpowiedzi ... może chcesz, abyśmy porównali te dwie konfiguracje i dowiedzieli się, dlaczego inaczej konfigurują routing?
Marki555
@ Marki555: Dodałem dwie konfiguracje i wynikową tabelę routingu
sigy
Jaki jest twój pożądany wynik? Widzę główną różnicę w domyślnych trasach ... Po dodaniu gatewayopcji jest ona rozumiana jako domyślna trasa przez ten interfejs. Czy na pewno chcesz domyślną trasę za pośrednictwem 2 interfejsów? Także dla eth0 / eth1 bramą jest sam serwer ... dlaczego?
Marki555
Wynikowy routing w Squeeze „działa” zgodnie z oczekiwaniami. Sieć lokalna to 143.103.155.0/24 i chcę, aby cały ruch do niej był obsługiwany przez ten komputer. Cały pozostały ruch powinien być przekazywany do zewnętrznej bramy przez inny interfejs. Myślę, że próbowałem już pominąć domyślną bramę dla 143.103.155.0/24, ale domyślna trasa przez 27.126.19.193 nadal nie jest dodawana automatycznie.
sigy,
Więc kiedy usuwasz gateway 143...z Jessie, nie ma w ogóle żadnego wpisu dla domyślnej trasy w route -nlub ip route?
Marki555

Odpowiedzi:

1

Oba pliki / etc / network / interfaces zawierają jeden i ten sam błąd: brama domyślna jest określana dwukrotnie.

Możesz mieć wiele bram domyślnych, tylko w bardzo szczególnych okolicznościach (zaniedbując metryki): masz kilka tabel routingu, z których każda jest określona w pliku / etc / iproute2 / rt_tables , ale każda tabela routingu powinna mieć jedną bramę domyślną.

Zamiast tego określasz po jednym dla każdego interfejsu, w tej samej tabeli głównej . Widzimy więc niewielką różnicę w implementacji pakietu iproute2 i sposobie, w jaki reaguje on na błędy.

W przypadku Jessie ustanawia pierwszą wymienioną bramę, 143.103.155.254, jako jedyną bramę, po prostu dlatego, że jest wymieniona jako pierwsza. Jeżeli deklaracja drugiej bramy, 27.126.19.193, odbywa się, nic się nie dzieje, ponieważ jest nie poprzedzone

      ip route del default

Squeeze natomiast zajmuje się błędem w inny sposób: ogranicza zasięg drugiej bramy do łączenia lokalnego . Aby uzyskać więcej informacji o zakresie , zobacz instrukcję iproute2 , która stwierdza:

zakres linku --- adres jest linkiem lokalnym, ważny tylko na tym urządzeniu.

Wikipedia stwierdza, że:

W sieci komputerowej adres lokalny dla łącza to adres sieci, który jest ważny tylko do komunikacji w segmencie sieci (łączu) lub domenie rozgłoszeniowej, do której podłączony jest host.

Zatem zasięg (nieprecyzyjny synonim zakresu ) drugiej bramy został bardzo ograniczony do jej segmentu sieci ( tj. Jego domeny rozgłoszeniowej 143.103.155.0/24). Dlatego też Jessie w inny sposób poradziła sobie z niepoprawną deklaracją wielu bram w tej samej tabeli routingu.

Oczywiście nie ma oczekiwanego zachowania, w jaki sposób pakiety radzą sobie z błędami. Prawidłowym sposobem konfiguracji pliku / etc / network / interfaces jest pominięcie instrukcji

   gateway 143.103.155.254

w sumie (jest to dziwne również dlatego, że mówi, że brama twojego komputera jest ... sama!). Aby zobaczyć ładne wyjaśnienie tego, przeczytaj akapit Wstępne rozwiązanie tutaj ; później wyjaśniono również, jak dodać wiele bram z wieloma tabelami routingu.

Jeśli, jak twierdzisz,

Mogę spróbować ponownie zweryfikować, ale jestem pewien, że próbowałem już tego i nadal nie udało mi się uzyskać żadnego zewnętrznego adresu IP.

najprawdopodobniej dlatego, że nie zezwoliłeś na przekazywanie IPv4 z jednego interfejsu do drugiego (jako sudo:

     echo 1 > /proc/sys/net/ipv4/ip_forward

zajmuje się tym) lub dlatego, że reguły iptables zablokowały przekazywanie.

MariusMatutiae
źródło
Jak wspomniałem w innym komentarzu, nie działało, kiedy próbowałem, ponieważ proste ponowne uruchomienie /etc/init.d/networking wydaje się niewystarczające. Potem nie miałem żadnej domyślnej trasy. Jednak po ponownym uruchomieniu całego systemu routing został poprawnie skonfigurowany.
sigy
1

Główną różnicą między Squeeze i Jessie jest to, że ippolecenie wymaga ifconfigpierwszego i iproute2ostatniego.

ifconfig nie zna wielu konfiguracji bramy, przynajmniej bez metryk. Dlatego widzisz różnice między tymi dwoma ip routepoleceniami (lub route -n(przestarzałe))

iproute2 może śledzić wiele tabel routingu

ip route show all

Koncepcja pierwotnych i wtórnych interfejsów sieciowych to tylko sposób na ich rozróżnienie, zwykle nazywane eth0 (1.) i eth1 (2.), ale kolejność może się różnić!

I tak, możesz ustawić stałą trasę od /etc/network/interfacesmomentu użycia w upnastępujący sposób:

up ip route add 1.2.3.4/24 via 1.2.3.1
maxxvw
źródło
Jeśli ifconfig nie zna wielu konfiguracji bramy, ale jest używany w Squeeze, czy nie powinienem widzieć przeciwnie? Squeeze to system operacyjny, który tworzy dwie domyślne trasy.
sigy
Masz zainstalowany program iproute2, to jedyny powód, dla którego mogę zobaczyć. Ale spójrz na scope linkdrugą bramę. Druga to prawdziwa domyślna brama
maxxvw
Czy możesz wyjaśnić, co masz na myśli? Kto tworzy drugą domyślną trasę, jeśli nie ifconfig ? A jeśli to ip, dlaczego nie jest tworzone na Jessie? Muszę przyznać, że jestem teraz trochę zdezorientowany ...
sigy