我在笔记本电脑上安装了 4 个 Ubuntu 虚拟机,并为每个虚拟机添加了额外的网络适配器,并为专用网络提供了静态 ip。我将其中一台配置为内部 DNS 服务器,将其 IP 添加到每个虚拟机的 resolvconf 基本文件中,然后重新启动 resolvconf 和网络服务。
在 resolv.conf 文件中我看到 2 个 DNS 服务器:
我的家庭路由器(我没有将其添加到 resolvconf 文件中)
我添加的那个。
由于某种原因,我的内部 DNS(resolv.conf 文件中的第二个)无法工作。
我没有在 dhcp.conf 和接口文件中添加任何内容。
是什么为文件生成路由器 DNS IP?如果内部 DNS 是第二个,为什么它不起作用? (如果我手动在它们之间切换,它就可以工作)
答案1
在 Ubuntu 上,NetworkManager
自动设置resolv.conf
,并且后者将NetworkManager
在每次连接重置后被覆盖。如果您想设置使用顺序nameservers
并使其永久化,请执行以下操作:
- 备份
resolv.conf
:sudo cp /etc/resolv.conf /etc/resolv.conf.backup
resolv.conf
如果它是符号链接,则将其删除:sudo rm -vf /etc/resolv.conf
- 创建一个新的
resolv.conf
:sudoedit /etc/resolv.conf
并用以下内容填充它:
nameserver <IP_OF_YOUR_PRIMARY_DNS>
nameserver <IP_OF_YOUR_SECONDARY_DNS>
由于您希望您的内部 DNS 服务器成为第一个被查询的服务器,因此<IP_OF_YOUR_PRIMARY_DNS>
应该是该服务器的 IP 地址。
- 通过以下方式锁定(设置不可变位)
resolv.conf
以防止更改NetworkManager
:sudo chattr +i /etc/resolv.conf
- 重新开始
NetworkManager
:sudo systemctl restart NetworkManager
参考
- 引用手册
resolv.conf
页:
如果有多个服务器,解析器库将按列出的顺序查询它们。
https://www.man7.org/linux/man-pages/man5/resolv.conf.5.html
- 另请参阅
ArchWiki
覆盖resolv.conf
:https://wiki.archlinux.org/index.php/Domain_name_resolution#Overwriting_of_/etc/resolv.conf