自动更改 DNS 客户端设置

自动更改 DNS 客户端设置

我在 Linux 机器上运行 DNS 服务器,用于测试我网站的本地版本。我已在网络连接中配置了客户端机器以使用此 DNS 服务器。

但是,如果我的 Linux 机器死机或者我重新启动它,我必须手动进入网络连接并将我的 DNS 设置更改回我的 isps DNS 服务器。

如果可以联系到我的 DNS 服务器,有什么方法可以配置我的客户端机器来使用它,如果不能联系到它,就使用其他地址吗?

我知道有备用 DNS 服务器设置,但如果我在其中输入任何内容,它有时会使用主服务器,有时会使用备用服务器。我希望仅在主服务器不可用时才使用备用服务器。

编辑:我认为我的问题没有表达清楚。我的 DNS 服务器没有任何问题,设置得很好。但如果由于某种原因无法访问,客户端(Windows 和 Linux)就无法浏览互联网,因为它们正在寻找不存在的 DNS 服务器。在这种情况下,我希望他们使用不同的 DNS 服务器。

答案1

配置 DNS 服务器的位置是 /etc/resolv.conf。它将包含以下内容:

搜索 example.com
名称服务器 192.168.0.1
名称服务器 192.168.0.2

名称服务器使用 nameserver 选项指定,并按指定顺序使用,因此此客户端将使用 192.168.0.1,除非它在 ​​5 秒内没有响应,在这种情况下它将尝试 192.168.0.2。搜索选项是要在查找失败时添加到请求中的域后缀列表(默认情况下,如果您的查询中没有点,因此可能只是一个主机名,解析器将不会执行初始查询,而只是尝试添加后缀)。

此文件通常是静态的。您通常会手动编辑它或使用某些 GUI 工具为您编辑。这就是您在使用网络连接设置时所做的。

但是,如果您为 DHCP 配置了接口,DHCP 服务器可以给出名称服务器,因此 DHCP 客户端必须更新该文件。DHCP 请求通常会在启动时发生,也会在租约到期时发生(由服务器控制;可以是每小时、每天或两者之间的任何时间)。

也有可能其他配置系统在启动时重写了您的 resolv.conf。Linuxconf 很容易出现这种情况。您可能会在 /etc/resolv.conf 中发现一条注释,警告您不要编辑该文件,因为如果是这种情况,它将被覆盖。这可能会给您一些提示,让您知道应该更改什么。

由于您必须在启动后不断重新配置服务器,并且您没有指定正在使用的 Linux 版本,因此我假设是 DHCP 导致了问题。有几种解决方案。首先,您可以更改 DHCP 服务器以提供正确的 DNS 服务器。如果您不控制服务器或您不希望网络上的每个人都获得这些 DNS 服务器,那么这可能不是理想的或不可能的。第二种解决方案是告诉客户端忽略来自服务器的选项。您可能会找到一个 GUI 选项来执行此操作,但更可能的情况是,您必须手动执行此操作。您可以通过编辑 dhclient.conf(Debian 和 Ubuntu 上的 /etc/dhcp3/dhclient.conf)并添加以下行来执行此操作:

取代域名服务器 192.168.0.1 192.168.0.2;

答案2

如果 DNS 服务器在您重启时停止工作,您只需找出原因(请参阅man chkconfig某些 Linux 版本)。

您还没有说明您的客户端计算机运行的是什么操作系统。无论如何,我建议使用 DHCP 来分配您的 DNS 设置。

相关内容