从 DHCP 服务器获取 IP,但在 Debian 上静态设置 DNS 服务器

Bil*_*lly 5 networking dns debian

我有一个 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
Run Code Online (Sandbox Code Playgroud)

但这仅在系统具有静态 IP 时才有效。

那么如何防止/etc/resolv.conf被 DHCP 服务器分配的 DNS 服务器覆盖,而不给我的系统一个静态 IP?

我用dhclient.

Fon*_*zie 10

如果您确定您正在使用dhclient. 你可以:

1.更改dhclient设置(推荐)

编辑文件/etc/dhcp/dhclient.confdomain-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;
Run Code Online (Sandbox Code Playgroud)

2.防止/etc/resolv.conf被覆盖

运行以下命令 asroot或 usingsudo以便文件不会再次被覆盖:

chattr +i /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)

Can not set static DNS on debian或多或少是一个重复的问题。但我无法发表评论,所以我添加了这个答案。

  • 请注意这应该是`chattr +i`。`chattr -i` 与这里描述的效果相反。 (2认同)
  • 在“dhclient.conf”中,您可以在下面添加一行“取代域名服务器 127.0.0.1;”,而不是从“请求”行中删除“域名服务器”。这使得维护变得更容易,因为当您想返回默认行为时,可以注释掉该行。 (2认同)

小智 5

你可以加:

supersede domain-name-servers 127.0.0.1;
Run Code Online (Sandbox Code Playgroud)

到 /etc/dhcp/dhclient.conf