一、什么是DNS服务?
DNS服务器是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写,它是由解析器和域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。其中域 名必须对应一个IP地址,而IP地址不一定有域名。域名系统采用类似目录树的等级结构。域名服务器为客户机/服务器模式中的服务器方,它主要有两种形式: 主服务器和转发服务器。将域名映射为IP地址的过程就称为“域名解析”。客户端上的 Stub 解析器 将查询发送至 /etc/resolv.conf 中的名称服务器
如果名称服务器对于请求的信息具有权威性 , 会将权威答案发
送至客户端否则 , 如果名称服务器在其缓存中有请求的信息 ,
则会将非权威答案发送至客户端
DNS协议运行在UDP协议之上,使用端口号53。
缓存 DNS 服务器:
- BIND 是最广泛使用的开源名称服务器
- 在 RHEL 中 , 通过 bind 软件包提供
- 防火墙开启端口 53/TCP 和 53/UDP
- BIND 的主配置文件是 /etc/named.conf
- /var/named 目录包含名称服务器所使用的其他数据文件
二、DNS的高速缓存
实验:
1.再真机上操作:
[root@localhost10 ~]# systemctl start firewalld //真机上开启火墙
[root@localhost10 ~]# firewall-cmd --list-all //查看火墙列表
public (default, active)
interfaces: br0 enp0s25 wlp3s0
sources:
services: dhcpv6-client ftp http ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
[root@localhost10 ~]# firewall-cmd --add-masquerade //添加伪装
[root@localhost10 ~]# firewall-cmd --list-all
public (default, active)
interfaces: br0 enp0s25 wlp3s0
sources:
services: dhcpv6-client ftp http ssh
ports:
masquerade: yes //路由表添加成功
forward-ports:
icmp-blocks:
rich rules:
此实验用虚拟机server来做服务机,用desktop做测试机
2.服务机设置: 主机连接wifi
1) 设置server虚拟机上的ip为110
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
IPADDR0=172.25.254.110
PREFIX0=24
NAME=eth0
ONBOOT=yes
DEVICE=eth0
GATEWAY=172.25.254.10
[root@localhost ~]# systemctl restart network
2) 设置虚拟机上的外网解析
vim /etc/resolv.conf
[root@localhost ~]# vim /etc/resolv.conf //外网解析为114.114.114.114
nameserver 114.114.114.114
3) 配置yum源
此实验用的是主机172.25.254.250
[root@localhost ~]# vim /etc/yum.repos.d/rhel_dvd.repo
[rhel_dvd]
gpgcheck = 0
enabled = 1
baseurl = http://172.25.254.250/rhel7
name = Remote classroom copy of dvd
[root@localhost ~]# yum clean all //清除yum源的缓存
4)下载dns
[root@localhost ~]# yum search dns //查看dns的软件
[root@localhost ~]# yum install bind.x86_64 -y //下载安装bind.x86_64
[root@localhost ~]# systemctl start named //开启dns服务
[root@localhost ~]# systemctl stop firewalld //关闭火墙
[root@localhost ~]# rpm -qc bind //查找DNS的配置文件
[root@localhost ~]# vim /etc/named.conf //打开DNS的配置文件
11 listen-on port 53 { any; }; // 将 11行的 本地的回环接口改为所有人any
17 allow-query { any; }; // 将 17行 主机名称该为所有人any
18 forwarders { 114.114.114.114; }; //添加18行 如果是客户机访问服务机服务机不知道的情况下,访问114.114.114.114
32 dnssec-validation no; //认证备案修改为no
5) 重启网络服务和DNS服务
systemctl restart network //重启网络
systemctl restart named //重启DNS服务
3.客户机设置
1) 设置ip
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
DNS1=172.25.254.110 //加 ip110 的DNS
BOOTPROTO=none
IPADDR0=172.25.254.210
PREFIX0=24
ONBOOT=yes
NAME=eth0
2) 重启网络
systemctl restart network
3) 测试
dig www.baidu.com
三、DNS的正向解析
用于域名到IP地址的映射,当DNS客户端请求解析某个域名时,DNS服务器通过正向查找,并返回给DNS客户端对应的IP地址。
1. 设定服务机的配置文件
vim /etc/named.conf 再DNS服务的配置文件中“//” "/*" 为注释的意思
2.添加域
vim /etc/named.rfc1912.zones
复制样本,修改为以下参数
zone "westos.com" IN {
type master;
file "westos.com.zone";
allow-update { none; };
};
3.配置westos.com.zone文件
[root@localhost ~]# cd /var/named
[root@localhost ~]# cp -p named.localhost westos.com.zone
[root@localhost ~]# vim westos.com.zone
$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.110
www A 172.25.254.120
music A 172.25.254.112
[root@localhost ~]# systemctl restart named
4.重启服务
systemctl restart named
5.客户端测试
dig www.westos.com
四、DNS的反向解析
用于IP地址到域名的映射,当DNS客户端请求解析某个IP地址时,DNS服务器通过反向查找,并返回给DNS客户端对应的域名。
1.服务端修改配置为键参数
取消 /etc/named.conf 主配置文件中 的外网解析,该为本地解析(大约18行)
再修改配置文件 /etc/named.rfc1912.zones
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "254.25.172.in-addr.arpa" IN {
type master;
file "westos.com.inter";
allow-update { none; };
};
2.创建反向解析的配置文件
[root@localhost ~]# cd /var/named/
[root@localhost named]# cp -p named.loopback westos.com.inter
[root@localhost named]# vim /var/named/westos.com.inter
$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.110
10 PTR www.westos.com. ###PTR IP转换至名称
12 PTR music.westos.com.
[root@localhost named]# systemctl restart named
3.重启服务
systemctl restart named
4.客户机检测
dig -x 172.25.254.12
五、DNS的双向解析
DNS双向解析指内网与外网解析分离
1.创建外网域名编辑文件
[root@localhost ~]# cd /var/named/
[root@localhost named]# cp -p westos.com.zone westos.com.inter
[root@localhost named]# vim westos.com.inter
2.编辑外网配置文件
[root@localhost named]# cp -p /etc/named.rfc1912.zones /etc/named.rfc1913.zones
[root@localhost named]# vim /etc/named.rfc1912.zones
3.编辑配置文件使内外网分离
[root@localhost named]# vim /etc/named.conf
49 view localnet {
50 match-clients { localhost; };
51 zone "." IN {
52 type hint;
53 file "named.ca";
54 };
55
56 include "/etc/named.rfc1912.zones";
57 };
58
59 view internet {
60 match-clients { any; };
61 zone "." IN {
62 type hint;
63 file "named.ca";
64 };
65 include "/etc/named.rfc1913.zones";
66 };
4.设置dns
设置服务端(内网)的dns为172.25.254.110
设置客户端的(外网)dns为172.25.254.110
5.测试:
六、DNS的主从集群
辅助DNS主要是为了减轻主DNS服务器的工作负荷,可以配置多台辅助DNS服务器。
1.先注释掉主配置文件双向解析的参数
vim /etc/named.conf
2.辅助机设置
yum install bind -y 下载dns服务软件包
[root@localhost named]# vim /etc/named/conf 设置主配置文件
11 listen-on port 53 { any; }; 将本地的回环接口改为所有人any
17 allow-query { any; }; 将主机名称该为所有人any
32 dnssec-validation no; 认证备案修改为no
[root@localhost named]# vim /etc/named.rfc1912.zones
zone "westos.com" IN {
type slave; 修改类型
masters { 172.25.254.110; };
file "slaves/westos.com.inter"; 文件指定地址
allow-update { none; };
};
[root@localhost named]# vim /etc/resolv.conf 设置他的DNS为110
nameserver 172.25.254.110
[root@localhost named]# systemctl restart named 重启
3.服务机设置
[root@localhost named]# vim /etc/named.rfc1913.zones
zone "westos.com" IN {
type master;
file "westos.com.inter";
allow-update { none; };
also-notify { 172.25.254.210; }; 同步
};
[root@localhost named]# vim /var/named/westos.com.inter 外网解析的配置文件
$TTL 1D
@ IN SOA dns.westos.com. zhou.westos.com. (
2018110302 ; serial
2018110503 (每修改一次ip,就要变更一次数字,他的辅助设备才能同步)
1D ; refresh
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.westos.com.
dns A 192.168.0.110
news A 192.168.0.20
www CNAME shuilong.westos.com.
shuilong A 192.168.0.12
shuilong A 192.168.0.121
westos.com. MX 1 192.168.0.10.
[root@localhost named]# vim /etc/resolv.conf 外网解析
nameserver 172.25.254.20
[root@localhost named]# systemctl restart named 重启服务
测试辅助机:
七、DNS客户端的更新
1.服务机设置
[root@localhost named]# vim /etc/named.rfc1913.zones
zone "westos.com" IN {
type master;
file "westos.com.inter";
allow-update { 172.25.254.77; }; 77主机可更新
also-notify { 172.25.254.20; };
};
[root@localhost named]# systemctl restart named
[root@localhost named]# systemctl stop firewalld
[root@localhost named]# chmod 770 /var/named/
[root@localhost named]# setsebool -P named_write_master_zones 1 打开selinux对功能的开关
[root@localhost named]# cp -p /var/named/westos.com.inter /mnt 备份
2.77主机上的更新操作
3.检测:
[root@localhost named]# cd /var/named/
[root@localhost named]# ls
data named.ca named.localhost slaves westos.com.inter.jnl
dynamic named.empty named.loopback westos.com.inter westos.com.zone
4.删除刚才的更新
[root@foundation77~]# nsupdate
> server 172.25.254.110
> update del hello.westos.com
> send
服务机上删除文件
rm -fr westos.com.inter.jnl westos.com.inter
cp -p /mnt/westos.com.inter /var/named/ //恢复之前的文件
八、DNS的密钥更新
1.在服务机上
[root@localhost named]# cd /mnt
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST dnskey -a加密类型;-b加密长度;-n加密用途(dns解析);密钥名字
[root@localhost mnt]# ls
Kdnskey.+157+09137.key Kdnskey.+157+09137.private
[root@localhost mnt]# cat Kdnskey.+157+09137.key
dnskey. IN KEY 512 3 157 CEZZCDhlrmIk26H3ZEKUGA==
[root@localhost mnt]# cp -p /etc/rndc.key /etc/westos.key
[root@localhost mnt]# vim /etc/westos.key
key "dnskey" { 加密名字
algorithm hmac-md5; 加密类型
secret "CEZZCDhlrmIk26H3ZEKUGA==";
};
[root@localhost mnt]# vim /etc/named.conf 将锁与dns服务关联
43行 include "/etc/westos.key";
[root@localhost mnt]# vim /etc/named.rfc1913.zones
allow-update { key dnskey; };
[root@localhost mnt]# systemctl restart named
[root@localhost mnt]# scp Kdnskey.+157+09137.* root@172.25.254.77:/mnt/
2.在指定的主机上更新
[root@localhost mnt]# cd /mnt
[root@localhost mnt]# timedatectl set-timezone Asia/Shanghai
[root@localhost mnt]# vim /etc/chrony.conf
server 172.25.254.77 iburst
[root@localhost mnt]# systemctl restart chronyd //在进行密钥更新前先要进行时间同步
[root@localhost mnt]# nsupdate -k Kdnskey.+157+03137.private 用钥匙更新
> server 172.25.254.110
> update add hello.westos.com 86400 A 172.25.254.112 添加hello.westos.com域名对应IP为172.25.254.112
> send
>quit
[root@localhost mnt]#
3.测试
dig hello.westos.com //测试实验是否成功