Запретить eth0 добавлять маршрут по умолчанию.

Вопрос или проблема

Я ищу способ предотвратить добавление интерфейсом eth0 маршрута по умолчанию в основную таблицу маршрутизации на моем компьютере с операционной системой Linux. У меня установлена дистрибуция Debian (Jessie – 8.0), и я рассматриваю директиву post-up в файле /etc/network/interfaces. Моя текущая конфигурация выглядит следующим образом:

ifconfig

eth0      Link encap:Ethernet  HWaddr b8:27:eb:4b:f4:9e  
          inet addr:172.16.2.82  Bcast:172.16.3.255  Mask:255.255.252.0
          inet6 addr: fe80::ba27:ebff:fe4b:f49e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2311 errors:0 dropped:0 overruns:0 frame:0
          TX packets:203 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:187402 (183.0 KiB)  TX bytes:22251 (21.7 KiB)

ppp0      Link encap:Point-to-Point Protocol  
          inet addr:10.178.142.185  P-t-P:192.200.1.21  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:36 errors:0 dropped:0 overruns:0 frame:0
          TX packets:56 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3 
          RX bytes:2918 (2.8 KiB)  TX bytes:3426 (3.3 KiB)

/etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
post-up /sbin/route del default dev eth0

ip route show table main

default dev ppp0  scope link 
default via 172.16.0.40 dev eth0  metric 202 
10.64.64.65 dev ppp1  proto kernel  scope link  src 10.181.104.9 
169.254.0.0/16 dev wlan0  proto kernel  scope link  src 169.254.23.201  metric 303 
169.254.0.0/16 dev wwan0  proto kernel  scope link  src 169.254.62.145  metric 305 
172.16.0.0/22 dev eth0  proto kernel  scope link  src 172.16.2.160  metric 202 
192.168.42.0/24 dev wlan0  proto kernel  scope link  src 192.168.42.1 
192.200.1.21 dev ppp0  proto kernel  scope link  src 10.179.96.79 

К сожалению, этот метод работает только в том случае, если интерфейс активируется с помощью ifup eth0, а не когда кабель физически подключен и ip назначен. Даже тогда, этот метод не удаляет запись по умолчанию и ifup выдает следующую ошибку:

    Internet Systems Consortium DHCP Client 4.3.1
    Copyright 2004-2014 Internet Systems Consortium.
    All rights reserved.
    For info, please visit https://www.isc.org/software/dhcp/

    Listening on LPF/eth0/b8:27:eb:4b:f4:9e
    Sending on   LPF/eth0/b8:27:eb:4b:f4:9e
    Sending on   Socket/fallback
    DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 6
    DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 11
    DHCPREQUEST on eth0 to 255.255.255.255 port 67
    DHCPOFFER from 172.16.0.8
    DHCPACK from 172.16.0.8
    eminstBootdpxeboot.com option - discarded
    eminstBootdpxeboot.com option - discarded
    bound to 172.16.2.82 -- renewal in 12663 seconds.
    SIOCDELRT: No such process
    Failed to bring up eth0.

Я бы хотел узнать правильный способ гарантировать, что маршрут по умолчанию не добавляется через eth0, и не приходилось бы вручную активировать eth0 с помощью ifup (чтобы использовать post-up), а использовать уже инициализированный при загрузке.

Отредактируйте /etc/dhcp/dhclient.conf и удалите routers из оператора request, чтобы ваш DHCP клиент не запрашивал конфигурацию маршрута по умолчанию вместе с запросом адреса.

Ответ или решение

Чтобы предотвратить добавление интерфейсом eth0 маршрута по умолчанию на Linux-системе с дистрибутивом Debian Jessie (8.0), необходимо изменить конфигурацию DHCP-клиента. Опишем шаги, которые позволят достичь этой цели.

Решение проблемы:

  1. Редактирование файла конфигурации DHCP-клиента:

    Откройте файл конфигурации /etc/dhcp/dhclient.conf с помощью редактора, такого как nano или vim. Вам потребуется root-доступ для внесения изменений.

    sudo nano /etc/dhcp/dhclient.conf
  2. Изменение request директивы:

    Найдите строку, начинающуюся с request, и удалите параметр routers. Эта директива управляет тем, какие параметры DHCP-клиент запрашивает у DHCP-сервера. Удаление routers предотвратит автоматическое добавление маршрута по умолчанию через eth0.

    request subnet-mask, broadcast-address, time-offset, domain-name, domain-name-servers, host-name;

    Измените на:

    request subnet-mask, broadcast-address, time-offset, domain-name, domain-name-servers, host-name;
  3. Перезапуск сети:

    После внесения изменений перезапустите сетевые интерфейсы для применения новой конфигурации.

    sudo ifdown eth0 && sudo ifup eth0

    Или перезапустите всю сетевую службу:

    sudo service networking restart

Дополнительные рекомендации:

  • Верификация изменений:

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

    ip route show

    В выводе не должно быть маршрута по умолчанию через eth0.

  • Логи и диагностика ошибок:

    Если возникают ошибки, просмотр логов системы может быть полезным для диагностики. Используйте dmesg, journalctl или syslog для анализа.

  • Резервная копия:

    Всегда делайте резервные копии файлов конфигурации перед внесением изменений. Это позволит быстро восстановить систему в случае необходимости.

Заключение:

Предложенное решение позволяет контролировать параметры, запрашиваемые DHCP-клиентом, предотвращая добавление нежелательных маршрутов по умолчанию через интерфейс eth0. Этот подход обеспечит стабильность и позволит избежать необходимости ручного вмешательства при каждом запуске системы.

Если у вас остались вопросы или возникли сложности с настройкой, не стесняйтесь обращаться за дополнительной поддержкой.


При написании использовалась копирайтинговая формула FOREST для структурированного и четкого изложения информации, без использования клише и общих формулировок, с акцентом на оригинальность и профессионализм.

Оцените материал
Добавить комментарий

Капча загружается...