DNS 总揽
权威名称服务器
存储并提供某区域 ( 整个 DNS 域或 DNS 域的一部分 ) 的实际数据。
权威名称服务器的类型包括
Master : 包含原始区域数据。有时称作 “主要 ”名称服务器
Slave : 备份服务器 , 通过区域传送从 Master 服务器获得的区域数据的副本。有时称作 “次要 ”名称服务器
非权威 / 递归名称服务器
– 客户端通过其查找来自权威名称服务器的数据。递归名称服务器的类型包括
存名称服务器 : 仅用于查找 , 对于非重要数据之外的任何内容都不具有权威性
DNS 查找
客户端上的 Stub 解析器 将查询发送至 /etc/resolv.conf 中的名称服务器,如果名称服务器对于请求的信息具有权威性 , 会将权威答案发送至客户端,否则 , 如果名称服务器在其缓存中有请求的信息 , 则会将非权威答案发送至客户端,如果缓存中没有信息 , 名称服务器将搜索权威名称服务器以查找信息 , 从根区域开始 , 按照DNS 层次结构向下搜索, 直至对于信息有具有权威性的名称服务器 , 以此为客户端获得答案。在此情况中,名称服务器将信息传递至客户端并在自己的缓存中保留一个副本 , 以备以后查找。
DNS资源记录
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 指令
isten-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 };
实验环境搭建
1.先对desktop,server重置
2.对虚拟机内存进行设置,防止卡机。
3.服务端配置
(1)##配置网络
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
[root@localhost ~]# systemctl restart network
(2)##修改服务器名字
[root@localhost ~]# hostnamectl set-hostname dns-server.westos.com
[root@localhost ~]# hostname
dns-server.westos.com
(3)##配置yum源
[root@localhost ~]# vim /etc/yum.repos.d/rhel_dvd.repo
[root@localhost ~]# ifconfig
(4)##安装DNS
[root@dns-server ~]# yum search dns
[root@dns-server ~]# yum install bind.x86_64 -y
(5)##配置服务端
[root@dns-server ~]# systemctl stop firewalld ###关闭火墙
[root@dns-server ~]# ll /etc/rndc.key ##查看/etc/rndc.key文件信息
[root@dns-server ~]# systemctl start named ###开启服务
[root@dns-server ~]# ll /etc/rndc.key ##查看/etc/rndc.key文件信息
[root@dns-server ~]# cat /etc/rndc.key ##查看/etc/rndc.key文件内容
[root@dns-server ~]# netstat -antlpe | grep named
[root@dns-server ~]# vim /etc/named.conf #编辑配置文件
options { ##全局设定
listen-on port 53 { any; }; ##监听本地53端口
listen-on-v6 port 53 { ::1; }; ##关闭ipv6选项
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; } ##指向dns
[root@dns-server ~]# systemctl start named ###开启服务
[root@dns-server ~]# netstat -antlpe | grep named ###过滤所有有关named的信息
[root@dns-server ~]# cat /dev/random ###查看/dev/random 内容
一 正向解析
服务端
[root@dns-server ~]# cd /var/named
[root@dns-server named]# pwd
/var/named
[root@dns-server named]# ls
data named.ca named.localhost slaves
dynamic named.empty named.loopback
[root@dns-server named]# cp -p named.localhost westos.com.zone
##用模板生成用模板生成dns配置配置文件
[root@dns-server named]# vim westos.com.zone
[root@dns-server named]# vim /etc/named.rfc1912.zones
zone "westos.com" IN { #指定要维护的域名
type master;
file "westos.com.zone"; ##指定A记录文件名
allow-update { none; }; ##没有允许更新用户
};
[root@dns-server named]# systemctl restart named ###重启服务
客户端
3 vim /etc/resolv.conf #编辑配置文件
4 dig dns.westos.com ##查询
5 dig www.westos.com
二 多向解析
1. 配置网卡
服务端
添加网卡
配置网络
48 ifconfig
50 cd /etc/sysconfig/network-scripts/ ####切换到/etc/sysconfig/network-scripts/目录
51 ls
52 cp ifcfg-eth0 ifcfg-eth1 ###复制ifcfg-eth1 模板
53 ls
54 vim ifcfg-eth1 ##编辑 ifcfg-eth1文件
55 systemctl restart network ###重启网络
56 systemctl restart named ###重启服务
57 netstat -antlpe | grep named ###过滤所有有关named的信息
2
服务端
15 cd /var/named/
16 ls
20 cp -p westos.com.zone westos.com.inter ###复制westos.com.inter 模板
21 vim westos.com.inter ##编辑 westos.com.inter文件
$TTL 1D
@ IN SOA dns.westos.com. root.westos.com. (
||
dns服务器的主机名 0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.westos.com. ##指定dns主机
dns A 172.25.254.144 ##指定dns服务器的A记录
www A 172.25.254.244 ##要添加的A记录
music CNAME music.a.westos.com.
music.a A 172.25.254.111
music.a A 172.25.254.222
westos.com. MX 1 172.25.254.244.
22 cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.inter ###复制 /etc/named.rfc1912.inter 模板
23 vim /etc/named.rfc1912.inter ##编辑/etc/named.rfc1912.inter文件
zone "westos.com" IN {
type master;
file "westos.com.inter";
allow-update { none; };
};
24 vim /etc/named.conf ##编辑/etc/named.conf 文件
view localnet {
match-clients { 172.25.254.0/24; };##允许网络使用
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
};
view internet {
match-clients { 172.25.44.0/24; };##允许网络使用
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.inter";
};
25 man named.conf ###named的说明
26 fg
29 systemctl restart named
49 systemctl status firewalld
50 systemctl stop firewalld
3 客户端测试254和44
45 mail root@westos.com ###创建邮件
46 mailq ###发送邮件
(1)172..25.254.144
23 vim /etc/resolv.conf
24 dig music.westos.com
25 dig -t mx westos.com
(2)172.25.44.11
1 vim /etc/resolv.conf
2 dig music.westos.com
3 dig -t mx westos.com
三 反向解析
服务器
58 vim /etc/named.rfc1912.zones
48 zone "254.25.172.in-addr.arpa" IN {
49 type master;
50 file "westos.com.ptr";
51 allow-update { none; };
52 };
59 cp -p named.loopback westos.com.ptr
60 vim westos.com.ptr
$TTL 1D
@ IN SOA dns.westos.com. root.westos.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.westos.com.
dns A 172.25.254.244
111 PTR www.westos.com
61 systemctl restart named
客户端
dig -x 172.25.254.111.
四 dns更新
服务端
更新
[root@dns-server ~]# cp -p /var/named/westos.com.zone /mnt/
[root@dns-server ~]# vim /etc/named.rfc1912.zones
zone "westos.com" IN {
type master;
file "westos.com.zone";
allow-update { 172.25.254.144; };
};
[root@dns-server ~]# chmod 770 /var/named/
[root@dns-server ~]# setsebool -P named_write_master_zones 1
[root@dns-server ~]# systemctl restart named
查看更新
[root@dns-server ~]# cd /var/named
[root@dns-server named]# vim westos.com.zone
[root@dns-server named]# systemctl restart named
[root@dns-server named]# vim westos.com.zone
删除
[root@dns-server named]# rm -fr westos.com.zone westos.com.zone.jnl
[root@dns-server named]# cp -p /mnt/westos.com.zone .
[root@dns-server named]# ll -d
drwxrwx---. 5 root named 4096 May 6 04:17 .
[root@dns-server named]# ls -l
total 32
drwxrwx---. 2 named named 22 May 5 22:09 data
drwxrwx---. 2 named named 4096 May 6 04:10 dynamic
-rw-r-----. 1 root named 2076 Jan 28 2013 named.ca
-rw-r-----. 1 root named 152 Dec 15 2009 named.empty
-rw-r-----. 1 root named 152 Jun 21 2007 named.localhost
-rw-r-----. 1 root named 168 Dec 15 2009 named.loopback
drwxrwx---. 2 named named 6 Jan 29 2014 slaves
-rw-r-----. 1 root named 410 May 6 03:35 westos.com.inter
-rw-r-----. 1 root named 204 May 6 03:53 westos.com.ptr
-rw-r-----. 1 root named 415 May 5 23:52 westos.com.zone
[root@dns-server named]# systemctl restart named
[root@dns-server named]# vim westos.com.zone
客户端
增加
[root@localhost ~]# nsupdate
> server 172.25.254.244
> update add hello.westos.com 86400 A 172.25.254.222
> send 【ctrl+d】
[root@localhost ~]# dig hello.westos.com
删除
[root@localhost ~]# nsupdate
> server 172.25.254.244
> update delete hello.westos.com 86400 A 172.25.254.222
> send 【ctrl+d】
五 加密上传 dnskey update
服务端
1
[root@dns-server ~]# dnssec-keygen -a HMAC-MD5 -b 32 -n HOST westoskey ##制作钥匙
Kwestoskey.+157+59437
[root@dns-server ~]# ls
anaconda-ks.cfg Downloads Music Templates
Desktop Kwestoskey.+157+18814.key Pictures Videos
Documents Kwestoskey.+157+18814.private Public
2
[root@dns-server ~]# cp -p /etc/rndc.key /etc/westos.key
[root@dns-server ~]# vim /etc/westos.key ##配置钥匙文件
[root@dns-server ~]# cat /etc/westos.key
key "westoskey" {
algorithm hmac-md5;
secret " HqglOQ==";
};
[root@dns-server ~]# cat Kwestoskey.+157+18814.key
[root@dns-server ~]# cat Kwestoskey.+157+18814.private
3
[root@dns-server ~]# vim /etc/named.conf ##配置DNS
42 include "/etc/westos.key";
[root@dns-server ~]# vim /etc/named.rfc1912.zones
zone"westos.com" IN {
type master;
file "westos.com.zone";
allow-update { key westoskey; };
};
[root@dns-server ~]# systemctl restart named
4
[root@dns-server ~]# scp Kwestoskey.+157+18814.* root@172.25.254.144:/mnt/ ##下放钥匙
客户端
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ls
Kwestoskey.+157+18814.key Kwestoskey.+157+18814.private
[root@localhost mnt]# nsupdate -k Kwestoskey.+157+18814.private
##用钥匙上传
10-May-2017 11:32:55.412 the key 'westoskey' is too short to be secure
> server 172.25.254.244
> update add hello.westos.com 86400 A 172.25.254.111
> send
> [root@localhost mnt]dig hello.westos.com
六 动态
服务端
1
[root@dns-server ~]# yum install dhcp -y ##安装dhcp
2
[root@dns-server ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp: overwrite ‘/etc/dhcp/dhcpd.conf’? y
[root@dns-server ~]# vim /etc/dhcp/dhcpd.conf ##配置dhcp文件
7 option domain-name "westos.com";
8 option domain-name-servers 172.25.254.244
14 ddns-update-style interim;
30 subnet 172.25.254.0 netmask 255.255.255.0 {
31 range 172.25.254.50 172.25.254.60;
32 option routers 172.25.254.250;
33 }
34
35 key westoskey {
36 algorithm hmac-md5;
37 secret " HqglOQ==";
38 };
39 zone westos.com. {
40 primary 127.0.0.1;
41 key westoskey;
42 }
客户端
[root@localhost ~]# hostnamectl set-hostname test.westos.com
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
[root@localhost ~]# systemctl restart network
[root@test ~]# icconfig
[root@test ~]# dig test.westos.com