Как пропустить DHCP, если в Debian нет кабеля, подключенного к Ethernet

12

Мой Bananian Linux тратит время на вход в систему, пытаясь получить аренду DHCP для интерфейса eth0, который не подключен. Ну, к нему подключен удлинитель, но на другом конце ничего нет.

у меня есть

auto eth0
iface eth0 inet dhcp 

установить в моем, /etc/network/interfacesтак как я хочу, чтобы он забрал Ethernet, если он подключен, но я, конечно, не хочу замедлять запуск системы, если кабель не подключен к Ethernet. Я предполагал, что система будет знать это автоматически и не будет пытаться получить аренду DHCP для интерфейса.

Вот что я вижу во время загрузки (см. Последние три строки):

введите описание изображения здесь

После, если понимает, что аренда не наступает, он продолжает загрузку.

Есть ли способ, которым я мог бы сказать это не DHCP, если нет подключенного кабеля?

Максим В. Павлов
источник

Ответы:

16

Если вы укажете

allow-hotplug eth0

вместо того

auto eth0

в /etc/network/interfaces, то соединение будет инициировано только udevтогда, когда что-то его инициирует, а не при каждой загрузке.

Этого может быть достаточно для рассмотрения вашего дела, но не обязательно; на interfacesстранице руководства упоминается, что

(Интерфейсы, помеченные как «allow-hotplug», вызываются, когда udev обнаруживает их. Это может происходить во время загрузки, если интерфейс уже присутствует, или в более позднее время, например, при подключении сетевой карты USB. Обратите внимание, что это не имеет ничего общего с обнаружением сетевого кабеля.)

Вы , возможно , потребуется использовать /etc/network/if-up.d/00check-network-cableиз в ifupdown-extraпакет , чтобы пропустить интерфейс , если кабель не подключен.

Стивен Китт
источник
Что, если кабель уже подключен перед загрузкой? Будет ли udevсобытие инициировать соединение во время загрузки в этом случае? Другими словами, udevпроверяет, какие устройства уже подключены к портам машины?
Джозеф Р.
0

Всегда есть более одного решения проблемы.

Если вы находитесь с этой машиной всегда в одном месте, например дома, то самым простым способом было бы избавиться от пакета dhcp-client и установить статический IP-адрес, маску, шлюз. Предположим, вам это не нужно, вы бы сделали что-то вроде

apt-get remove isc-dhcp-client

Сначала вам сообщат, есть ли зависимости. Как только вы удалили пакет, вам больше не придется ждать во время загрузки.

Это пример того, что вы бы установили в своем /etc/network/interfaces

iface eth0 inet static
    address 192.168.0.2
    netmask 255.255.255.0
    gateway 192.168.0.254

Источник: https://wiki.debian.org/DHCP_Client

LinuxSecurityFreak
источник
Как уже упоминалось в вопросе, я хочу использовать DHCP, если подключен кабель Ethernet. Поэтому удаление клиента DHCP мне не поможет.
Максим Павлов
0

Посмотрите на ifplugd:

ifplugd - это демон Linux, который автоматически настраивает ваше Ethernet-устройство при подключении кабеля и автоматически отключает его при вытягивании кабеля. Это полезно на ноутбуках с встроенными сетевыми адаптерами, так как он будет настраивать интерфейс только тогда, когда кабель действительно подключен.

ifplugd ifplugd взаимодействует с собственными утилитами настройки сети вашего дистрибутива.

Некоторые особенности:

  • Использует родные программы ifup / ifdown вашего дистрибутива.
  • Может подать звуковой сигнал, когда кабель отключен, подключен, конфигурация интерфейса прошла успешно или не удалась.
  • Поддерживает Linux SIOCETHTOOL (более новый, он же ethtool API), SIOCGMIIREG (более старый, он же mii-diag / mii-tool API) и SIOCDEVPRIVATE (самый старый, он же mii-tool API) ioctl () для получения статуса ссылки. В версии 0.24 добавлена ​​поддержка обнаружения ссылок с помощью флага интерфейса IFF_RUNNING.
  • Поддержка системного журнала
  • Небольшая программа - двоичный файл составляет всего 25 КБ (плюс 16 КБ для libdaemon).
  • Поддержка нескольких интерфейсов Ethernet
  • Может быть настроен на игнорирование коротких «отключенных» периодов (опция -d) или коротких «подключенных» периодов (опция -u)
  • Поддержка беспроводных сетей. Всякий раз, когда обнаруживается связь с AP, сеть настраивается. Посмотрите waproamd, если вам требуется средство для настройки ключей WEP до того, как сопоставления AP будут успешными.
  • Режим совместимости для сетевых устройств, которые не поддерживают обнаружение кабеля (опция -F)

Пакет Страница поиска пакетов Debian: ifplugd .
Официальный сайт ifplugd

apt-get update && apt-get-install ifpludСледует сделать трюк. Кстати, создатель systemd поддерживает этот пакет.

eyoung100
источник
2
Я бы назвал это «... используется для поддержки этого пакета», так как последний выпуск был десять лет назад ;-). В настоящее время Леннарт, вероятно, порекомендует systemd-networkd... После ifplugdустановки вам также необходимо настроить ваше устройство (укажите allow-ifplugdв /etc/network/interfaces).
Стивен Китт
@StephenKitt вы использовали allow-ifplugdили видели код? При поиске я обнаружил только bugs.debian.org/cgi-bin/bugreport.cgi?bug=468896 , в котором говорится, что эта allow-ifplugdфункция не была принята.
sourcejedi