DNS(Domain Name System,域名系统):万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。 DNS功能:每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议的功能。 ####高速缓存DNS#### ##DNS资源记录## DNS区域采用资源记录的形式存储信息。每条资源记录均具有一个类型,表明其保留的数据类型。 -A:名称至IPv4地址 -AAAA:名称至IPv6 -CNAME:名称至“规范名称”(包含A/AAAA记录的另一个名称) -PTR:ipv4/ipv6地址至名称 -MX:用于名称的邮件交换器(向何处发送其电子邮件) -NS:域名的名称服务器 -SOA:“授权起始”,DNS区域的信息(管理信息)

##DNS排错## -NOERROR ##查询成功 -NXDOMAIN:DNS ##服务器提示不存在这样的名称 -SERVFAIL:DNS ##服务器停机或DNSSEC响应验证失败 -REFUSED:DNS #服务器拒绝回答

1.安装dns yum install bind.x86_64 -y ##安装dns配置文件 2.开启dns ystemctl start named 第一次开启时会出现停顿,需要敲击加键盘,生成加密字符,并将文件存入/etc/rndc.key cat /dev/random ##查看加密字符(加密字符存放在/etc/rndc.key) netstat -antulpe |grep named ##查看dns端口号开启状况(未配置服务时的端口情况下,只有本地的53端口开着) 回环接口(127.0.0.1):本机服务之间的通信## vim /etc/named.conf 将第十一行设置为所有: listen-on port 53 {any;};
systemctl restart named netstat -antulpe |grep named ##重新查看dns端口号开启状况

vim /etc/named.conf 17 allow-query {any; }; ##改为所有用户都可以询问 18 forwarders{114.114.114.114; }; ##本机无法回答的问题,会自动询问114.114.114.114 32 dnssec-validation no; 服务不自检 当第一次问时,访问会有延迟,但是当第二次询问时,时间短,主机会高速缓存

正向解析:把域名变成ip vim /etc/named.conf 11 listen=onport 53 {any}; 17 allow-query{any;}; 32 dnssec-validationno;

vim /etc/name.rfc1912.zones 19 zone "westoslinux.com" IN { 20 type master; 21 file "westoslinux.com.zone'; 22 allow-update {none; };

cd /var/named/ cp -p named.localhost westoslinux.com.zone vim /var/named/westoslinux.com.zone

文件中不以.结尾,就会默认补齐@,@为.westoslinux.com 测试:dig www.westoslinux.com

轮询机制 vim /var/named/westoslinux.com.zone cat /var/named/westoslinux.com.zone

$TTL 1D
@ IN SOA dns.westoslinux.com. root.westoslinux.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns.westoslinux.com. dns A 127.25.254.120 www.a A 172.25.254.111 www.a A 172.25.254.222

测试:dig www.westoslinux.com 测试结果为172.25.254.111和172.25.254.222交替出现

MX 用于名称的邮件交换器(向何处发送电子邮件) vim /var/named/westoslinux.com.zone

$TTL 1D ##高速缓存一天 @ IN SOA dns.westoslinux.com. root.westoslinux.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns.westoslinux.com. dns A 127.25.254.120 www.a A 172.25.254.111 www.a A 172.25.254.222 www CHAME www.a.westoslinux.com westoslinux.com MX 1 172.25.254.1

systemctl restart named mail root@westoslinux.com ctrl+d 结束输入

反向解析 cd /var/named/ cp -p named.loopback westoslinux.com.ptr vim /etc/name.rfc1912.zones 51 zone "254.25.172.in-addr.arpa" IN { 52 type master; 53 file "westoslinux.com.ptr"; 54 allow-update { none; };

vim /var/named/westoslinux.com.ptr $TTL 1D @ IN SOA dns.westoslinux.com. root.westoslinux.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns.westoslinux.com. dns A 172.25.254.120 222 PTR www.westoslinux.com. 测试:dig -x 172.25.254.120

dns集群,辅助dns

1.主dns配置 vim /etc/named.rfc1912.zones 添加 25 zone "westoslinux.com" IN { 26 type master; 27 file "westoslinux.com.zone"; 28 allow-update { none; }; 29 allow-transfer { 172.25.254.220; }; ##允许172.25.254.220同步本机A记录文件 }; 2.辅助dns配置 vim /etc/named.conf ##此文件内容和正向解析配置一致 11 listen-on port 53 { any; };
17 allow-query { any; }; 32 dnssec-validation no;

vim /etc/named.rfc1912.zones 25 zone "westoslinux.com" IN { 26 type slave; 27 masters { 172.25.254.120; }; ##设定本机为辅助dns 28 file "slaves/westoslinux.com.zone"; ##A记录文件同步主机ip 29 allow-update { none; }; ##存放A记录文件的位置 };

3.测试 vim /etc/resolv.conf nameserver 172.25.254.200 在slave主机的/var/named/slaves出现westos.com.zone,这是因为在从属服务器的/etc/named.rfc1912.zone中file "slaves/westos.com.zone",书写所致。 ##dns自动同步## 主dns下:vim /etc/rfc1912.zones 29 allow-transfer {172.25.254.220;};
30 also-notify { 172.25.254.220; };

vim /var/named/westoslinux.com.zone 更改serial值,主dns重启后,辅dns会自动同步 注意:serial值最多为十位,通常为年月日+更改次数 从属服务器,会根据serial值是否变化来判断,是否要更新A记录文件。

辅dns更改主dns信息

主dns下: vim /etc/named.rfc1912.zones 28 allow-update { 172.25.254.220; }; systemctl restart named cp -p westoslinux.com.zone /mnt/ chmod 770 /var/log/messages setsebool -P named_write_master_zones 1

辅dns下: [root@dns-server2 slaves]# nsupdate

server 172.25.254.120 update add hello.westoslinux.com 86400 A 172.25.254.120 send> quit

测试: 主dnsxia: dig hello.westoslinux.com

通过密钥用辅dns更改主dns信息 dnssec-keygen -a HMAC-MD5 -b 128 -n HOST westos ##-b:密码长度 -a:密码类型 MD5:对称加密 cat Kwestos.+157+44565.key cp -p /etc/rndc.key /etc/westos.key

vim /etc/westos.key

vim /etc/named.conf 43 include "/etc/westos.key";

vim /etc/named.rfc1912.zones allow-update {key westos;};

把密码和钥匙发送给辅dns。 scp Kwestos.xxxxx.key Kwestos.+157+44565.* root@172.25.254.220:/mnt

测试: 辅dns: [root@dns-server2 slaves]# nsupdate -k Kwestos.+157+44565.private

server 172.25.254.120 update add hello.westoslinux.com 86400 A 172.25.254.120 send> quit

主dns: dig hello.westos.com

DNS的动态解析 服务端: vim /etc/dhcpd/dhcp.conf 7 name "westos.com" 8 name-servers 172.25.254.120 14 ddns-update-style interim; subnet 172.25.254.0 netmask 255.255.255.0{ range172.25.254.231 172.25.254.244; optionrouters 172.25.254.120; }

key westos{ algorithmhmac-md5; secert XXXXX; };

zone westos.com. { ##通知DNS要更新dhcp变的ip primary127.0.0.1; ##DHCP所在的服务器,使用回环更快 key westos; }

客户端: 网卡配置文件 vim /etc/sysconfig/network-scripts/ifcfg-eth0 DNS1=172.25.254.120 BOOTPROTP=dhcp vim /etc/resolv.conf nameserver 172.25.254.130 测试: 服务器: systemctl restart dhcpd systemctl restart named 客户端: systemctl restart network ifconfig dig client.westos.com client为主机名