在从我的脚本启动 VM 之前,我需要弄清楚它将获得哪个 IP 地址。
所以我做了:
dhclient <interface>
这是有效的,因为dhclient
使用指定接口的 MAC 地址macvtap
,并从 DHCP 服务器返回我的 IP 地址。
这不是万无一失的解决方案,因为可能有些人家里的路由器并不总是为相同的 MAC 返回相同的 IP。但是我拥有的每台路由器都可以,所以如果它适用于 99% 的情况,那对我来说就足够了。
但问题是它还dhclient
更改了本地配置,因为它认为我想在主机上实际使用该地址。有一个-n
标志可以防止这种情况发生,但 Debian 或大多数其他发行版不支持它。
那么,仅询问 DHCP 服务器它计划为某个 MAC 地址提供哪个 IP 而无需实际修改主机上的任何设置的最佳方法是什么?
dhcp
不直接更改本地配置,它会在获得租约后调用脚本(/sbin/dhclient-script
在 Debian 中默认)。您可以指定自己的脚本并
-sf
使用$new_ip_address
来找出租用的 IP。此类脚本有专门的联机帮助页。dhcp
一旦获得租约就会继续运行,所以你需要停止它。默认情况下,pid 存储在中,/var/run/dhclient.pid
但您可以使用-pf
.示例脚本:
然后,如果你运行:
你会得到价值。
请务必避免与其他 DHCP 客户端进程(
dhclient
、NetworkManager
、 ...)交互,因为在那种情况下,结果可能会有所不同。您不能询问 DHCP 服务器它要发布什么 IP 地址,然后再依赖它。至少,除非服务器可以更新其配置数据库以便它“记住”它给您的地址,否则不会。
它要么向您发出了地址,在这种情况下它必须记录事实,要么它没有向您发出地址并且可供另一台设备使用。