在不同接口上使用dhclient更新IP


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

现在,我已经成功地做我想做的唯一方法是运行dhclienteth0,残忍地杀了它,并运行它eth1:我有一个更新的IP两个接口上结束。

我也测试了dhclient -x而不是dhclient -r,没有运气。

当然,这不是要走的路!

编辑:

建议这样做的两个答案dhclient -r eth0 eth1 && dhclient eth0 eth1 确实将广播呼叫限制在这些接口上。但是,第一个应答的DHCP服务器将是唯一使用的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.

Answers:


11

要么

dhclient -r && dhclient

要么

dhclient -r eth0 eth1 && dhclient eth0 eth1

编辑1:

下一步尝试:通过使实例之一使用不同的文件,您可以摆脱“ dhclient(22421)已经在运行-退出”错误。使用PATH_DHCLIENT_PIDPATH_DHCLIENT_DB变量(或等效的命令行选项,请参见手册页)将它们分开。


问题在于,dhclient确实在两个接口上都以广播的方式发送数据包以发现dhcp服务器,但在FIRST接收的服务器上停止了。我想将通过eth0接收的第一台服务器用于eth0 ip,并将通过eth1接收的第一台服务器用于eth1 ip。
的NoéMalzieu

如果我是不太清楚的:它把两个接口DHCPDISCOVER但只在其上它接收来自DHCP服务器的应答第一接口发送DHCP请求
的NoéMalzieu

@NoéMalzieu您应该在任何情况下在您的问题中添加该信息。有点好笑:您没有答案,“价值11K代表”;并非每天都会发生:-)
Hauke Laging

@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配置文件] [-sf脚本文件] [-s服务器] [-g中继] [-n] [-nc] [ -nw] [-w] [-B] [-I dhcp-client-identifier] [-H主机名] [-F fqdn.fqdn] [-V vendor-class-identifier] [-R request-option-列表] [-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-我们可以看到第二个dhclient的详细输出吗?dhclient -r && dhclient eth0 && dhclient -v eth1
slm

这样,第二个客户说dhclient(1155) is already running - exiting.
的NoéMalzieu

是的,它也为我做着相同的事情。
slm
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.