目录
1. 关于dns的名词解释
dns:domain name service(域名解析服务)
1.1 客户端
/etc/resolv.conf ##dns指向文件
host www.baidu.com ##地址解析命令
dig www.baidu.com ##地址详细解析信息命令
A记录 ##ip地址叫做域名的Address 记录
/etc/resolv.conf 指向文件【指向文件即我们地址解析动作时会访问该文件下指定的IP完成操作】:
地址解析命令'host':
地址详细解析信息命令'dig':
SOA ##授权起始主机
dns顶级
. 13
次级
.com .net .edu .org ....
## 举例:首先从.com中找,如果没有找到便退到.中分级别寻找
1.2 服务端
bind ##安装包
named ##服务名称
/etc/named.conf ##主配置文件
/var/named ##数据目录
53 ## 数据目录端口
1.3 报错信息
1.no servers could be reached ##服务无法访问(服务开启?火墙?网络?端口?)
2.服务启动失败 ##配置文件写错 journalctl -xe查询错误
3.dig 查询状态
NOERROR ##表示查询成功
REFUSED ##服务拒绝访问
SERVFAIL ##查询记录失败,(dns服务器无法到达上级,拒绝缓存)
NXDOMAIN ##此域名A记录在dns中不存在
测试一:在dns_node1主机中我们没有让防火墙允许dns服务端口,在dns_node2主机中设置nameserver为dns_node1的IP地址:192.168.43.20,查看地址详细解析命令报错。
测试二:接上个测试,我们在dns_node1主机中让火墙允许该服务,这个时候我们服务已开启、火墙已经允许、网络也已经配置ok,再来试下。
结果我们还是无法正常的解析,这是为什么呢?
查看并对比
查看状态后我们发现并没有开启192.168.43.20的53端口
接下来我们配置一下
配置完成之后,我们再去执行dig www.baidu.com查看结果
测试三:接上个测试最终结果,我们注意看标红部分,只有问题而没有回答,这是因为我们现在所处的状态是REFUSED
我们来看下正常显示内容,会发现正常显示时状态为NOERROR
这个时候我们在dns_node1中查看配置文件我们发现它只允许了本地主机,我们将其修改为any
在dns_node2中再次解析www.baidu.com,查询记录失败。 结果如下
2. dns服务的安装与启用
#安装#
dnf install bind.x86_64 -y
#启用#
systemctl enable --now named
firewall-cmd --permanent --add-service=dns ## 设定火墙策略
firewall-cmd --reload
启用:
火墙中允许该服务:
vim /etc/named.conf
11 listen-on port 53 { any; }; ##在本地所有网络接口上开启53端口
19 allow-query { any; }; ##允许查询A记录的客户端列表
32 dnssec-validation no; ##禁用dns检测使dns能够缓存外部信息到本机
systemctl restart named
3. 高速缓存dns
20 forwarders { 114.114.114.114; };
4. dns的正向解析
vim /etc/named.rfc1912.zone
zone "dsd.com" IN { ##维护的域名
type master; ##当前服务器位主dns
file "dsd.com.zone"; ##域名A记录文件
allow-update { none; }; ##允许更新主机列表
};
cd /var/named/
cp -p named.localhost dsd.com.zone
$TTL 1D
@ IN SOA dns.dsd.com. root.dsd.com (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.dsd.com.
dns A 192.168.0.20
www CNAME dsd.a.dsd.com. ##规范域名
dsd.a A 192.168.0.111 ##正向解析记录
dsd.a A 192.168.0.112
dsd.com. MX 1 192.168.0.20. ##邮件解析记录
systemctl restart named
dig www.dsd.com #查询正向解析
dig -t mx dsd.com #邮件解析记录查询
dig www.dsd.com #查询正向解析
dig -t mx westos.com #邮件解析记录查询
5. dns的反向解析
vim /etc/named.rfc1912.zones
zone "43.168.192.in-addr.arpa" IN {
type master;
file "192.168.43.ptr";
allow-update { none; };
};
cd /var/named/
cp -p named.loopback 192.168.43.ptr
vim 192.168.43.ptr
$TTL 1D
@ IN SOA dns.dsd.com. root.dsd.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.dsd.com.
dns A 192.168.43.20
11 PTR www.dsd.com.
12 PTR bbs.dsd.com.
13 PTR news.dsd.com.
14 PTR wenku.dsd.com
systemctl restart named
测试:
dig -x 192.168.43.14
dig -x 192.168.43.14
6. dns的双向解析
实验环境:
## 客户端2台
192.168.43网段
172.25.254网段 ##ifconfig ens160 172.25.254.30 netmask 255.255.255.0
## 服务端1台2个网段的ip
192.168.43.20
172.25.254.20 ##ifconfig ens160 172.25.254.20 netmask 255.255.255.0
【外网】客户端主机1(dns_node2):
【内网】客户端主机2(rhel7):
服务端(dns_node1):
在192.168.43网段的客户主机rhel7中
vim /etc/resolv.conf
nameserver 192.168.43.20
在172.25.254网段的客户主机dns_node2中
vim /etc/resolv.conf
nameserver 172.25.254.20
配置方式:
cd /var/named/
cp -p dsd.com.zone dsd.com.inter
vim dsd.com.inter
$TTL 1D
@ IN SOA dns.dsd.com. root.dsd.com (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.dsd.com.
dns A 172.25.254.20
www CNAME dsd.a.dsd.com.
dsd.a A 172.25.254.111
dsd.a A 172.25.254.112
dsd.com. MX 1 172.25.254.20.
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.inters
vim /etc/named.rfc1912.inters
zone "dsd.com" IN {
type master;
file "dsd.com.inter";
allow-update { none; };
};
vim /etc/named.conf
view localnet {
match-clients { 192.168.0.0/24; };
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key"; };
view internet {
match-clients { any; };
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.inters";
include "/etc/named.root.key"; };
systemctl restart named
测试:
分别在2个网段的主机中作同样域名的地址解析
得到的A记录不同
7. dns集群
DNS集群:在一台主机中做的任何操作,会同步到其他所有的主机中。
主dns:
zone "dsd.com" IN {
type master;
file "dsd.com.zone";
allow-update { none; };
also-notify { 192.168.43.30; }; ##主动通知的辅助dns主机
};
vim /var/named/dsd.com.zone
$TTL 1D
@ IN SOA dns.dsd.com. root.dsd.com (
2020031402 ; serial ##每次修改A记录文件需要
1D ; refresh ##变更此参数的值
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.dsd.com.
dns A 192.168.43.20
www CNAME dsd.a.dsd.com.
dsd.a A 192.168.43.211
dsd.a A 192.168.43.212
dsd.com. MX 1 192.168.43.20.
slave dns:
dnf install bind -y
firewall-cmd --add-service=dns
vim /etc/named.conf
listen-on port 53 { any; };
allow-query { any; };
dnssec-validation no;
vim /etc/named.rfc1912.zone
zone "westos.com" IN {
type slave; ##dns状态位辅助dns
masters { 192.168.0.20; }; ##主dns
file "slaves/westos.com.zone"; ##同步数据文件
};
systemctl restart named
8. dns的更新
8.1 dns基于ip地址的更新
在dns中设定:
vim /etc/named.rfc1912.zones
zone "dsd.com" IN {
type master;
file "dsd.com.zone";
allow-update { 192.168.43.10; }; ##允许指定客户端更新dsd域
also-notify { 192.168.43.30; };
};
测试: 在192.168.0.10
[root@rhel7_node1 ~]# nsupdate
> server 192.168.43.20
> update add hello.dsd.com 86400 A 192.168.43.111 ##新曾A记录
> send
> update delete hello.dsd.com ##删除A记录
> send
- 新增A记录
- 删除A记录
8.2 dns基于key更新
dns基于key更新的方式:
dnssec-keygen -a HMAC-SHA256 -b 128 -n HOST dsd
cp -p /etc/rndc.key /etc/dsd.key
vim /etc/dsd.key
key "dsd" {
algorithm hmac-sha256;
secret "4EVMXogJevsnJ5vW/0E7bw==";
};
vim /etc/named.conf
43 include "/etc/dsd.key";
vim /etc/named.rfc1912.zones
zone "dsd.com" IN {
type master;
file "dsd.com.zone";
allow-update { key dsd; };
also-notify { 192.168.43.30; };
};
systemctl restart named
这个时候由于我们没有设置两台主机时间同步,因此会报错,这里我们直接将时间同步设置好。
- dns_node1主机192.168.43.20中
vim /etc/chrony.conf
###
23 allow 192.168.43.0/24
26 local stratum 10
###
systemctl restart chronyd.service
systemctl stop firewalld
- 在rhel7主机192.168.43.10中
vim /etc/chrony.conf
###
server 192.168.43.20 iburst
###
systemctl restart chronyd.service
[root@rhel7_node1 ~]# nsupdate -k /mnt/Kdsd.+163+26695.private
> server 192.168.43.20
> update add hello.dsd.com 86400 A 192.168.43.111
> send
> quit
9. ddns(dhcp+dns)
- 设定测试主机网络工作方式为dhcp
- 配置dns_node1的dhcp服务
cd /etc/dhcp/
cp /usr/share/doc/dhcp-server/dhcpd.conf.example dhcpd.conf
vim dhcpd.conf
###
7 option domain-name "dsd.com";
8 option domain-name-servers 192.168.43.20;
27 #subnet 10.152.187.0 netmask 255.255.255.0 {
28 #}
32 subnet 192.168.43.0 netmask 255.255.255.0 {
33 range 192.168.43.50 192.168.43.80;
34 option routers 192.168.43.1;
35 }
###
- 在测试主机中,通过dhcp动态获取IP
key westos {
algorithm hmac-sha256;
secret SB1tQcLaWeroU9lGW21zeA==;
};
zone westos.com. {
primary 127.0.0.1;
key westos; }
dns的key更新
测试:
设定测试主机网络工作方式为dhcp
设定主机名称test.westos.com
重启网络
dig test.westos.com
可以得到正确解析