DNS
dns解析过程:
1、在浏览器中输入www.qq.com域名,操作系统会先检查本地的hosts文件是否有这个网址映射关系,有就调用这个IP地址映射
2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存
3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,会去查找本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析
4、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析
5、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机。
1.安装部署DNS
yum insatll bind.x86_64 -y
systemctl start named
sytemctl enable named
systemctl stop firewalld
systemctl disable firewalld
主配置文件: /etc/named.conf
子配置文件: /etc/named.rfc1912.zones
数据目录: /var/named
2.高速缓存dns
vim /etc/named.conf
options {
11 listen-on port 53 { any; }; 53端口允许任何人访问这个dns(原本端口是只在内部开启) ss -anutple | grep named
12 listen-on-v6 port 53 { ::1; };
13 directory "/var/named";
14 dump-file "/var/named/data/cache_dump.db";
15 statistics-file "/var/named/data/named_stats.txt";
16 memstatistics-file "/var/named/data/named_mem_stats.txt" ;
17 allow-query { any; }; 查询当前dns的客户群体
18 forwarders {172.25.254.68;}; 若本机不知道,去向68主机寻找
systemctl restart named
测试:ping www.baidu.com
第一次:此时用时72毫秒
第二次:用时8毫秒
因为已经搜索过百度,并且缓存,所以第二次时间大大缩短,这就是高速缓存的意义,在企业中
可以缓解用户网络的压力
3、权威dns的正象解析
删除/etc/named.conf文件中的172.25.254.250那行
vim /etc/named.rfc1912.zones
42 zone "westos.com" IN {
43 type master;
44 file "westos.com.zone";
45 allow-update { none; };
46 };
cd /var/named
cp -p named.localhost westos.com.zone 注意要加-p,复制文件的权限
vim westos.com.zone
systemctl restart named 重启named
测试:ping www.westos.com
4、反向解析
vim /etc/named.rfc1912.zones
38 zone "254.25.172.in-addr.arpa" IN {
39 type master;
40 file "westos.com.ptr";
41 allow-update { none; };
42 };
cd /var/named
cp -p named.localhost westos.com.ptr
vim westos.com.ptr
systemctl restart named 重启named
测试: dig -x 172.25.254.200
5、双向解析
vim /etc/named.conf
48 view localnet {
49 match-clients { 172.25.254.68; }; #内网能连接的人是172.25.254.68
50 zone "." IN {
51 type hint;
52 file "named.ca";
53 };
54
55 include "/etc/named.rfc1912.zones"; #内网访问的是/etc/named.rfc1912.zones这个文件
56 include "/etc/named.root.key";
57 };
58 view any {
59 match-clients { any; }; #其他人都能访问
60 zone "." IN {
61 type hint;
62 file "named.ca";
63 };
65 include "/etc/named.rfc1912.zones.inter"; #外网访问的是/etc/named.rfc1912.zones.inter
66 include "/etc/named.root.key";
67 };
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.inter #-p的意思是peimission
vim /etc/named.rfc1912.zones.inter
42 zone "westos.com" IN {
43 type master;
44 file "westos.com.inter";
45 allow-update { none; };
46 };
cp -p westos.com.zone westos.com.inter
vim westos.com.inter
1 $TTL 1D
2 @ IN SOA dns.westos.com. root.westos.com. (
3 0 ; serial
4 1D ; refresh
5 1H ; retry
6 1W ; expire
7 3H ) ; minimum
8 NS dns.westos.com.
9 dns A 1.1.1.126
10 www A 1.1.1.111
重启服务
测试:
172.25.254.68主机 dig www.westos.com (内网)
vim /etc/resolv.conf
nameserver 172.25.254.200
172.25.254.200主机,dig www.westos.com (外网)
vim /etc/resolv.conf
nameserver 172.25.254.200
6、从属dns
从属dns
yum install bind -y
systemctl stop firewalls
systemctl start named
vim /etc/named.conf
vim /etc/named.rfc1912.zones
zone "westos.com" IN {
type slave;
masters { 172.25.254.200; };
file "slavec/westos.com.inter";
allow-update { none; };
};
systemctl restart named
####注意westos.com.inter里面的serial值最大为10位
若/var/named/slaves中没有改有的文件,则是selinux没有关闭
主dns:
vim /etc/named.rfc1912.zones.inter
42 zone "westos.com" IN {
43 type master;
44 file "westos.com.inter";
45 allow-update { none; };
46 also-notify { 172.25.254.168; };
47 };
改变主dns上westos.com.inter
vim westos.com.inter
systemctl restart named
测试:从属机dig www.westos.com
7、dns的远程更新
做这个的时候把selinux改为disabled
主dns主机
vim /etc/named.rfc1912.zones.inter
42 zone "westos.com" IN {
43 type master;
44 file "westos.com.inter";
45 allow-update { 172.25.254.168; }; #允许168主机远程更新
46 also-notify { 172.25.254.168; }; #更新通知168主机
47 };
远程主机上作更新动作:
[root@dns-slave ~]# nsupdate
> server 172.25.254.200
> update add bbs.westos.com 86400 A 1.1.1.111 #添加
> send
>
[root@dns-slave ~]# nsupdate
> server 172.25.254.200
> update delete bbs.westos.com #删除
> send
打开主dns主机,重启named,内容更新
8、key的制作
为了远程更新能够更安全的进行,我们需要制作钥匙并分配给远程登陆更新的用户
(1)制作key:
cp -p /etc/rndc.key /etc/westos.key
dnssec-keygen -a HMAC-MD5 -b 128 HOST westos
重新打开一个虚拟机,敲键盘,得到钥匙Kwestos.+157+48551.key
(2)查看key cat Kwestos.+157+48551.key
(3)vim /etc/westos.key 更改钥匙名,并把上面的那串字符复制进去 ,如下:
(4)vim /etc/name.conf 更改里面的内容
(5)然后把钥匙发送给要远程更新的用户
(6)重启服务进行测试: