我在 Ubuntu 16.04 Xenial 上,网络管理器dnsmasq
为我启动了以下选项:
~/ ps awux|grep dnsmasq
nobody 2649 0.0 0.0 54488 3588 ? S Mai23 0:00 /usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces --pid-file=/var/run/NetworkManager/dnsmasq.pid --listen-address=127.0.1.1 --cache-size=0 --proxy-dnssec --enable-dbus=org.freedesktop.NetworkManager.dnsmasq --conf-dir=/etc/NetworkManager/dnsmasq.d
我也想dnsmasq
读取/使用该/etc/hosts
文件,但目前似乎还做不到,因为有选项--no-hosts
。
如何更改网络管理器用于调用 dnsmasq 的启动选项?
答案1
dnsmasq
您添加的所有配置文件/etc/NetworkManager/dnsmasq.d/
都会传递到dnsmasq
。只需使用以下命令检查:
ps -ef | grep -P "dnsmasq\s"
我得到这种结果(注意--conf-dir
参数):
nobody 6105 5868 0 20:20 ? 00:00:00 /usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces --pid-file=/run/NetworkManager/dnsmasq.pid --listen-address=127.0.1.1 --cache-size=0 --clear-on-reload --conf-file=/dev/null --proxy-dnssec --enable-dbus=org.freedesktop.NetworkManager.dnsmasq --conf-dir=/etc/NetworkManager/dnsmasq.d
因此您只需创建一个/etc/NetworkManager/dnsmasq.d/my-hosts
包含如下声明的文件即可:
addn-hosts=/etc/hosts
为了使用/etc/hosts
(见文档)。但是因为dnsmasq
也以此开头,--no-hosts
所以可能决定dnsmasq
仍然忽略,/etc/hosts
所以您可以创建一个硬链接,例如:
sudo cp -al /etc/hosts /etc/my-hosts
然后将声明更改为:
addn-hosts=/etc/my-hosts