首页 文章

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

提问于
浏览
0

我有一个安装了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

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

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

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

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

    希望能帮助到你 .

  • 3

    几分钟前我遇到了同样的问题,并选择沿着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会让你失望 .

相关问题