2

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

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

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

# 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 на 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

вывод 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 на сжатие

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

2 ответа2

1

Основное различие между Squeeze и Jessie заключается в том, что команда ip вызывает ifconfig для первого и iproute2 для последнего.

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

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

ip route show all

Концепция первичного и вторичного сетевых интерфейсов - это просто способ различить их, обычно называемые eth0 (1-й) и eth1 (2-й), но порядок может отличаться!

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

up ip route add 1.2.3.4/24 via 1.2.3.1
1

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

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

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

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

      ip route del default

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

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

Википедия утверждает, что:

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

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

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

   gateway 143.103.155.254

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

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .