Изменение шлюза по умолчанию

Я использую 3 интерфейса ethernet в Ubuntu, но при перезагрузке шлюз по умолчанию меняется на другой интерфейс. Каждый раз, когда я загружаюсь, мне приходится менять шлюз по умолчанию обратно на eth1, удаляя шлюз по умолчанию и добавляя его обратно с помощью eth1. Как я могу устранить эту проблему?

Чтобы временно изменить маршрут по умолчанию, вы можете использовать ip-команда подобный этому:

$ sudo ip route change default via 192.168.1.1 dev eth0

Если у вас есть статическая конфигурация ip-адреса в /etc/network/interfaces вы можете добавить инструкцию gateway, чтобы сделать это постоянным.

iface eth0 inet static    gateway 192.168.1.1    […]

Используя DHCP для настройки сети, вы должны вместо этого настроить другой файл. Добавьте оператор замены в /etc/dhcp/dhclient.conf.

supersede routers 192.168.1.1;

Откройте файл /etc/network/interfaces

найдите нужный интерфейс и добавьте следующее:

gateway 192.x.x.x

Перезагрузите сеть:

sudo /etc/init.d/networking restart

У меня была такая же проблема с моим интерфейсом Wi-Fi wlp3s0 на Ubuntu 18.04. Это повлияло на мою способность подключаться к Android tethering и маршрутизатору вне дома. Способ решить проблему для меня состоял в том, чтобы прокомментировать в файле /etc/dhcpcd.conf следующий:

interface wlp3s0        static ip_address=192.168.0.16/24        static routers=192.168.0.1        static domain_name_servers=127.0.0.1

чтобы получить следующее

#interface wlp3s0#        static ip_address=192.168.0.16/24#        static routers=192.168.0.1#        static domain_name_servers=127.0.0.1

Затем я отключился от своей текущей сети и снова подключился к попытке route -n или nmcli чтобы увидеть изменения

Вы также можете удалить те же строки, когда будете уверены, что это работает для вас.

Из-за этих строк NetworkManager всегда добавлял маршрут по умолчанию с неправильным шлюзом, особенно когда я не был в своей домашней сети.Я получал сообщение "Хост назначения недоступен", когда я выполнял ping 8.8.8.8. Жесткое кодирование шлюза в /etc/network/interfaces это не было жизнеспособным решением, поскольку я часто подключаюсь к общедоступным Wi-Fi (поэтому никогда не использую один и тот же Wi-Fi-маршрутизатор или шлюз), и обычно DHCP должен работать "из коробки", ИМХО.

PS: Я никогда не редактировал вручную /etc/dhcpcd.conf так что я не знаю, почему файл /etc/dhcpcd.conf действительно содержал эти строки.

“Шлюз” не равен “маршруту”. Шлюз специфичен для интерфейса, где маршрут указывает, какой интерфейс следует использовать.

Вы настроили его вручную, используя файл “/etc/network/interfaces”, или с помощью программного обеспечения, такого как Network Manager или wicd?

Шлюз обычно представляет собой интерфейс на удаленном устройстве, на который локальный узел полагается при принятии решений о маршрутизации. Сам оператор маршрута может ссылаться на локальный интерфейс или нет, но пункт назначения маршрутизации должен быть обнаружен с помощью рекурсивного поиска, подключенного интерфейса или маршрута по умолчанию. Маршрут по умолчанию или шлюз по умолчанию - это “шлюз последней инстанции”, который будет использоваться в отсутствие более конкретного доступного маршрута.

Можете ли вы предоставить свою таблицу маршрутизации и список интерфейсов, а также любую другую соответствующую конфигурацию сети, которую вы выполнили?