未调用Ubuntu 11.10 dhclient-enter-hook.d脚本

时间:2012-05-17 12:14:01

标签: ubuntu dhcp

我安装了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 个答案:

答案 0 :(得分:3)

也许已经太晚了,你通过其他手段解决了这个问题;但无论如何,由于我受到同样的问题的影响,我以为我会参与其中。

您的问题是NetworkManager。这就是正在执行dhclient,使用不同的配置文件而不执行任何挂钩。这是作为Ubuntu中的错误提交的:

https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/293139

当NetworkManager启动界面时,您可以将脚本放在/etc/NetworkManager/dispatcher.d中执行。在上面的错误中,有一个导出到这些脚本的变量列表。如果您不需要其中任何一个,并且只想在界面启动时执行某些操作,那么您应该已经足够了。

希望它有所帮助。

答案 1 :(得分:0)

我在几分钟前遇到了同样的问题,并选择沿着dispatcher.d脚本路径。所以,我编写了以下脚本并将其放入 /etc/NetworkManager/dispatcher.d/99resolv.conf.dhclient

#!/bin/sh -e
# Script to dispatch NetworkManager events
# It overwrites /etc/resolv.conf with the DNS of preference
# See NetworkManager(8) for further documentation of the dispatcher events.

sleep 3
rm -f /etc/resolv.conf && echo nameserver 127.0.0.1 > /etc/resolv.conf
service dnsmasq reload

无论发生什么,这个想法都是将所有DNS请求发送到localhost,dnsmasq正在等待回答。现在所需要的只是tel dnsmasq在哪里可以找到真正的resolv.conf文件,因此它知道在哪里发送DNS请求它不知道的主机名。在/etc/dnsmasq.d中创建一个文件,比如说/etc/dnsmasq.d/upstream.conf并输入这行

resolv-file=/var/run/NetworkManager/resolv.conf

/var/run/NetworkManager/resolv.conf是网络管理器存储通过DHCP接收的DNS信息的地方。现在,每次从DHCP服务器获取DNS信息时,您的dnsmasq服务器都会知道它们并相应地转发请求。

而且,你已经完成了。你唯一担心的是dnsmasq会让你失望。