Шлюз за замовчуванням змінюється


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 для налаштування мереж, вам слід змінити інший файл. Додайте оператор supersede в /etc/dhcp/dhclient.conf.

supersede routers 192.168.1.1;

1
Версія для echo supersede routers $(ip route | grep default | cut -f3 -d" ")\; | sudo tee --append /etc/dhcp/dhclient.conf
написання сценарію

Що робити, якщо у мене кілька інтерфейсів? Чи не всі вони мають "шлюз" для кожного інтерфейсу? Але що впливає на приклад '' за замовчуванням через 192.168.3.1 dev eth6 "вихід команди ip route? У ньому перераховано конкретний інтерфейс, правда?
JohnyTex

7

Відкрийте файл /etc/network/interfaces

знайти потрібний інтерфейс і додати наступне:

gateway 192.x.x.x

Перезапустити мережу:

sudo /etc/init.d/networking restart

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 повинен працювати "з коробки" IMHO.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.