容器内加入DNS域名解析_运维

而使用#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呢?#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里的。

容器内加入DNS域名解析_DNS_02

把后面红色框体内容重定向到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


转载于:https://blog.51cto.com/chenx1242/1752898