使用 ISP DNS 服务器代替本地 DNS

使用 ISP DNS 服务器代替本地 DNS

问题

在我公司的内部网络上,有一个名为devserver.mycompany.com

通常我可以毫无问题地连接到该服务器,但有时(对我来说似乎是随机的)Ubuntu 无法解析该地址。

其他信息和观察

当我nmcli dev list iface eth0在终端中运行时,我看到有两个配置的 DNS 服务器:

IP4.DNS[1]:                             192.168.50.103
IP4.DNS[2]:                             128.255.1.3

第二个 DNS 服务器是我的 ISP 的服务器。

在配置为使用相同两个 DNS 服务器的 Windows 分区上,我从未遇到过此问题。

当我遇到此问题时:

  • nslookup devserver.mycompany.com 失败
  • nslookup devserver.mycompany.com 128.255.1.3 失败一直如此(毫不奇怪,devserver 不是公共服务器)
  • nslookup devserver.mycompany.com 192.168.50.103 作品

这是实际的输出nslookup

Ubuntu-14:~$ nslookup devserver.mycompany.com
Server:     127.0.1.1
Address:    127.0.1.1#53

** server can't find devserver.mycompany.com: NXDOMAIN

问题

  • 从上面的输出来看,Ubuntu 似乎正在尝试使用本地 DNS 服务器。对吗?它是否在我的本地计算机上缓存了失败的查找?
    • 如果是缓存,如何清除缓存?
  • Ubuntu 有时会使用第二个 DNS 服务器吗?为什么?这是负载平衡吗?本地服务器是否更慢?
  • 我该如何修复这个问题?我不想删除第二个 DNS 服务器,以防主 DNS 服务器发生故障。
  • 最后,为什么我在 Windows 中没有遇到这个问题?

Ubuntu 版本信息

ubuntu 14.04 LTS 没有未完成的更新。

所有网络设置几乎都是自动的。使用 DHCP

答案1

从上面的输出来看,Ubuntu 似乎正在尝试使用本地 DNS 服务器。对吗?它是否在我的本地计算机上缓存了失败的查找?

是的,Ubuntu 使用的是 dhcp 租约所提供的任何东西,更具体地说dnsmasq,是一个插件,它可以为您处理这个问题network-manager

Ubuntu 有时会使用第二个 DNS 服务器吗?为什么?这是负载平衡吗?本地服务器是否更慢?

如果第一个 DNS 解析失败,则应dnsmasq将查询重定向到辅助 DNS。至少这是个想法。

如果你想使用自己的 DNS 服务器 就我个人而言,我总是使用supersede domain-name-server xxx.xx.xxx.xxxin/etc/dhcp/dhclient.conf来告诉我的 Ubuntu 系统用我自己的服务器替换通过 dhcp 租约收到的任何 dns。以下是该文件的摘录:

30)serg@ubuntu[/home/xieerqi]
>_ cat /etc/dhcp/dhclient.conf                                                 
# Configuration file for /sbin/dhclient, which is included in Debian's
#   dhcp3-client package.
#
# This is a sample configuration file for dhclient. See dhclient.conf's
#   man page for more information about the syntax of this file
#   and a more comprehensive list of the parameters understood by
#   dhclient.
#
# Normally, if the DHCP server provides reasonable information and does
#   not leave anything out (like the domain name, for example), then
#   few changes must be made to this file, if any.
#

option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;

#send host-name "andare.fugue.com";
send host-name = gethostname();
#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
#send dhcp-lease-time 3600;
#supersede domain-name "fugue.com home.vix.com";
supersede domain-name-servers 208.67.220.220;
#prepend domain-name-servers 127.0.0.1;
request subnet-mask, broadcast-address, time-offset, routers,
    domain-name, domain-name-servers, domain-search, host-name,
    dhcp6.name-servers, dhcp6.domain-search,
    netbios-name-servers, netbios-scope, interface-mtu,
    rfc3442-classless-static-routes, ntp-servers,
    dhcp6.fqdn, dhcp6.sntp-servers;

设置并重新连接或重新启动后network-manager,我得到的结果如下:

31)serg@ubuntu[/home/xieerqi]
>_ nmcli dev list | grep -i dns                                                
IP4.DNS[1]:                             208.67.220.220

Nslookup 将会报告Server: 127.0.1.1Address: 127.0.1.1#53 因为网络管理器dsnmasq监听该地址,并且它使用 dhcp 提供的任何内容(在本例中为替代的 dns)

相关内容