我正在构建一个具有多个上游网络接口的服务器,每个接口从不同的路由器接收 IP 地址、默认路由和其他 DHCP 信息。
对于我的应用程序,我需要知道每个接口的网关,以便我可以通过适当的接口设置到特定主机和网络的路由。dhclient 设置的默认路由没有用,已被删除 - 但我想知道网关。
- 捕获 DHCP 响应数据包并解析它是最后的手段。
- 从每个默认路由获取信息(在删除它之前)是可能的,但如果多个接口同时出现,则可能不可靠。
如何有效拦截DHCP响应信息?
更新:
添加:
# Debug how this is being called.
date >> /tmp/dhclient.log
echo "dhclient-script $@" >> /tmp/dhclient.log
env >> /tmp/dhclient.log
/sbin/dhclient-script 的开头向我展示了如何修改 dhclient-script。
如果您实际上正在使用 dhclient 脚本
dhclient
,那么您可以/usr/sbin/dhclient-script
用自定义脚本替换默认的 dhclient 脚本(通常是,但也可能在其他地方)。然后,您可以完全控制如何处理从 DHCP 租约获得的信息。使用原始脚本作为起点,然后对其进行修改,以便将网关信息写入文件,而不是设置默认路由。
手册页包含有关如何调用脚本的详细信息。