Какие файлы конфигурации влияют на таблицу маршрутизации системы Debian

Какие файлы конфигурации влияют на таблицу маршрутизации системы Debian

Насколько я знаю, базовая конфигурация сети идет в /etc/network/interfacesи система генерирует таблицу маршрутизации из этой информации. Меня также учили, что в общем /etc/network/interfacesэто место для постоянного добавления пользовательских команд для управления таблицей маршрутизации (иногда также предлагается /etc/rc.localили пользовательский скрипт в /etc/network/if-up.d/). Кроме того, можно указать пользовательские таблицы маршрутизации в /etc/iproute2/rt_tables.

  • Есть ли еще какие-либо места, которые повлияют на (основную) таблицу маршрутизации?
    • В частности, есть ли другие возможности, кроме как /etc/network/interfacesсделать вручную добавленные/удаленные маршруты постоянными?
  • Имеет ли система с несколькими сетевыми картами концепциюначальныйивторичные сетевые интерфейсыили эти формулировки используются только для помощи пользователю? (Во время настройки необходимо выбрать основной if и /etc/network/interfacesбудет содержать соответствующий комментарий.) Если такая концепция существует, где ее можно настроить?
  • Есть ли различия в концепции таблицы маршрутизации между Debian Squeeze и Debian Jessie?

Предыстория моего вопроса в том, что у меня есть устаревшая система Debian Squeeze и новая система Debian Jessie, которые загружаются с разными таблицами маршрутизации, но (насколько я могу судить) настроены одинаково. Я мог бы вручную изменять таблицу маршрутизации в соответствии со своими потребностями и сделать изменения постоянными, /etc/network/interfacesно я хочу понять, что происходит.

РЕДАКТИРОВАТЬ

Вот файлы конфигурации обеих машин. Я изменил первые части каждого IP-адреса из соображений конфиденциальности. Однако подсети и адресные части соответствующих сетей не были изменены. Каталог /etc/network/interfaces.d/на машине Jessie пуст.

/etc/iproute2/rt_tablesна Джесси

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

/etc/iproute2/rt_tablesна сжатие

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

/etc/rc.localна Джесси

#!/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на сжатие

#!/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на Джесси

# 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на сжатие

# 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

выход ip route show table mainна Джесси

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

выход ip route show table mainна Squeeze

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

выход route -nна Джесси

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

выход route -nна Squeeze

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

решение1

Оба ваши/etc/сеть/интерфейсыфайлы содержат одну и ту же ошибку: шлюз по умолчанию указан дважды.

У вас может быть несколько шлюзов по умолчанию, только при очень особых обстоятельствах (без учета метрик): если у вас есть несколько таблиц маршрутизации, каждая из которых указана в файле/etc/iproute2/rt_tables, но каждая таблица маршрутизации должна иметьодинокийшлюз по умолчанию.

Вместо этого вы указываете один для каждого интерфейса вта же самая таблица основной. Итак, мы видим здесь небольшую разницу в реализацииiproute2пакет и как он реагирует на ошибки.

В случаеДжесси, он устанавливает первый упомянутый шлюз, 143.103.155.254, как единственный шлюз, просто потому, что он упомянут первым. Когда происходит объявление второго шлюза, 27.126.19.193, ничего не происходит, потому что оннетпредшествует

      ip route del default

Squeeze, напротив, решает эту ошибку другим способом: он ограничиваетобъемвторого шлюза вссылка локальная. Для получения дополнительной информации ообъем, видетьруководство iproute2, в котором говорится:

ссылка на область действия --- адрес является локальной ссылкой, действителен только на этом устройстве.

Википедияговорится, что:

В компьютерной сети локальный адрес канала — это сетевой адрес, который действителен только для связи в пределах сегмента сети (канала) или широковещательного домена, к которому подключен хост.

Таким образом, диапазон (неточный синоним дляобъем) второго шлюза был очень ограничен его сетевым сегментом (то есть, его широковещательный домен 143.103.155.0/24). Таким образом, Джесси тоже, но другим способом, справилась с вашим неверным объявлением нескольких шлюзов в одной и той же таблице маршрутизации.

Конечно, нетожидаемое поведениео том, как пакеты справляются с ошибками. Правильный способ для вас настроить свой/etc/сеть/интерфейсыфайл должен опустить оператор

   gateway 143.103.155.254

в целом (это странно еще и потому, что там говорится, что шлюз вашего собственного ПК — это ... он сам!). Чтобы увидеть хорошее объяснение этого, прочтитеНачальный абзац решения здесь; далее также объясняется, как добавить несколько шлюзов с несколькими таблицами маршрутизации.

Если, как вы утверждаете,

Я могу попробовать еще раз, чтобы проверить, но я почти уверен, что уже пробовал это, но так и не смог подключиться ни к одному внешнему IP-адресу.

скорее всего, это связано с тем, что вы не разрешили пересылку IPv4 с одного интерфейса на другой (как sudo:

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

позаботится об этом), или потому что ваши правила iptables заблокировали пересылку.

решение2

Главное отличие Squeeze от Jessie в том, что ipкоманда требует ifconfigи первого, и iproute2последнего.

ifconfig не знает конфигурации нескольких шлюзов, по крайней мере без метрик. Вот почему вы видите различия между двумя ip routeкомандами (или route -n(устарело))

iproute2 может отслеживать несколько таблиц маршрутизации

ip route show all

Понятие первичного и вторичного сетевых интерфейсов — это всего лишь способ их различения, обычно их называют eth0 (первый) и eth1 (второй), но порядок может отличаться!

И да, вы можете установить постоянный маршрут с /etc/network/interfacesпомощью upследующего:

up ip route add 1.2.3.4/24 via 1.2.3.1

Связанный контент