Alter dhclient, чтобы повторить выборку IP-адреса

10

Оказывается, raspberry pi не очень старается получить IP-адрес с помощью dhcp, во время сбоя питания мой rpi загружался быстрее, чем сервер dhcp, и никогда не получал IP-адрес. В такой ситуации кажется, что rpi загружен, но он не получает IP-адрес, и я никогда не увижу от него запрос dhcp, пока не перезагрузлю его снова.

dhclient запускается так:

dhclient -1 -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0

Я не могу найти способ изменить аргументы dhclient, аргумент -1 может быть виновником. Как я могу сделать мои raspberrypi повторные запросы DHCP, пока он не получит ответ?

Изменить: это касается Raspbian «хриплый» дистрибутив.

н.у.к.
источник
1
Та же проблема с Wi-Fi. Если при запуске Wifi Router включен, все идет хорошо, даже с перезагрузкой маршрутизатора. Но если при запуске Raspberry роутер выключен, он никогда не получит IP. С уважением
У меня тоже такая же проблема. Однако я не знаю, как работает dhclient. Есть ли конфиг или мне нужно что-то сделать для этого?
Канкан

Ответы:

7

Удалите -1из аргументов командной строки, затем отредактируйте значения timeoutи по своему вкусу. Вы можете посмотреть на странице man ( ) для более подробной информации.retry/etc/dhclient.confman dhclient.conf

Munkeh
источник
Проблема в том, что, как я уже сказал, я не могу найти какой-либо способ изменить командную строку dhclient, кажется, что он каким-то волшебным образом запускается при загрузке чем-то из пакета ifupdown .deb, когда что-то анализирует / etc / network / interfaces
Нос
@nos Вам нужно найти скрипт инициализации сети. Я не могу вспомнить, где это от руки.
Алекс Чемберлен
@Alex Chamberlain Оказывается, командная строка для запуска dhclient жестко запрограммирована в двоичном файле / sbin / ifup. Поэтому я ищу альтернативные решения на данный момент.
Прости за это. В любом случае, что это за дистрибутив? Странно, они бы записали код в двоичный файл. С точки зрения решения, вы можете просто добавить несколько строк в rc.local, чтобы убить существующий процесс dhclient, а затем начать свои собственные с пользовательскими аргументами и т. Д.
Munkeh
Editet пост - я использую rasbpian
NOS
1

Каков контент ваших / etc / network / interfaces?

Я предполагаю, что есть автоматический eth0, так как он делает запрос DHCP при загрузке.

Что если вы измените это на allow_hotplug eth0? Это должно реагировать на изменения интерфейса (кабель вставлен / удален), если я правильно понимаю.

(Все это только мое обоснованное предположение).

Граффало
источник
Этот совет работает очень хорошо для меня: он позволяет горячее подключение и ускоряет время загрузки. Но это должно быть написано как "allow-hotplug eth0".
user27164
0

Здесь есть обходной путь, предложенный Jeroen: https://bugs.launchpad.net/raspbian/+bug/1125066

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

Вот обходной путь:

Обходной путь - создать скрипт-обертку, переименовав / sbin / dhclient в / sbin / dhclient-bin, но текст ниже в / sbin / dhclient и затем измените его на 777:

#!/bin/sh
/sbin/dhclient-bin -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0
Энди Бура
источник