Как заставить dhclient забыть свою последнюю аренду DHCP?

28

То, чего я пытаюсь добиться, это получить «холодный» старт, аренду DHCP с нулевым состоянием, что означает форсирование dhclientполного процесса обнаружения и настройки (DHCPDISCOVER – DHCPOFFER – DHCPREQUEST – DHCPACK в отличие от сокращенного цикла DHCPREQUEST – DHCPACK, который использует запомненный адрес). Мне это нужно для устранения проблем с конфигурацией сети.

Я пытался:

  • сброс текущей аренды с dhclient -rотключением текущего соединения Network Manager;
  • уничтожение любых остатков dhclientи dnsmasqпроцессов;
  • очистка /var/lib/dhcp/каталога, который предположительно содержит базу данных аренды клиента;
  • sudo restart network-manager,

Но даже после этих шагов я вижу в журналах DHCPDISCOVER сразу же после DHCPREQUEST какой-то еще запомненный адрес.

Очевидно, что ОС хранит адрес как-то еще, и у меня закончились идеи. Любая помощь от сообщества?

ulidtko
источник
Вы поняли это. Я тоже сталкиваюсь с той же проблемой. Также есть файлы аренды под NetworkManager. Я их тоже удалил. По какой-то причине он все еще забирает старый адрес.
gudge

Ответы:

18

Это помогло мне (для eth0, запустить из sudo su):

dhclient -r -v eth0 && rm /var/lib/dhcp/dhclient.* ; dhclient -v eth0
Антон Киселев
источник
1
Когда я сделал это, я получил новую аренду, но IP-адрес, похоже, не использовался системой. Если я попытаюсь пропинговать имя или связанный с ним IP-адрес, произойдет сбой. Если я использую, ifconfigчтобы проверить текущий адрес, я могу привязать это.
TafT
Изменение rmчасти делает эту работу для меня (без этого использовалась до аренды: dhclient -r -v eth0 && rm /var/lib/dhcp/dhclient* ; dhclient -v eth0)
davejagoda
6

Программа DHCP Client записывает аренду в файл. Просто удалите файл и перезапустите сетевой менеджер.

/var/lib/dhcp/dhclient.leases

Здесь хранятся договоры аренды на моем компьютере.

thefourtheye
источник
2

То, что вы видите, это не ваша машина, запоминающая IP. В системном журнале вы видите ACK ПРЕДЛОЖЕНИЕ ОТКРЫТЬ ЗАПРОС, однако это не в порядке, в котором это произошло. На самом деле он получил запрос подтверждения предложения, чтобы подтвердить, что вы можете прослушивать трафик между ПК и вышестоящим DHCP-сервером. Вы отправили ОТКРЫТЬ сервер отправил обратно ПРЕДЛОЖЕНИЕ, и вы получили IP от ПРЕДЛОЖЕНИЯ для вашего ЗАПРОСА

Тем не менее, вы все сделали правильно, когда вы сделали «dhclient -r», dhclient отправит одноадресный RELEASE, и некоторые интернет-провайдеры принимают многоадресные пакеты только на свой DHCP-сервер, поэтому RELEASE никогда не получался, поскольку сервер все еще остается в аренде. действительный, поэтому он вернул вам тот же IP в ПРЕДЛОЖЕНИИ.

Matt
источник
Спасибо за это! Я никогда не понимал, почему журнал всегда показывает DISCOVER, REQUEST, OFFER, ACK; поскольку последовательность никогда не имела смысла. Знание того, что на самом деле этого не происходит, помогает мне решить мою собственную проблему. Итак, моя машина получает DHCPOFFERIP-адрес, который мне не нужен, и затем говорит «ОК», но если я заставлю его попытаться получить что-то еще, то сервер скажет DHCPNACK, и у меня вообще не будет сети. По предположению, резервирование на сервере для неправильного MAC.
Auspex
Единственное, о чем я могу подумать, вы можете попробовать изменить «hwaddress etherx xx: xx: xx: xx: xx: xx» в / etc / network / interfaces, если ваш провайдер позволяет вам изменить свой Mac без необходимости звонить им и сообщать их, и ваш кабельный модем не заменяет свой mac на лету, тогда сервер должен видеть вас как кого-то нового и дать вам свободную IP-аренду.
Мэтт
Проблема заключалась в том, что она была дать мне вакантный IP. И я пытался заставить его дать мне тот, который якобы был зарезервирован, так как внешний DNS указывал на него! Итак, я отправил сетевому администратору фактический MAC-адрес и спросил, действительно ли он резервирует IP-адрес для этого MAC-адреса.
Auspex
1

Как правило, dhclient -rдолжен делать свое дело; но если это не работает для вас, я нашел решение здесь :

+ Обновить IP-адрес один раз:

Примечание. В этом примере мы будем использовать интерфейс eth0. Интерфейс должен быть настроен для DHCP как работающий.

  • Откройте терминал и сделайте, sudo suчтобы получить root.
  • Введите, ifconfigчтобы показать текущий IP-адрес, который вы получили от DHCP.
  • Введите, dhcpcd -kчтобы отправить соответствующие сигналы в dhcpcd (возможно, вам придется установить dhcpcd apt-get install dhcpcd).
  • Теперь верните интерфейс обратно, набрав ifup eth0.
  • Введите, ifconfigчтобы показать новый IP-адрес.

Также есть раздел о продлении IP-адреса каждый раз, но описание было для дистрибутивов на основе RPM (в отличие от дистрибутивов на основе Debian, таких как Ubuntu).

Надеюсь, это поможет :)

Сейед Мухаммед
источник