在基于 Debian 的 Linux 上,dnsmasq 的工作方式是将nameservers
in替换/etc/resolv.conf
为127.0.0.1
(指的是“面向无线工程师的 Linux:如何使用 dnsmasq 进行 DNS 缓存”)。
但我发现在 Alpine(以及基于 Alpine 的 docker)上它不能那样工作。当 dnsmasq 启动时,/etc/resolv.conf
保持不变。因此,如果我只是启动 dnsmasq,它在 dns 解析方面没有任何区别。我写了一个脚本来启动dnsmasq,感觉很尴尬。
cp /etc/resolv.conf /etc/resolv.dnsmasq
sed -i 's/^nameserver.*/nameserver 127.0.0.1/' /etc/resolv.conf
dnsmasq -r /etc/resolv.dnsmasq
那么有没有更好的(“正确的”)方法让 dnsmasq 在 Alpine 上工作?
答案1
似乎在 debian 中初始化脚本负责更新 resolv.confhttps://thekelleys.org.uk/gitweb/?p=dnsmasq.git;a=tree;f=debian;h=7539dd72f8ea2d8d4b60d926ffa163956e3624a5;hb=HEAD。查看resolvconf、systemd.service等。
不知道alpine是否也有类似的处理方式。我认为你应该使用其初始化脚本在 alpine 上运行 dnsmasq rc-service dnsmasq start
。您可以在此处阅读脚本https://git.alpinelinux.org/aports/tree/main/dnsmasq/dnsmasq.initd(或本地)。有关于以下方面的有价值的信息https://wiki.alpinelinux.org/wiki/Main_Page。
DNS 可能会被 dhcp 客户端更改。
我希望这有帮助。