dig与host
当使用#dig -t A www.某某某.com 查询这个“某某某”网站对应的IP的时候,默认是通过/etc/resolv.conf指定的DNS服务器进行解析。若要指定从某台DNS服务器解析的,那就就要在命令后面加上@和对应的DNS服务器IP地址。比如本机(203.60.12.235)就是一个DNS服务器,那么就应该使用#dig -t A www.某某某.com @ 203.60.12.235.
但是要知道主机内部是有一个/etc/hosts文件,里面可以存放ip和对应域名的,假如说有这样的情况,/etc/hosts保存的记录与我们指定的DNS服务器保存的记录不符,比如,/etc/hosts对www.007.com记录的ip地址是1.10.10.7;而我们指定的DNS服务器里对于1.10.10.7这个ip指定的是movie.007.com,这个时候若使用#dig -t A www.007.com 将不会 产生1.10.10.7,而是返回真实的007电影网站的IP。
而使用#dig -t A movie.007.com的时候,却会返回aa结果1.10.10.7。
但是这个时候做一下改动,就是在指定的DNS服务器里对007.com这个域文件增加一条www.007.com,但对应的IP与/etc/hosts/文件的不同,对应的IP是1.1.10.7。经过#service named reload之后,这个时候#dig -t A www.007.com,返回的是哪个IP呢?
返回的是1.1.10.7,也就是dns记录的IP地址。而/etc/hosts/文件的记录根本不会被查询。这跟前几篇文章里写得“DNS查询,先本地hosts后才dns服务器”的结论不一样啊!Why?
其实是因为dig命令是永远不会查询本地/etc/hosts文件的。而 #host -t A 目标网络地址 这个命令同样也不会查询/etc/hosts文件。
那么哪个命令会查询/etc/hosts呢?#gethostip 目标网络地址 会查询hosts文件(有的linux不带这个命令)。这个gethostip命令就是默认的网址解析命令。
远程控制DNS服务器--rndc
当我们把整个DNS服务器的数据都设定完毕之后,使用#dig -t axfr 目标域名,是可以查询到目标域内所有的详细ip对应,也就是获取到了该域内所有的ip信息。而使用#dig -x ip地址,会显示这个ip所反向对应的域名。
既然主DNS服务器已经架构成功,就跟其他的服务器软件一样,不但要可以在其他的机器上进行远程控制,而且可以在不关闭DNS服务的前提下,把新的数据进行传入到服务器里。bind软件提供了这样一个控制域名服务程序,就是rndc。
rndc是不自带.conf文件的,它有的是rndc.key文件当主配置文件。
#rndc-confgen一下,屏幕生成的就是rndc.conf文件的内容,上面的内容是随机生成的md5加密密码,rndc不是使用传统的账号密码形式进行互相确认,而是使用互相交换密文的形式来实现几个服务器之间的链接,毕竟DNS的信息是宝贵的,不是是个人链接就可以共享的到的;而下面的红色标记出来的内容就是需要复制粘贴到named.conf里的。
把后面红色框体内容重定向到named.conf里之后。就达到两个相同的密文,一式两份,一半在rndc.conf里,另一半在named.conf里,结合起来就是完整的一个的目的了。同时,rndc是监听953端口。
rndc的用法非常的丰富,这里简单说几个:
stop:停止dns服务;
reload:重新载入配置文件和区域文件;
reload zone:重新载入某区域文件;
reconfig:重新载入配置文件和发生更改的区域文件,这个用的比较多,哪里改变载哪里;
freeze:冻结某区域文件;
flush:清空缓存;
status:显示服务器的状态信息:有几个区域,是否开启了日志,正在传送数据的区域有几个等等...
stats:将统计内容输出,但是这个命令比较特别,操作步骤如下:
1)#touch /var/named/stats;
2)#chmod named:named /var/named/stats;
3)#setforce 0(如果selinux是启动的情况下);
4)#getforce一下,看结果是否是permissive;
5)在named.conf的options里增加一条statistics-file "/var/named/stats";,指定保存的文件路径;
6)保存named.conf退出之后,#rndc stats即可。
Listen on
DNS协议是监听53号端口的,udp和tcp都会监听,如果说一个服务器的网卡有多个虚拟主机,eth0是192.168.100.2,eth0:1是192.168.100.3,eth0:2是192.168.100.4,那么DNS会同时监听100.2:53、100.4:53和100.3:53。这个时候要是不想让DNS监听到100.3,只监听100.2和100.4怎么操作?
由于DNS的配置文件就是named.conf,所以还是要返回到named.conf里,在options要这么写
options {
ditectory "named的目录"
listen-on port 53 { 192.168.100.2 ; 192.168.100.4; }; #注意空格和;,必须用;结尾
};
保存退出之后,#service named restart,然后#netstat -tunl | grep :53 检查一下是否100.3已经不被监听了。
本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1752898