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


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.