3

У меня есть Ubuntu box, который имеет два сетевых интерфейса (eth0 и wlan0). Они оба настроены для DHCP в /etc/network/interfaces , но оба они назначают шлюз по умолчанию:

/etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto wlan0
iface wlan0 inet dhcp
wireless-essid test

Результат route -n

Kernel IP routing table
Destination Gateway      Genmask       Flags  Metric Ref Use  Iface
0.0.0.0     172.16.1.1   0.0.0.0        UG    100    0   0    wlan0
0.0.0.0     10.0.0.1     0.0.0.0        UG    100    0   0    eth0
10.0.0.0    0.0.0.0      255.255.255.0   U     0     0   0    eth0
172.16.1.0  0.0.0.0      255.255.255.0   U     0     0   0    wlan0

Как настроить /etc/network/interfaces на наличие только одного шлюза по умолчанию на нужном интерфейсе?

В худшем случае, как я могу, по крайней мере, контролировать, какой из них появляется сверху в команде route -n , при каждой загрузке?

Замечания:

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

  • Иногда интерфейс gw по умолчанию будет eth0. Иногда это будет wlan0 ... Итак, это должно быть как бы автоматически ...

1 ответ1

1

Обычно связанные с сетью вещи управляются «сетевым менеджером» и поставляются с довольно хорошей стеклянной колбой, которая знает, как делать правильные вещи (TM).

Если вы настаиваете на использовании /etc /network /interfaces и у вас много путешествует компьютер, вы должны поместить исполняемый скрипт в /etc/network/if-up.d. Все сценарии в этом каталоге выполняются каждый раз, когда работает интерфейс. В вашем новом скрипте вы можете реализовать логику, которая изменяет вашу таблицу маршрутизации так, как вы этого хотите.

Я предлагаю вам начать читать раздел "ОПЦИИ IFACE" в справочной странице по интерфейсам. Однако обратите внимание, что не существует такого понятия, как "способ" определения "правильных" настроек для вашей таблицы маршрутизации.

Вы можете изменить порядок маршрутов по умолчанию, назначив различные метрики. Метрика - это простое число, и ядро предпочтет маршрут по умолчанию с самой низкой (я думаю) метрикой. Таким образом, вы должны придумать некоторый тест, который выполняет ваш скрипт, и на основе результатов этого теста ваш скрипт назначает метрику маршрутам по умолчанию.

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