我有一个 Debian 系统,它从 DHCP 服务器获取 IP,我自己的 bind9 服务器在 上运行localhost
。每次启动时,我都必须写入nameserver 127.0.0.1
,/etc/resolv.conf
因为系统会更新文件以匹配 DHCP 分配的 DNS 服务器。为了尝试防止resolv.conf
从我的网络的 DHCP 服务器获取更新的 DNS 服务器信息,我尝试将以下内容写入/etc/network/interfaces
:
iface eth0 inet dhcp
dns-nameservers 127.0.0.1
但这仅在系统具有静态 IP 时才有效。
如何/etc/resolv.conf
在不为我的系统提供静态 IP 的情况下防止被 DHCP 服务器分配的 DNS 服务器覆盖?
我用dhclient。
答案1
如果您确定您正在使用dhclient
.你可以:
1. 更改dhclient
设置(推荐)
编辑该文件,从以下行中/etc/dhcp/dhclient.conf
搜索并删除它:domain-name-servers,
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, domain-search, host-name,
dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
netbios-name-servers, netbios-scope, interface-mtu,
rfc3442-classless-static-routes, ntp-servers;
2.防止/etc/resolv.conf
被覆盖
运行以下命令 asroot
或 usingsudo
以便文件不会再次被覆盖:
chattr +i /etc/resolv.conf
这或多或少是一个重复的问题无法在 debian 上设置静态 DNS。但我无法发表评论,所以我添加了这个答案。
答案2
你可以加:
supersede domain-name-servers 127.0.0.1;
到 /etc/dhcp/dhclient.conf
答案3
删除该resolvconf
软件包,您自己的软件包/etc/resolv.conf
将不会被覆盖。
答案4
编辑网络文件 /etc/network/interfaces.conf并添加 PEERDNS="no" 。这在 Fedora 中有效。希望这能在 Debian 中发挥作用。您还可以使用 chattr。以便任何人都无法修改该文件。