![带有 DHCP 和本地 DNS 服务器的 resolv.conf](https://linux22.com/image/153970/%E5%B8%A6%E6%9C%89%20DHCP%20%E5%92%8C%E6%9C%AC%E5%9C%B0%20DNS%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%20resolv.conf.png)
我已经在我的机器上安装了本地 DNS 服务器 (coredns) 并通过设置激活它
name_servers=127.0.0.1
在resolvconf.conf 内。现在我切换网络,并希望 DHCP 在另一个文件中提供解析设置(至少是名称服务器),我可以通过添加外部 DNS 服务器将请求转发到其中。
我如何知道resolvconf.conf
设置名称服务器 127.0.0.1/etc/resolv.conf
但将 dhcp 提供的数据写入 /run/resolv/dhcp 之类的内容?
我正在运行 Manjaro
答案1
我假设是 Debian 或相关发行版;其他发行版的设置可能resolvconf
有所不同。
您需要在 coredns 服务器启动时执行此命令:
echo nameserver 127.0.0.1 | /sbin/resolvconf -a lo.coredns
当它停止时是这样的:
/sbin/resolvconf -d lo.coredns
resolvconf
将自动将 127.0.0.1 设置为首选服务器,/etc/resolv.conf
并且不会添加任何其他服务器,直到收到 coredns 守护进程已停止的信息(通过上面的第二个命令)。
然后,您可以编写自己的附加脚本,将/etc/resolvconf/update.d/
DHCP 提供的信息写入其他一些配置文件(例如 的配置文件coredns
)。在 Debian 9 中,这正是resolvconf
相互 BIND 和集成的方式。
或者,您可以使用目录中的文件/run/resolvconf/interface/
来获取 DHCP 提供的 DNS 服务器信息。
答案2
写入 DHCP 数据是您所使用的 DHCP 客户端的一项功能。通常是dhclient
.你会想要结帐dhclient-script
。看
man dhclient-script
man dhclient.conf
并检查和编辑,
/sbin/dhclient-script
(这就是写的东西resolv.conf
)