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

28

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

Баран
источник
Вы настраивали его вручную, используя /etc/network/interfacesфайл, или с помощью программного обеспечения, такого как Network Manager или WICD?
Лекенштейн
1
«Шлюз» не равен «маршруту». Шлюз является определенным для интерфейса, где маршрут говорит, какой интерфейс должен использоваться.
Лекенштейн
Шлюз обычно является интерфейсом на удаленном устройстве, на которое локальный узел полагается при принятии решений о маршрутизации. Сам оператор маршрута может ссылаться на локальный интерфейс или нет, но назначение маршрутизации должно быть обнаружено из рекурсивного поиска, подключенного интерфейса или маршрута по умолчанию. Маршрут по умолчанию или шлюз по умолчанию - это «последний путь», который будет использоваться при отсутствии более конкретного доступного маршрута.
Белаква
Можете ли вы предоставить свою таблицу маршрутизации и список интерфейсов, а также другую соответствующую конфигурацию сети, которую вы сделали?
Белаква

Ответы:

33

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

$ sudo ip route change default via 192.168.1.1 dev eth0

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

iface eth0 inet static
    gateway 192.168.1.1
    […]

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

supersede routers 192.168.1.1;
webwurst
источник
1
Версия для сценариев (должен быть пробел между кавычками):echo supersede routers $(ip route | grep default | cut -f3 -d" ")\; | sudo tee --append /etc/dhcp/dhclient.conf
колан
Что если у меня несколько интерфейсов? Разве у всех не должно быть «шлюза» для каждого интерфейса? Но что влияет на пример '' default через 192.168.3.1 dev eth6 "вывод команды ip route? В нем указан конкретный интерфейс, верно?
JohnyTex
7

Открыть файл /etc/network/interfaces

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

gateway 192.x.x.x

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

sudo /etc/init.d/networking restart
mount.cifs
источник
16
Что если желаемый интерфейс настроен через DHCP, и я не знаю адрес шлюза, который он назначит?
devmiles.com
0

У меня была та же проблема для моего интерфейса Wi-Fi wlp3s0на Ubuntu 18.04. Это влияло на мою способность подключаться к Android-модему и роутеру за пределами дома. Чтобы решить эту проблему для меня, нужно прокомментировать в файле /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содержал эти строки.

ThomasG77
источник