我有一个安装了Ubuntu 11.10的盒子 . 并且该框配置为从dhcp获取IP和主机名 .
我们在/etc/dhcp/dhclient-enter-hooks.d/文件夹中设置了脚本 . 但是这些脚本没有被调用/执行 . 我在另一个框中有类似的脚本,它安装了Ubuntu 10.04并且钩子脚本执行没有问题 . 一个区别是在11.10框中安装了NetworkManager .
# ps -ef | grep dhclient
root 746 695 0 03:52 ? 00:00:00 /sbin/dhclient -d -4 -sf /usr/lib/NetworkManager/nm-dhcp-client.action -pf /var/run/dhclient-eth0.pid -lf /var/lib/dhcp/dhclient-559273da-a027-458e-b124-bdbb4976ee17-eth0.lease -cf /var/run/nm-dhclient-eth0.conf eth0
我如何测试/etc/dhcp/dhclient-enter-hooks.d中的脚本是否未运行?我已经在/etc/dhcp/dhclient-enter-hooks.d中放置了一个简单的脚本“mytest”,其中包含以下代码 . 从未生成文件/tmp/enter-hook.out .
#!/bin/sh
echo "this is test file to test dhclient-enter-hook" > /tmp/enter-hook.out
剪切我的/ etc / network / interfaces
# cat /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0 inet dhcp
2 回答
也许已经太晚了,你通过其他手段解决了这个问题;但无论如何,由于我受到同样的问题影响,我以为我会参与其中 .
你的问题是NetworkManager . 这就是正在执行dhclient,使用不同的配置文件而不执行任何挂钩 . 这是作为Ubuntu中的错误提交的:
当NetworkManager启动接口时,您可以将脚本放在/etc/NetworkManager/dispatcher.d中 . 在上面的错误中,有一个导出到这些脚本的变量列表 . 如果您不需要其中任何一个,并且只想在接口启动时执行某些操作,那么您应该已经足够了 .
希望能帮助到你 .
几分钟前我遇到了同样的问题,并选择沿着dispatcher.d脚本路径 . 所以,我编写了以下脚本并将其放在/etc/NetworkManager/dispatcher.d/99resolv.conf.dhclient中
这个想法是,无论发生什么,将所有DNS请求发送到localhost,其中dnsmasq正在等待回答 . 现在需要的只是tel dnsmasq在哪里可以找到真正的resolv.conf文件,因此它知道在哪里发送DNS请求它不知道的主机名 . 在/etc/dnsmasq.d中创建一个文件,比如/etc/dnsmasq.d/upstream.conf并输入这行
/var/run/NetworkManager/resolv.conf
是网络管理器存储通过DHCP接收的DNS信息的地方 . 现在,每次从DHCP服务器获取DNS信息时,您的dnsmasq服务器都会知道它们并相应地转发请求 .而且,你已经完成了 . 你唯一担心的是dnsmasq会让你失望 .