咱们在linux下设置dns时,通常都是在/etc/resolv.conf文件进行设置,通常也就设置几条nameserver而已,其实该文件仍是能够根据选项进行优化的。 linux
resolv.conf文件中包含的信息,在他们第一次被调用的过程当中被解析器例程所读取。该文件是人们可读的,包含的关键字列表值提供了不一样类型的解析器信息。若是该文件不存在,name server将会查询本机的域名解析配置。 算法
nameserver Name server IP address
name server应该是一个能够被解析的互联网地址,也就是你设置的dns服务器地址,最大应该有MAXNS (currently 3, see<resolv.h>)个name server能够被列出来,每一个name server都有nameserver关键字。若是列出多个name servers, 解析器会按照顺序解析他们,若是没有name server,则默认使用本地的配置。若是查询失败,算法会查询接下来的name server, 直到查询完全部的name server。
domain Local domain name.
设置本地域名,查询在这个domain中的names能够相对于本地domain使用短名称, 若是没有设置domain,则会使用主机名来决定domain
search Search list for host-name lookup.
定义域名的搜索列表,搜索列表一般是本地域名,默认仅包含本地域名,不过能够经过在search关键子后面跟随你但愿域名来改变默认状况。若是解析器查询不到他们的点,则会查询每个搜索路径中的设置,直到匹配为止。 若是查询的服务器不是在本地的,可能会有些慢而且会产生一些网络流量, 若是在domain中的服务器不可用,查询则会超时。search如今限制能够有6个domains,总共256个字符。
options
如下选项容许你对某些解析变量进行修改,语法相似:options xxx ...,其中xxx能够是以下选项:
debug sets RES_DEBUG in _res.options. 服务器
ndots:n
sets a threshold for the number of dots which must appear in a name given to res_query(3) before an initial absolute query will be made. The default for n is 1, meaning that if there are any dots in a name, the name will be tried first as an absolute name before any search list elements are appended to it. The value for this option is silently capped to 15. 这一段看的脑残了.... timeout:n 解析器在查询远程name server时的超时时间,默认是5秒。 attempts:n 设置解析器在查询name server失败几回后放弃该name server,默认上限是5。 rotate 这会致使在查询时循环选择nameserver中列出的服务器,从而负载均衡全部的nameserver,而不是让全部的客户端尝试第一个列出的服务器 no-check-names 禁止现代BIND检查输入的主机名和电子邮件中的无效字符 edns0 (since glibc 2.6) 使支持RFC 2671Z中的dns扩展 single-request (since glibc 2.10) 自从版本2.9以后,glibc在执行查找IPV4和IPV6时是并行执行的,可是一些DNS服务器不能很好的处理这种状况,并显示请求超时,次选项禁止glibc的并行查找,从而执行顺序查找 domain和search关键字是互相排斥的,若是同时设置了这两个关键字,则最后设置的生效。resolv.conf文件中的search关键字的值能够被LOCALDOMAIN环境变量锁改变, options关键字则能够被环境变量RES_OPTIONS所改变。