Поновіть 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змінні (або еквівалентні параметри командного рядка, див. Сторінку "man"), щоб розділити їх.


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

Якщо мені не було зрозуміло: він надсилає DHCPDISCOVER на обох інтерфейсах, але надсилає DHCPREQUEST лише на перші інтерфейси, на які він отримує відповідь від dhcp-сервера
Noé Malzieu

@ NoéMalzieu Ви повинні будь-коли поставити цю інформацію у своєму питанні. Вигляд смішний: Ви отримали марну відповідь "вартістю 11 кп"; це відбувається не кожен день :-)
Хоуке Лагінг

@HaukeLaging - кого відповідь називаєш марним 8-).
slm

@ NoéMalzieu Переглянути мою редакцію.
Hauke ​​Laging

4

Ідея №1: Спробуйте передати 2 інтерфейси dhclient

Якщо ви переглянете сторінку чоловіка, dhclientто помітите, що в кінці прикладу використовується біт [ if0 [ ...ifN ]. Це означає, що ви можете запускати dhclientта передавати йому кілька інтерфейсів, на яких ви хочете працювати.

уривок зі сторінки чоловіка dhclient

dhclient [-4 | -6] [-S] [-N [-N ...]] [-T [-T ...]] [-P [-P ...]] [-p порт] [-d] [ -e VAR = значення] [-q] [-1] [-r | -x] [-lf файл оренди] [-pf pid-файл] [-cf config-файл] [-sf скрипт-файл] [-s сервер] [-g реле] [-n] [-nc] [ -nw] [-w] [-B] [-I dhcp-client-identifier] [-H ім'я хоста] [-F fqdn.fqdn] [-V ідентифікатор класу постачальників] [-R запит-варіант- list] [-out-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 - Чи можемо ми побачити багатослівний вихід з другого dhclient? dhclient -r && dhclient eth0 && dhclient -v eth1
slm

З цим говорять другі клієнтиdhclient(1155) is already running - exiting.
Ное Мальзьє,

Так, це робиться і для мене сам.
slm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.