Обновите IP с помощью dhclient на разных интерфейсах


16

У меня есть два интерфейса на моем компьютере, eth0и eth1.

В обеих подсетях есть DHCP-сервер. Как я могу использовать, dhclientчтобы обновить IP-адрес для обоих интерфейсов?

Если я сделаю:

dhclient -r && dhclient eth0

Обновляет IP на eth0. Тогда, если я хочу просто сделать:

dhclient eth1

Сбой с ошибкой:

dhclient(22421) is already running - exiting.

Я могу сделать:

dhclient -r && dhclient eth1

Но dhclient -rчасть освобождает аренду, и я также теряю IP-адрес eth0.

На данный момент, единственным способом мне удалось сделать то , что я хочу, чтобы бежать dhclientза eth0зверски убить его, и запустить его на eth1: Я в конечном итоге с новым IP на обоих интерфейсах.

Я также проверил с dhclient -xвместо dhclient -r, не повезло.

Конечно, это не путь!

РЕДАКТИРОВАТЬ:

Два ответа предложили сделать dhclient -r eth0 eth1 && dhclient eth0 eth1 Это, действительно, ограничивает широковещательные вызовы этими интерфейсами. Но первый сервер DHCP, который ответит, будет единственным, который используется, следовательно, приведет к новому IP на одном интерфейсе, а не обоих. Смотрите здесь, мы можем видеть DHCPDISCOVERвызовы на обоих интерфейсах, но это DHCPREQUESTделается только на eth0первом интерфейсе, через который был найден DHCP-сервер:

Listening on LPF/eth0/0a:00:27:00:00:00
Sending on   LPF/eth0/0a:00:27:00:00:00
Listening on LPF/eth1/84:8f:69:d3:d4:a1
Sending on   LPF/eth1/84:8f:69:d3:d4:a1
Sending on   Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 5 (xid=0x170fcb67)
DHCPDISCOVER on eth1 to 255.255.255.255 port 67 interval 4 (xid=0x115a24c3)
DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x170fcb67)
DHCPOFFER from 192.168.1.1
DHCPACK from 192.168.1.1 (xid=0x170fcb67)
bound to 192.168.1.4 -- renewal in 1710 seconds.

Ответы:


11

Или

dhclient -r && dhclient

или

dhclient -r eth0 eth1 && dhclient eth0 eth1

Изменить 1:

Следующая попытка: Вы, вероятно, можете избавиться от ошибки «dhclient (22421) уже запущен - завершается», заставив один из экземпляров использовать разные файлы. Использование PATH_DHCLIENT_PIDи PATH_DHCLIENT_DBпеременные (или eqivalent параметры командной строки, обратитесь к странице) , чтобы отделить их.


Проблема в том, что при этом dhclient отправляет пакеты для обнаружения dhcp-сервера как широковещательный на обоих интерфейсах, но останавливается на ПЕРВОМ полученном сервере. Я хочу использовать первый сервер, полученный через eth0 для eth0 ip, и первый сервер, полученный через eth1 для eth1 ip.
Noé Malzieu

Если мне неясно: он отправляет DHCPDISCOVER на оба интерфейса, но отправляет DHCPREQUEST только на те первые интерфейсы, на которых он получает ответ от dhcp-сервера
Noé Malzieu

@ NoéMalzieu Вы должны в любом случае включить эту информацию в свой вопрос. Что-то смешное: вы получили бесполезный ответ «стоит 11 тысяч повторений»; это происходит не каждый день :-)
Hauke ​​Laging

@HaukeLaging - чей ответ ты называешь бесполезным 8-).
SLM

@ NoéMalzieu Смотрите мои изменения.
Хауке Лагинг

4

Идея № 1: Попробуйте передать 2 интерфейса в dhclient

Если вы посмотрите на справочную страницу, dhclientвы заметите, что в конце примера использования бит [ if0 [ ...ifN ]. Это подразумевает, что вы можете запустить dhclientи передать ему несколько интерфейсов, на которых вы хотите работать.

выдержка из справочной страницы dhclient

Клиенты [-4 | -6] [-S] [-N [-N ...]] [-T [-T ...]] [-P [-P ...]] [-p порт] [-d] [ -e VAR = значение] [-q] [-1] [-r | -x] [-lf файл-аренды] [-pf-файл-pid] [-cf-файл-конфигурации] [-sf-файл-сценария] [-s сервер] [-g relay] [-n] [-nc] [ -nw] [-w] [-B] [-I идентификатор клиента dhcp] [-H имя-хоста] [-F fqdn.fqdn] [-V идентификатор класса поставщика] [-R запрос-опция- list] [-timeout timeout] [-v] [--version] [if0 [... ifN]]

Таким образом, вы должны иметь возможность использовать dhclientнесколько интерфейсов и подключаться к ним.

dhclient -r eth0 eth1
dhclient eth0 eth1

Идея № 2: Посмотрите, как NetworkManager это делает

Вот как NetworkManager настраивается dhclientв моей системе. Вы можете попробовать вызвать второй dhclient явно с аргументами.

/sbin/dhclient -d -4 \
   -sf /usr/libexec/nm-dhcp-client.action \
   -pf /var/run/dhclient-wlan0.pid \
   -lf /var/lib/dhclient/dhclient-01f0476d-04bf-4ce7-8ced-844fae73f430-wlan0.lease \
   -cf /var/run/nm-dhclient-wlan0.conf wlan0

Спасибо за Ваш ответ. Однако, пожалуйста, проверьте мой комментарий к ответу @HaukeLaging
Noé Malzieu

@ NoéMalzieu - Можем ли мы увидеть подробный вывод 2-го клиента? dhclient -r && dhclient eth0 && dhclient -v eth1
SLM

При этом второй клиент говоритdhclient(1155) is already running - exiting.
Noé Malzieu

Да, это тоже самое для меня.
SLM
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.