如何让 dnsmasq 在 Alphine(docker) 上工作?

如何让 dnsmasq 在 Alphine(docker) 上工作?

在基于 Debian 的 Linux 上,dnsmasq 的工作方式是将nameserversin替换/etc/resolv.conf127.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 客户端更改。

我希望这有帮助。

相关内容