对所有(未来)连接使用相同的 DNS 服务器

对所有(未来)连接使用相同的 DNS 服务器

我想知道是否可以指定所有连接(甚至是未来的连接,例如在其他地方使用 wifi(= 不同的 SSID)时)都将使用预定义的 DNS 服务器

当我有一些(具体的)连接时,我可以转到 IPv4 设置,并在那里指定 DNS 服务器(但是,如果有新的连接,我必须这样做(并且不要忘记它))

这对于某些安全/过滤 DNS 可能特别有用(例如 opendns 的 208.67.222.123 和 208.67.220.123)

答案1

我这样做的方法是设置supersede domain-name-servers/etc/dhcp/dhclient.conf我尝试了各种选项,包括文件夹下的headtail文件/etc/resolvconf/resolv.conf.d/,但只dhclient.conf对我有用。我在 Ubuntu 13.04、14.04 和 15.04 版本中都这样做过——总是有效。

基本思想是,当您连接到 wifi 接入点时,您会从dhcp服务器收到某些信息。该supersede选项告诉 Ubuntu 将服务器发送给您的任何信息替换dhcp为您自己的信息。在这种情况下,我们取代了 dns 服务器。因此,无论您连接到哪个 wifi,您的 ubuntu 都会将 wifi 提供的 dns 替换为自己的 dns。

下面是我自己的文件示例dhclient.conf,请注意以下行supersede domain-name-servers 208.67.220.220;

$ 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;

现在,如果你愿意,你可以使用prepend选项来使用两个都wifi-given 和您自己的服务器。如果 wifi-given 服务器发生故障,您的请求将被路由到预先设置的 DNS。

答案2

/etc/resolvconf 是处理此问题的软件包。它根据各种规则动态构建您的 /etc/resolv.conf 文件。

您可以在 /etc/resolvconf/resolv.conf.d/head 中设置您首选的 DNS 服务器

所有接口的所有其他 DNS 服务器都会位于其之后。

有很多更高级的方法可以使 resolvconf 满足您的特定要求,请阅读文档或操作方法。

相关内容