У меня есть два интерфейса на моем компьютере, 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.
источник
Идея № 1: Попробуйте передать 2 интерфейса в dhclient
Если вы посмотрите на справочную страницу,
dhclient
вы заметите, что в конце примера использования бит[ if0 [ ...ifN ]
. Это подразумевает, что вы можете запуститьdhclient
и передать ему несколько интерфейсов, на которых вы хотите работать.выдержка из справочной страницы dhclient
Таким образом, вы должны иметь возможность использовать
dhclient
несколько интерфейсов и подключаться к ним.Идея № 2: Посмотрите, как NetworkManager это делает
Вот как NetworkManager настраивается
dhclient
в моей системе. Вы можете попробовать вызвать второй dhclient явно с аргументами.источник
dhclient -r && dhclient eth0 && dhclient -v eth1
dhclient(1155) is already running - exiting.