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 route
gateway
现在请记住,顾名思义,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。