我已经安装了 DNSMASQ,但它没有启动,因为 53 端口很忙。
我发现 ubuntu 已经有 dnsmasq 包并且它正在工作。
现在的问题是......我只是希望能够通过它解析我在 /etc/hosts 中的主机
即:nslookup somehostonlan localhost
要解析为从 /etc/hosts 文件中获取的某些 IP。
但这并没有发生。
为什么?顺便说一句,作为缓存 DNS 服务器,它工作正常。我只是想让它从 /etc/hosts 文件中解析主机
kbe*_*oit 24
为了加快互联网速度,ubuntu 12.04 在 NetworkManager 中添加了一个插件来启动 dnsmasq,这是一个缓存 dns 条目的本地 dns 服务器。问题是插件对 --no-hosts 字符串进行了硬编码。
因此,一种解决方案是在 NetworkManager 配置文件中注释掉加载插件的行并重新启动 NetworkManager :
sudo mv /etc/NetworkManager/NetworkManager.conf /etc/NetworkManager/NetworkManager.conf.bak
sudo bash -c 'cat /etc/NetworkManager/NetworkManager.conf.bak | sed -e "s/^\(dns=dnsmasq\)$/#\1/" > /etc/NetworkManager/NetworkManager.conf'
sudo restart network-manager
Run Code Online (Sandbox Code Playgroud)
另一种解决方案是包装 dnsmasq 以过滤掉不需要的参数:
sudo mv /usr/sbin/dnsmasq /usr/sbin/dnsmasq.bin
sudo bash -c 'cat > /usr/sbin/dnsmasq' << EOF
#!/bin/sh
dnsmasq=/usr/sbin/dnsmasq.bin
exec $dnsmasq `echo $@ | sed -e s/--no-hosts//`
EOF
sudo chmod 755 /usr/sbin/dnsmasq
Run Code Online (Sandbox Code Playgroud)
请将该错误标记为对您有影响。
不打补丁系统文件的另一种解决方案
cat /etc/NetworkManager/dnsmasq.d/hosts.conf
addn-hosts=/etc/hosts
Run Code Online (Sandbox Code Playgroud)
小智 7
即使现在这个错误仍然影响我(Ubuntu 14.04)。
最后我找到了一个解决方案,只需将此行'addn-hosts=/etc/hosts' 添加到Newworkmanager 包的dnsmasq 配置文件中。
echo 'addn-hosts=/etc/hosts' > /etc/NetworkManager/dnsmasq.d/etc-hosts
service network-manager restart
Run Code Online (Sandbox Code Playgroud)
这个想法是,我们将 /etc/hosts 添加为一个额外的主机文件。
即使我能找到解决方案,二进制文件 /usr/sbin/NetworkManager 中的硬编码选项“--no-hosts”也让我失望。
| 归档时间: |
|
| 查看次数: |
51034 次 |
| 最近记录: |