如何捕获DHCP网关信息?

如何捕获DHCP网关信息?

我正在构建一个具有多个上游网络接口的服务器,每个接口从不同的路由器接收 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。

答案1

如果您实际上正在使用dhclientdhclient 脚本,那么您可以用自定义脚本替换默认的 dhclient 脚本(通常是/usr/sbin/dhclient-script,但也可能在其他地方)。然后,您可以完全控制如何处理从 DHCP 租约获得的信息。

使用原始脚本作为起点,然后对其进行修改,以便将网关信息写入文件而不是设置默认路由。

手册页有关于如何调用脚本的详细信息。

相关内容