第二十一节
bind
正向解析实验
在DNS域名解析服务中,正向解析是指根据域名(主机名)查找到对应的IP地址。也就是说,当用户输入了一个域名后,bind服务程序会自动进行查找,并将匹配到的IP地址返给用户,如图所示。这也是最常用的DNS工作模式。
正向解析技术示意图
第1步:编辑区域配置文件。该文件中默认已经有了一些无关紧要的解析参数,旨在让用户有一个参考。可以将下面的参数添加到区域配置文件的最下面。当然,也可以将该文件中的原有信息全部清空,而只保留自己的域名解析信息。
[root@linuxprobe ~]# vim /etc/named.rfc1912.zones zone "linuxprobe.com" IN { type master; file "linuxprobe.com.zone"; allow-update {none;}; };
Tips
配置文件中的代码缩进仅是为了提升阅读体验,有无缩进对参数效果均没有任何影响。
第2步:编辑数据配置文件。可以从/var/named目录中复制一份正向解析的模板文件(named.localhost),然后把域名和IP地址的对应数据填写数据配置文件中并保存。在复制时记得加上-a参数,这可以保留原始文件的所有者、所属组、权限属性等信息,以便让bind服务程序顺利读取文件内容。
[root@linuxprobe ~]# cd /var/named/ [root@linuxprobe named]# ls -al named.localhost -rw-r-----. 1 root named 152 Jun 21 2007 named.localhost [root@linuxprobe named]# cp -a named.localhost linuxprobe.com.zone
在保存并退出后文件后记得重启named服务程序,让新的解析数据生效。考虑到正向解析文件中的参数较多,而且相对都比较重要,刘遄老师在每个参数后面都作了简要的说明。
[root@linuxprobe named]# vim linuxprobe.com.zone [root@linuxprobe named]# systemctl restart named [root@linuxprobe named]# systemctl enable named Created symlink /etc/systemd/system/multi-user.target.wants/named.service → /usr/lib/systemd/system/named.service.
$TTL 1D | #生存周期为1天 | ||||
@ | IN SOA | linuxprobe.com. | root.linuxprobe.com. | ( | |
#授权信息开始: | #DNS区域的地址 | #域名管理员的邮箱(不要用@符号) | |||
0;serial | #更新序列号 | ||||
1D;refresh | #更新时间 | ||||
1H;retry | #重试延时 | ||||
1W;expire | #失效时间 | ||||
3H );minimum | #无效解析记录的缓存时间 | ||||
NS | ns.linuxprobe.com. | #域名服务器记录 | |||
ns | IN A | 192.168.10.10 | #地址记录(ns.linuxprobe.com.) | ||
www | IN A | 192.168.10.10 | #地址记录(www.linuxprobe.com.) |
在解析文件中,A记录类型表示将域名指向一个IPv4地址,而AAAA表示将域名指向一个IPv6地址。此外,还有8种记录类型,如表13-2所示,供各位读者日后备查:
表13-2 域名解析记录类型
记录类型 | 作用 |
A | 将域名指向一个IPV4地址 |
CNAME | 将域名指向另外一个域名 |
AAAA | 将域名指向一个IPV6地址 |
NS | 将子域名指定其他DNS服务器解析 |
MX | 将域名指向邮件服务器地址 |
SRV | 记录提供特定的服务的服务器 |
TXT | 文本内容一般为512字节,常作为反垃圾邮件的SPF记录 |
CAA | CA证书办法机构授权校验 |
显性URL | 将域名重定向到另外一个地址 |
隐性URL | 与显性URL类型,但是会隐藏真实目标地址 |
第3步:检验解析结果。为了检验解析结果,一定要先把Linux系统网卡中的DNS地址参数修改成本机IP地址(见图13-6),这样就可以使用由本机提供的DNS查询服务了。nslookup命令用于检测能否从DNS服务器中查询到域名与IP地址的解析记录,进而更准确地检验DNS服务器是否已经能够为用户提供服务。
图13-6 配置网卡DNS参数信息
[root@linuxprobe named]# nmcli connection up ens160 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4) [root@linuxprobe named]# nslookup Name: www.linuxprobe.com Address: 192.168.10.10 > ns.linuxprobe.com Server: 192.168.10.10 Address: 192.168.10.10#53 Name: ns.linuxprobe.com Address: 192.168.10.10
若解析出的结果不是192.168.10.10,则很有可能是虚拟机选择了联网模式,并由互联网DNS服务器进行了解析。此时应确认服务器信息是否为“Address: 192.168.10.10#53”,即由本地服务器192.168.10.10的53端口号进行解析;若不是,则重启网络后再试一下。
反向解析实验
在DNS域名解析服务中,反向解析的作用是将用户提交的IP地址解析为对应的域名信息,它一般用于对某个IP地址上绑定的所有域名进行整体屏蔽,屏蔽由某些域名发送的垃圾邮件。它也可以针对某个IP地址进行反向解析,大致判断出有多少个网站运行在上面。当购买虚拟主机时,可以使用这一功能验证虚拟主机提供商是否有严重的超售问题。图所示为对IP地址所关联的域名信息进行反推。
反向解析技术示意图
第1步:编辑区域配置文件。在编辑该文件时,除了不要写错格式之外,还需要记住此处定义的数据配置文件名称,因为一会儿还需要在/var/named目录中建立与其对应的同名文件。反向解析是把IP地址解析成域名格式,因此在定义zone(区域)时应该要把IP地址反写,比如原来是192.168.10.0,反写后应该就是10.168.192,而且只需写出IP地址的网络位即可。把下列参数添加至正向解析参数的后面。
[root@linuxprobe ~]# vim /etc/named.rfc1912.zones zone "linuxprobe.com" IN { type master; file "linuxprobe.com.zone"; allow-update {none;}; }; zone "10.168.192.in-addr.arpa" IN { type master; file "192.168.10.arpa"; allow-update {none;}; };
第2步:编辑数据配置文件。首先从/var/named目录中复制一份反向解析的模板文件(named.loopback),然后把下面的参数填写到文件中。其中,IP地址仅需要写主机位,如图13-8所示。
图13-8 反向解析文件中IP地址参数规范
[root@linuxprobe ~]# cd /var/named [root@linuxprobe named]# cp -a named.loopback 192.168.10.arpa [root@linuxprobe named]# vim 192.168.10.arpa [root@linuxprobe named]# systemctl restart named
$TTL 1D | ||||
@ | IN SOA | linuxprobe.com. | root.linuxprobe.com. | ( |
0;serial | ||||
1D;refresh | ||||
1H;retry | ||||
1W;expire | ||||
3H);minimum | ||||
NS | ns.linuxprobe.com. | |||
ns | A | 192.168.10.10 | ||
10 | PTR | ns.linuxprobe.com. | #PTR为指针记录,仅用于反向解析中。 | |
10 | PTR | www.linuxprobe.com. | ||
20 | PTR | bbs.linuxprobe.com. |
第3步:检验解析结果。在前面的正向解析实验中,已经把系统网卡中的DNS地址参数修改成了本机IP地址,因此可以直接使用nslookup命令来检验解析结果,仅需输入IP地址即可查询到对应的域名信息。
[root@linuxprobe ~]# nslookup > 192.168.10.10 10.10.168.192.in-addr.arpa name = www.linuxprobe.com. > 192.168.10.20 20.10.168.192.in-addr.arpa name = bbs.linuxprobe.com.