############################第三单元高速缓存 DNS
一、DNS 总揽
[root@localhost named]# vim /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
forwarders {172.25.254.250; };
dnssec-validation no;
•权威名称服务器
– 存储并提供某区域 ( 整个 DNS 域或 DNS 域的一部分 ) 的实际数据。权威名称服务器的类型包括
•Master : 包含原始区域数据。有时称作 “ 主要 ” 名称服务器
zone "hello.com" IN { ##正向解析
type master;
file "hello.com.zone";
allow-update { none; };
};
[root@localhost named]# cp -p named.localhost hello.com.zone ##-p带属性复制
[root@localhost named]# vim hello.com.zone
$TTL 1D
@ IN SOA dns.hello.com. root.hello.com. (
2017041501 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.hello.com.
dns A 172.25.254.241
www CNAME bbs.hello.com.
bbs A 172.25.254.234
hello.com. MX 1 172.25.254.241.
客户端:
[root@localhost ~]# dig www.baidu.com
[root@localhost named]# vim /etc/named.rfc1912.zones
zone "254.25.172.in-addr.arpa" IN { ##反向解析
type master;
file "hello.com.ptr";
allow-update { none; };
};
[root@localhost named]# cp -p hello.com.zone hello.com.ptr
[root@localhost named]# vim hello.com.ptr
$TTL 1D
@ IN SOA dns.hello.com. root.hello.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.hello.com
dns A 172.25.254.241
123 A www.hello.com
234 A bbs.hello.com
客户端:
[root@localhost ~]# dig -x www.baidu.com
[root@localhost ~]#mail root@hello.com
•Slave : 备份服务器 , 通过区域传送从 Master 服务器获得的区域数据的副本。有时称作 “ 次要 ” 名称服务器
zone "hello.com" IN {
type slave;
masters {172.25.254.241; };
file "slaves/hello.com.zone";
allow-update { none; };
};
zone "hello.com" IN {
type master;
file "hello.com.zone";
allow-update { 172.25.254.141; };
allow-transfer {172.25.254.141 };
also-notify {172.25.254.141 };
};
客户端:
[root@localhost ~]# nsupdate
> server 172.25.254.241
> update add ww.hello.com 86400 A 172.25.254.123 ##更新ip为172.25.254.123,域名为ww.hello.com
> send
•非权威 / 递归名称服务器
– 客户端通过其查找来自权威名称服务器的数据。递归名称服务器的类型包括
•仅缓存名称服务器 : 仅用于查找 , 对于非重要数据之外的任何内容都不具有权威性
•DNS 查找
–客户端上的 Stub 解析器 将查询发送至 /etc/resolv.conf 中的名称服务器
nameserver 172.25.254.241 ##服务端ip
–如果名称服务器对于请求的信息具有权威性 , 会将权威答案发送至客户端
–否则 , 如果名称服务器在其缓存中有请求的信息 , 则会将非权威答案发送至客户端
–如果缓存只能该没有信息 , 名称服务器将搜索权威名称服务器以查找信息 , 从根区域开始 , 按照DNS 层
–次结构向下搜素 , 直至对于信息具有权威性的名称服务器 , 以此为客户端获得答案。在此情况中, 名ch 称服务器将信息传递至客户端并在自己的缓存中保留一个副本 , 以备以后查找
三、资源记录
• DNS 区域采用资源记录的形式存储信息。每条资源记录均具有一个类型 , 表明其保留的数据类型
– A : 名称至 IPv4 地址
– AAAA : 名称至 IPv6 地址
– CNAME : 名称至 ” 规范名称 “ ( 包含 A/AAAA 记录的另一个名称 )
– PTR : IPv4/IPv6 地址至名称
– MX : 用于名称的邮件交换器 ( 向何处发送其电子邮件 )
– NS : 域名的名称服务器
– SOA :” 授权起始 “ , DNS 区域的信息 ( 管理信息 )
四、DNS 排错
• 它显示来自 DNS 查找的详细信息 , 其中包括为什么查询失败 :
– NOERROR : 查询成功
– NXDOMAIN : DNS 服务器提示不存在这样的名称
– SERVFAIL : DNS 服务器停机或 DNSSEC 响应验证失败
– REFUSED : DNS 服务器拒绝回答 ( 也许是出于访问控制原因 )
五、dig 输出的部分内容
• 标题指出关于查询和答案的信息 , 其中包括响应状态和设置的任何特殊标记 ( aa 表示权威答案 , 等等 )
– QUESTION : 提出实际的 DNS 查询
– ANSWER : 响应 ( 如果有 )
– AUTHORITY : 负责域 / 区域的名称服务器
– ADDITIONAL : 提供的其他信息 , 通常是关于名称服务器
– 底部的注释指出发送查询的递归名称服务器以及获得响应所花费的时间
六、缓存 DNS 服务器
•BIND 是最广泛使用的开源名称服务器
•在 RHEL 中 , 通过 bind 软件包提供
•防火墙开启端口 53/TCP 和 53/UDP
•BIND 的主配置文件是 /etc/named.conf
•/var/named 目录包含名称服务器所使用的其他数据文件
七、/etc/named.conf 的语法
• // 或 # 至行末尾是注释 ; /* 与 */ 之间的文本也是注释 ( 可以跨越多行 )
• 指令以分号结束 (;)
• 许多指令认为地址匹配列表放在大括号中、以CIDR 表示法表示的 IP 地址或子网列表中 , 或者
命名的 ACL 中 ( 例如 any; [ 所有主机 ] 和none; [ 无主机 ] )
• 文件以 options 块开始 , 其中包含控制 named如何运作的指令
• zone 块控制 named 如何查对于其具有权威性的根名称服务器和区域
八、一些重要的 options 指令
•listen-on 控制 named 侦听的 IPv4 地址
•listen-on-v6 控制 named 侦听的 IPv6 地址
•allow-query 控制哪些客户端可以向 DNS 服务器询问信息
•forwarders 包含 DNS 查询将转发至的名称服务器的列表( 而不是直接联系外部名称服务器 ; 在设有防火 墙的情况中很有用 )
• 所有这些指令会将打括号中以分号分隔的元素视为地址匹配列表 . 如
– listen-on { any; };
– allow-query { 127.0.0.1; 10.0.0.0/8 };
九、配置名称服务器
• 安装 bind 软件包
– yum install -y bind
• 编辑 /etc/named.conf
–listen-on port 53 { any; };
-listen-on-v6 port 53 { any; };
—allow-query { any; };
-forwarders { 172.25.254.254; };
• 启动并启用 DNS 服务器
• systemctl start named
• systemctl enable named
• 从 desktopX 进行测试
– dig classroom.example.com
secure-ddns
加密更新dns
[root@localhost mnt]# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST yin 生成锁和钥匙
Kyin.+157+04676
[root@localhost mnt]# ls
Kyin.+157+04676.key Kyin.+157+04676.private
[root@localhost mnt]# cat Kyin.+157+04676.key ##对称加密,公钥和私钥一样
yin. IN KEY 512 3 157 xlZItk4RCct+hg1cyn5PXA==
[root@localhost mnt]# cp /etc/rndc.key /etc/yin.key -p
[root@localhost mnt]# vim /etc/yin.key
[root@localhost mnt]# cat /etc/yin.key
key "yin" {
algorithm hmac-md5;
secret "xlZItk4RCct+hg1cyn5PXA==";
};
[root@localhost mnt]# vim /etc/named.conf
42 include "/etc/yin.key";
[root@localhost mnt]# vim /etc/named.rfc1912.zones
allow-update { key yin; }; ##只允许有钥匙yin的客户端更新
[root@localhost mnt]# scp Kyin.+157+04676.* root@172.25.254.141
客户端
[root@localhost mnt]# nsupdate -k Kyin.+157+04676.private ##客户端 用钥匙更新
服务端
[root@localhost mnt]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp: overwrite ‘/etc/dhcp/dhcpd.conf’? y
[root@localhost mnt]# vim /etc/dhcp/dhcpd.conf
[root@localhost mnt]# cat Kyin.+157+04676.key
yin. IN KEY 512 3 157 xlZItk4RCct+hg1cyn5PXA==
[root@localhost mnt]# cat/etc/dhcp/dhcpd.conf
option domain-name "hello.com"; ##域名
option domain-name-servers 172.25.254.241; ##服务器ip
subnet 172.25.254.0 netmask 255.255.255.0 {
range 172.25.254.100 172.25.254.110; ##范围
option routers 172.25.254.254; ##网关
}
key yin { ##钥匙
algorithm hmac-md5;
secret xlZItk4RCct+hg1cyn5PXA==;
};
zone hello.com.{
primary 127.0.0.1;
key yin;
}