深入浅出DNS系列(六)- DNS解析器

10 篇文章 4 订阅

4 解析器

4.1 定义

解析器是C库中的一系例程,用于访问DNS系统

4.2 解析器主要函数

具体信息请参考手册,man resolver
int res_query(const char *dname, int class, int type,
              unsigned char *answer, int anslen);
int res_search(const char *dname, int class, int type,
              unsigned char *answer, int anslen);
int res_querydomain(const char *name, const char *domain,
              int class, int type, unsigned char *answer,
              int anslen);
int res_mkquery(int op, const char *dname, int class,
              int type, char *data, int datalen, struct rrec *newrr,
              char *buf, int buflen);
int res_send(const char *msg, int msglen, char *answer,
              int anslen);
int dn_comp(unsigned char *exp_dn, unsigned char *comp_dn,
              int length, unsigned char **dnptrs, unsigned char **lastdnptr);
int dn_expand(unsigned char *msg, unsigned char *eomorig,
              unsigned char *comp_dn, char *exp_dn,
              int length);

4.3 解析器配置文件

一般为/etc/resolv.conf,关于resolv.conf的说明请参考手册,man resolv.conf
总结:解析器按照search搜索列表进行循环的搜索解析,直到解析成功为止;形成search搜索列表的方式有很多,如果显式设置search,则用search;如果没有显式设置search,如果设置了domain,则用domain作为search搜索列表;如果domain和search都没有设置,则使用gethostname返回的主机名的域名部分作为search搜索列表

4.3.1 nameserver

解析器使用的名称服务器的ip地址,如下配置:
nameserver 192.168.198.2
可以配置多个,解析器使用该选项的规则是按顺序查询,查询超时,则查询下一个,直到查询最后一个nameserver
如果没有nameserver配置项,解析器使用本地主机上的名称服务器进行解析

4.3.2 domain

本地域名设置
当查询名称时,没有使用FQDN全名称时(后缀点),查询名称时先在名称后面加上domain后查询,如下示例:
设置domain james.cn
ping apache时,实际上会查询apache.james.cn
ping apache.时,只会查询apache.(因为后缀点)
ping apache.xyz时,先查询apache.xyz,然后查询apache.xyz.james.cn
当没有设置domain时,会以gethostname函数返回的名称的域名后缀为domain,如下示例:
未设置domain
hostname为:bindforward.james.cn
ping apache时,会查询apache.james.cn

4.3.3 search

主机名搜索列表
当没有定义search时,缺省的search为本地域名domain
当定义了search时,以search为顺序进行搜索,domain一般将不起作用,示例如下:
domain james.cn
search james.com.cn james.cn
ping xyz时,会查询xyz.james.com.cn,然后查询xyz.james.cn(domain项没起做作用)
ping xyz.yy时,会查询xyz.yy,再查询xyz.yy.james.com.cn,然后查询xyz.yy. james.cn
(domain项目仍然没有起作用)
search最多可以定义6个域名搜索项

4.3.4 options

选项很多,常用的有timeout、attempts
timeout设置超时
attempts设置重试次数
如下设置:
options timeout:2 attempts:2

4.4 nsswitch.conf配置文件

nsswitch.conf配置文件中的hosts配置项目,如下
hosts: files dns
定义了主机名解析的顺序,先使用hosts文件,再使用dns解析
同样host.conf(/etc/host.conf)也有此功能,如下:
order hosts,bind
定义了解析器解析方法的顺序,先使用hosts文件,再使用bind
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值