一、DNS基本概念
dns(domain name services):域名解析服务
地址解析:将域名解释分析成ip
在客户端中:
dns的指向文件为/etc/resolv.conf
地址解析命令为
host www.baidu.com ##地址解析命令
dig www.baidu.com ##地址详细解析命令
A记录:ip地址对应域名的记录
在服务端中:
安装包 bind.x86_64
服务名称 named
主配置文件 /etc/named.conf
数据目录 /var/named
端口号 53
二、DNS服务的启用与安装
dnf search dns
dnf install bind.x86_64 -y ##安装服务
systemctl enable --now named ##开启服务并设定开机启动
netstat -antlupe | grep named ##查看服务端口
设置火墙信息
在客户端编辑DNS指向文件/etc/resolv.conf,将dns指向服务端ip
在客户端执行地址解析命令显示服务不可到达
修改配置文件/etc/named.conf,将11行改为在本地所有网络接口开启53端口
listen-on port 53 { any; };
再次查看dns服务的网络接口
再次执行地址解析命令
再次更改配置文件/etc/named.conf,将19行改为允许所有客户端查询A记录
allow-query { any; };
执行地址解析命令
在dns服务端中,已经配置了网络能够连接外网,所以排除dns无法到达上级的问题,在配置文件中使dns可以缓存外部信息,修改主配置文件/etc/named.conf,将34行改为禁用dns检测,使得dns能够缓存外部信息到本机中
dnssec-validation no;
重启服务后再次执行地址解析命令成功
综上所属,在开启系统中可能出现的报错信息有如下:
1、显示 no server could be reached,表示服务无法访问,可能的原因有:①服务没有开启;②火墙允许服务是否开启;③网络是否联通;④端口是否开启
2、dig查询状态时状态显示为NOERROR,表示查询成功
3、dig查询状态时状态显示为REFUSED,表示服务拒绝访问
4、dig查询状态时状态显示为SERVFAIL,表示查询记录失败,原因可能有两个:①dns无法到达上级,需要将dns服务能够连接外网;②dns无法缓存外部信息,需要在配置文件中设置安全性使得外部信息能够进入主机中
5、dig查询状态时状态显示为NSDOMAIN,表示域名A记录在DNS中不存在
三、高速缓存DNS
在主配置文件中写入如下参数
forwarders { 114.114.114.114; };
在客户端1中解析域名www.sina.com,显示花费时间为111ms
在客户端2中再次解析域名www.sina.com,显示花费时间为2ms
当在dns服务中开启告诉缓存时能够使得企业中上网时的解析速度加快
四、DNS的正向解析
4.1 正向解析:根据域名查询IP地址
在dns中存在一个子文件/etc/named.rfc1912.zones,这个子文件管理着所有的zone,在这个子文件中写入一个我们自定义的区域
zone "wang.com" IN {
type master; 类型为主解析dns
file "wang.com.zone"; 文件名称
allow-update { none; };
};
在指定的文件wang.com.zone中写入A记录内容
cd /var/named/
cp named.localhost wang.com.zone ##named.localhost为A记录的模板
vim wang.com.zone
在文件wang.com.zone中写入内容如下:
$TTL 1D
@ IN SOA dns.wang.com. root.wang.com (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.wang.com.
dns A 192.168.0.11
www A 192.168.0.111
重启系统后在客户端测试,结果如下:
由结果可知,本机解析的速度非常快
4.2 邮件
邮件传送协议为smtp,需要软件来支持,常见的软件为postfix。发送邮件需要安装协议支持软件以及邮件客户端
在发送邮件过程中,需要一台邮件服务器询问自身的dns,发件人的邮件服务器的mx记录是什么,所以邮件发送也需要dns的支持
安装postfix软件并启动服务
dnf install postfix -y
systemctl enable --now postfix.service
dnf install mailx -y
在客户端给域"wang.com"中的某人发送邮件时显示退件
编辑文件/var/named/wang.com.zone
$TTL 1D
@ IN SOA dns.wang.com. root.wang.com (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.wang.com.
dns A 192.168.0.11
www A 192.168.0.111
wang.com. MX 1 192.168.0.11.
其中wang.com. MX 1 192.168.0.11.
表示当询问"wang.com"域中负责邮件的ip是谁时,将给192.168.0.11.
在客户端进行测试,可以发送
五、DNS的反向解析
反向解析:根据IP地址查询域名
更改配置文件/etc/named.rfc1912.zones中的内容
zone "0.168.192.in-addr.arpa" IN {
type master;
file "192.168.0.ptr";
allow-update { none; };
};
在文件192.168.0.ptr中写入内容
cp -p named.loopback 192.168.0.ptr
vim 192.168.0.ptr
$TTL 1D
@ IN SOA dns.wang.com root.wang.com (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.wang.com.
dns A 192.168.0.11
111 PTR www.wang.com.
112 PTR news.wang.com.
重启服务后在客户端进行测试,反向解析成功
六、DNS的双向解析
客户端1为192.168.0网段
客户端2为172.25.254网段
dns服务端包含两个网段的ip,分别为192.168.0.11和172.25.254.11
将客户端1的dns指向文件改为
nameserver 192.168.0.11
将客户端2的dns指向文件改为
nameserver 172.25.254.11
在客户端1执行地址解析命令后显示的ip为192.168.0网段
若192.168.0网段的客户端1在做地址解析时得到的ip为192.168.0网段而172.25.254网段的客户端2在做地址解析时得到的ip为172.25.254网段,则完成了dns的双向解析
要达到双向解析的目的,则区块设置文件以及A记录文件要是双份
复制A记录文件
cd /var/named
cp -p wang.com.zone wang.com.inter #得到外网的A记录文件
vim wang.com.inter
$TTL 1D
@ IN SOA dns.wang.com. root.wang.com (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.wang.com.
dns A 172.25.254.11
www A 172.25.254.111 # 将wang.con.zone文件中的192网段改为172网段
复制区块设置文件
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.inters
vim /etc/named.rfc1912.inters
zone "wang.com" IN {
type master;
file "wang.com.inter"; ##文件名称
allow-update { none; };
};
更改主配置文件
vim /etc/named.conf
#zone "." IN { ##将配置文件中原有的这些内容注释掉
# type hint;
# file "named.ca";
#};
#include "/etc/named.rfc1912.zones";
#include "/etc/named.root.key";
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";
};
重启服务后在客户端1测试结果为
在客户端2测试结果为
七、DNS集群
ip为192.168.0.11的主机为主dns服务器,ip为192.168.0.12的主机为从dns服务器,dns集群是指当dns服务主机的数据量越来越大时需要从dns服务主机来分担负载,主要是保证主dns中的数据文件有更新时,从dns服务主机中也能够及时更新数据。
在从dns主机中下载dns服务软件包bind并启动服务
和上述启用dns过程类似,需要在主配置文件中做出更改如下图
在配置文件/etc/named.rfc1912.zones中设定域的格式如下
zone "wang.com" IN {
type slave; #类型为从dns
masters { 192.168.0.11; }; #主dns的ip
file "slave/wang.com.zone"; #数据存放文件,将主dns主机中的数据文件同步过来
};
重启服务后在客户端进行测试
当主dns中的数据文件内容发生改变时
用主dns解析的客户端能够及时识别更新
但是用从dns解析的客户端还不能够及时识别更新
为了使得从dns能够及时的识别更新,需要在主dns主配置文件中更改内容如下
并且在数据文件/var/named/wang.com.zone中通过更新序列号/版本号来将更新传达给从dns
主dns重启服务后再次在客户端用从dns解析
八、DNS的更新
8.1 基于ip地址的更新
在dns服务器中编辑配置文件/etc/named.rfc1912.zones,将允许更新那一行改为允许ip为192.168.0.10的主机更新
重启服务后在ip为10的客户端主机中进行操作
[root@rhel7_node1 ~]# nsupdate
> server 192.168.0.11
> update add xixi.wang.com 86400 A 192.168.0.111
> send
测试主机名是否能够完成解析
dig xixi.wang.com
删除更新
> update delete xixi.wang.com
> send
> quit
8.2 基于key的更新
在dns服务器中执行如下命令生成key文件
dnssec-keygen -a HMAC-SHA256 -b 128 -n HOST wang
-a | 指定加密算法 |
---|---|
-b | 指定加密长度 |
-n | 指定类型 |
wang | key文件名称 |
得到两个文件
key文件:Kwang.+163+10834.key
私钥文件:Kwang.+163+10834.private
cat Kwang.+163+10834.key
wang. IN KEY 512 3 163 eXiR2xD8wPaXj5X5IBr5xA==
生成远程域名服务控制文件
cp -p /etc/rndc.key /etc/wang.key
vim /etc/wang.key
key "wang" {
algorithm hmac-sha256;
secret "eXiR2xD8wPaXj5X5IBr5xA==";
};
编辑主配置文件
vim /etc/named.conf
include "/etc/wang.key";
编辑配置文件/etc/named.rfc1912.zones
vim /etc/named.rfc1912.zones
zone "wang.com" IN {
type master;
file "wang.com.zone";
allow-update { key wang; }; #允许名为wang的key更新
also-notify { 192.168.0.12; };
};
重启服务并将密钥传送给客户端
systemctl restart named
scp /mnt/Kwang.+163+10834.* root@192.168.0.10:/mnt
在客户端中进行更新
[root@rhel7_node1 mnt]# nsupdate -k /mnt/Kwang.+163+10834.private
> server 192.168.0.11
> update add xixi.wang.com 86400 A 192.168.0.112
> send
查看更新是否成功
dig xixi.wang.com
九、ddns(dhcp+dns)
当一台客户主机的ip获取方式为dhcp,则这台主机的ip可能会一直发生改变,如何能够让dns解析识别ip和主机名的动态对应关系是我们需要解决的问题
在dns服务器上安装dhcp服务使得客户端主机能够动态获得ip,编辑dhcp服务的配置文件
在客户端中将网络改为dhcp
在客户端中将主机名设置为dns2.wang.com
hostnamectl set-hostname dns2.wang.com
为了使客户端能够解析到dns2.wang.com这个主机名的ip需要在dns服务器中更改dhcp服务的配置文件
在客户端进行解析
更改dhcp配置文件中地址池的范围
在客户端将网卡设备重重启后再次解析
可以实现动态解析