Resolv.conf (简体中文)

From ArchWiki
Jump to: navigation, search
翻译状态: 本文是英文页面 Resolv.conf翻译,最后翻译时间:2014-12-06,点击这里可以查看翻译后英文页面的改动。

DNS 解析的配置文件是 /etc/resolv.conf,根据resolv.conf(5) 手册页面:

"解析器(reslover)是C库中用于提供DNS接口的程序集,某个进程调用这些程序时将同时读入解析器的配置文件.这个文件具有可读性并且包含大量可用的解析参数."
"在普通用途的系统里这个文件不是必须的.需要查询的只有本地主机名;主机名决定域名,域名将构成域搜索路径."

DNS 解析

网络供应商通常都会提供 DNS 服务器,如果您有自己的服务器缓存,路由器可能会增加额外的 DNS。Windows 系统中,如果一个 DNS 很慢,会自动切换到更好的服务器。在 Linux 系统中,超时时间一般比较长。使用 dnsutils[broken link: replaced by bind-tools] 软件包提供的 dig 命令可以查看域名解析的状况:

$ dig www5.yahoo.com

指定域名服务器:

$ dig @ip.of.name.server www5.yahoo.com

选择其它 DNS 服务器

要使用 DNS 服务器,请编辑 /etc/resolv.conf,把要使用的服务器放到文件的开头,修改是立即生效的。

OpenNIC

OpenNIC 提供了不受监管的域名解析服务。

Tip: OpenNIC 在不同的国家提供了多个域名服务器,可以在 最新的域名服务器 列表中选择。
# OpenNIC IPv4 nameservers (US)
nameserver 107.170.95.180
nameserver 75.127.14.107

OpenDNS

OpenDNS 提供了可选的域名解析服务器:

# OpenDNS IPv4 nameservers
nameserver 208.67.222.222
nameserver 208.67.220.220
# OpenDNS IPv6 nameservers
nameserver 2620:0:ccc::2
nameserver 2620:0:ccd::2

Google

Google 域名服务器:

# Google IPv4 nameservers
nameserver 8.8.8.8
nameserver 8.8.4.4
# Google IPv6 nameservers
nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844

Comodo

Comodo 提供了IPv4 解析,付费版还可以进行网络过滤(它会劫持查询).

# Comodo nameservers 
nameserver 8.26.56.26 
nameserver 8.20.247.20

Yandex

Yandex.DNS 有三种模式:

# Basic Yandex.DNS - Quick and reliable DNS
nameserver 77.88.8.8
nameserver 77.88.8.1
# Safe Yandex.DNS - 屏蔽病毒和不安全网站
nameserver 77.88.8.88
nameserver 77.88.8.2
# Family Yandex.DNS - 屏蔽成人网站
nameserver 77.88.8.7
nameserver 77.88.8.3

UncensoredDNS

UncensoredDNS 是一个免费的非监控 DNS 解析服务,如果您的防火墙屏蔽了端口 53,可以在端口 5353 进行应答。

# censurfridns.dk IPv4 nameservers
nameserver 91.239.100.100    ## anycast.censurfridns.dk
nameserver 89.233.43.71      ## ns1.censurfridns.dk
# censurfridns.dk IPv6 nameservers
nameserver 2001:67c:28a4::             ## anycast.censurfridns.dk
nameserver 2002:d596:2a92:1:71:53::    ## ns1.censurfridns.dk

保护 DNS 设置

dhcpcd, NetworkManager, 已经许多别的程序能够覆盖 /etc/resolv.conf里的内容. 这样的行为通常是可取的, 但是有些时候DNS设置需要手动配置(比如使用静态IP时). 有几种方法可以实现. 如果你使用NetworkManager, 参见 this thread .

修改dhcpcd配置

可以修改dhcpcd的配置文件以避免dhcpcd进程修改/etc/resolv.conf. 只需要在/etc/dhcpcd.conf最后添加:

nohook resolv.conf

使用resolv.conf.head

另外, 可以创建文件/etc/resolv.conf.head 并在其中包含DNS信息. dhcpcd将把这个文件插入到/etc/resolv.conf文件头. 使用OpenDNS的{ic|/etc/resolv.conf.head}}例子:

# OpenDNS servers
nameserver 208.67.222.222
nameserver 208.67.220.220

也可以使用google的DNSGoogle's nameservers.

# Google nameservers
nameserver 8.8.8.8
nameserver 8.8.4.4

给/etc/resolv.conf添加写保护

这样可以避免配置信息被任何程序修改:

chattr +i /etc/resolv.conf

使用 timeout 选项减少主机名查找时间

如果出现长时间域名查找问题,可以定义一个超时时间,超过之后会使用备用域名服务器。配置方法: 创建文件 /etc/resolv.conf.tail并加入

options timeout:1

重启network进程即可.