Debian 从不在 resolv.conf 中使用路由器网关地址

Debian 从不在 resolv.conf 中使用路由器网关地址

Debian 从不在 resolv.conf 中使用路由器网关地址

我怎样才能设置 Debian(从不使用路由器作为域名解析器)以便在我重新启动计算机或执行时不显示 /etc/resolv.conf 中的路由器网关地址(名称服务器 192.168.1.1)/sbin/dhclient

我在 /etc/dhcp/dhclient.conf 中只使用一行

prepend domain-name-servers x.x.x.x,y.y.y.y,z.z.z.z;

这是我的 /etc/network/interfaces 文件:

 auto eth0 
 iface eth0 inet static

 address 192.168.1.170
 netmask 255.255.255.0
 network 192.168.1.0
 broadcast 192.168.1.255
 getaway 192.168.1.1
 up route add -net default gw 192.168.1.1 netmask 0.0.0.0 eth0

 dns-nameservers x.x.x.x y.y.y.y z.z.z.z

如果我运行 /sbin/dhclient /etc/init.d/networking restart

我的 /etc/resolv.conf 包含:

nameserver x.x.x.x
nameserver y.y.y.y
nameserver z.z.z.z
nameserver 192.168.1.1

答案1

首先,请清理您的配置。您的eth0接口应该配置静态 IP 地址还是 DHCP?如果是静态的,为什么还要运行dhclient?如果是 DHCP,为什么/etc/network/interfaces列出静态 IP 参数而iface eth0 inet static不是?此外,由于您已经将默认路由指定为参数iface eth0 inet dhcp,因此您没有理由需要通过命令添加默认路由。up routegateway

现在请记住,顾名思义,prepend domain-name-servers它将 DNS 服务器添加到 DHCP 服务器提供的列表中。它不会替换它们。

我建议,不要要求dhclient自定义要使用的名称服务器,resolvconf而是使用框架。resolvconf协调所有不同的 DNS 名称服务器信息来源(包括在一个或多个网络接口上运行的单独 DHCP 客户端、要用作解析器的本地 DNS 服务器以及静态配置),并集中构建单个连贯的文件。这比让几个不同的事物管理并让它们互相争抢要/etc/resolv.conf好得多。/etc/resolv.conf

resolvconf如果尚未安装,请安装该软件包。这将自动禁用dhclinent对文件的直接操作/etc/resolv.conf

现在您的要求是您不想使用 DHCP 服务器提供的名称服务器,因此请注释掉eth*中的行/etc/resolvconf/interface-order。请确保也注释掉文件的最后一行*,否则eth0仍将予以考虑。

接下来,您要改用一组静态配置的名称服务器。由于它们是系统全局的(与任何给定接口的状态无关),您可以在 lo 接口上将它们添加为名称服务器/etc/network/interfaces

iface lo inet loopback
    dns-nameservers x.x.x.x y.y.y.y z.z.z.z

然后ifdown lo; ifup lo激活它。

答案2

另外一点:埃塔方式 192.168.1.1 应该是 g路径 192.168.1.1(这可能就是为什么您必须添加默认路由才能使一切正常运行?)

答案3

如果可以避免的话,就不要将网关用作解析器。

他们在执行 DNS 代理时存在众所周知的错误 - 请参阅 RFC 5625。

您有一个功能完好的 Linux 机器 - 只需将 BIND 或更好的“Unbound”的副本放在其上即可。

ObDisclaimer-我写了那个 RFC。

相关内容