DNS的全称为Domain Name System,顾名思义就是域名解析系统,详见:linux的网络服务中DNS服务部分。我们知道我们在输入网址上网时就有域名解析进行的过程,今天我们就来了解一下什么是高速缓存DNS。
实验之前,我们先选定一台主机作为服务机,即用来缓存DNS解析的内容,这台主机需要连接网络以及配置好yum源。详见linux的网络服务和linux软件包的安装配置网络和yum源。
yum install bind -y ##下载服务
systemctl start named ##开启服务
systemctl stop firewall ##关闭火墙
这些都是准备工作。
#主配置文件:/etc/named.conf
#子配置文件:/etc/name.rfc1912.zones
#数据目录: /var/named
vim /etc/named.conf
修改11,17,18,32行的内容,其中 listen-on port 53 { any; };表示对任何ip都开启53接口; allow-query { any; };表示允许所有人访问,使用本机进行DNS解析;forwarders { 114.114.114.114; };表示解析地址,即在本机不能解析时,访问这个地址进行解析;dnssec-validation no表示设置网警不检查。
dig www.hao123.com
解析时间为449毫秒。
第二次解析时间为0秒,所以我们知道使用高速缓存DNS可以大大提高解析速率。
此时这台主机可以作为服务机去为其他主机解析域名,并且已经解析过的域名速度极快。
vim /etc/resolv.conf
在另一台主机上设置DNS解析地址为服务机IP,使用服务机进行域名解析。
可以看到另一台主机也很快完成了解析。
由此我们可以知道DNS 服务器可以高速缓存从其他 DNS 服务器收到的 DNS 记录。 也可以在 DNS 客户服务中使用高速缓存,将其作为 DNS 客户端保存在最近的查询过程中得到的信息高速缓存的方法。 总的来说就是可以提高解析速度。
DNS的正向解析,简单来说就是由域名得到ip。
vim /etc/named.rfc1912.zones
cd /var/name
cp -p named.localhost westos.com.zone
复制模板
vim westos.com.zone
$TTL 1D ##客户可以将信息在主机中保存一天
1D ; refresh ##数据刷新时间为1天
1H ; retry ##重新查询是时间为1小时
1W ; expire ##客户可以查询的最长期限为10000天
3H ) ; minimum ##最小缓存时间为3小时
systemctl restart named ##重启服务
这样,一个正向的域名解析就完成了。
之后在测试的主机上测试:
dig www.westos.com
正向解析是由域名得到ip,而反向解析正好相反,是由ip得到域名。
vim /etc/named.rfc1912.zones
cd /var/named
cp -p named.loopback 172.25.254.ptr
复制模板。
vim 172.25.254.ptr
systemctl restart named ##重启服务
这样一个反向解析的库就做好了。
dig -x 172.25.62.12
DNS的双向解析能实现内网主机和外网主机访问同一个域名时,定义到不同的服务器。
cd /var/named/
cp -p westos.com.zone westos.com.inter
因为针对不同主机的解析出来的服务器是在不同网段的,所以要新生成一个文件来设置这个网段ip和域名的对应关系。
vim westos.com.inter
cd /etc/
cp -p named.rfc1912.zones named.rfc1912.inter
vim named.rfc1912.inter
vim named.conf
编辑这个文件时要把下面这部分用/*屏蔽掉或者删除。
50 /*
51 zone "." IN {
52 type hint;
53 file "named.ca";
54 };
55 */
设置如果是本机访问则读取/etc/named.rfc1912.zones文件,如果是其他主机访问则读取/etc/named.rfc1912.inter文件。这样在访问同一个域名时系统会根据对象的不同给出不同的答案。
systemctl restart named ##重启服务
测试:
在本机
dig www.westos.com
dig www.westos.com
可以看到,对不同的主机访问同一个域名,系统给出了不同的ip,这样就完成了双向解析,当然,多向解析也是一样的。
辅助dns服务器可以缓解主dns服务器的压力,这里我们用另一台主机作为辅助dns服务器。
同样,在这台主机上要先配置好yum源,下载bind。
hostnamectl set-hostname slave
systemctl stop firewalld.service ##关闭火墙
vim /etc/named.conf
10 options {
11 listen-on port 53 { any; }; ##第一处更改
12 listen-on-v6 port 53 { ::1; };
13 directory "/var/named";
14 dump-file "/var/named/data/cache_dump.db";
15 statistics-file "/var/named/data/named_stats.txt";
16 memstatistics-file "/var/named/data/named_mem_stats.txt";
17 allow-query { any; }; ##第二处更改
32 dnssec-validation no; ##第三处更改
更改配置文件内容,这三处分别代表什么上文已经提过,这里不再重复。
vim /etc/named.rfc1912.zones
在文件中添加内容,注意type为slave表示辅助,下面加上masters { 172.25.62.252; };,其中的ip地址即为要辅助的服务器。
vim /etc/resolv.conf
屏蔽这个文件中原本的dns解析服务器,就可以进行测试了。
dig www.westos.com
在本机测试成功,在用另一台主机测试一下这台主机是否辅助了原主机的工作。
vim /etc/resolv.conf
dig www.westos.com
测试结果表明,辅助主机确实完成了辅助工作。
但要注意的是,辅助主机只会同步一次服务主机的dns信息,也就是说,服务主机的信息改变之后,辅助主机的dns信息不会改变,所以这里还要做一下信息同步,做信息同步时要把前面做的双向解析部分还原。
vim /etc/named.rfc1912.zones
vim /var/named/westos.com.zone
更新信息,每次更改信息时要更改serial的值,否则辅助机上的记录不会被同步这个值最大10位,可以使用日期方便查看。
在辅助机上查看是否更新:
dig www.westos.com
远程更新时如果两台主机的时间不一样要先做时间同步。
基于ip的远程更新
在服务主机上修改文件
vim /etc/named.rfc1912.zones
chmod 770 /var/named/
getsebool -a | grep named
setsebool -P named_write_master_zones on 执行这两步排除selinux的影响。
这样就完成了。接下来就可以用目标主机更新了。
在目标主机:
nsupdate
dig kyou.westos.com
nsupdate
> update delete kyou.westos.com ##删除
> send
> quit
这样就完成了远程删除了。
基于key的远程更新
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST westos ##生成密钥
vim /etc/named.conf
cp -p /etc/rndc.key /etc/westos.key
复制模板
vim /etc/westos.key
vim /etc/named.rfc1912.zones
43 zone "westos.com" IN {
44 type master;
45 file "westos.com.zone";
46 allow-update { key westos; }; ##指定westos域可以被westoskey更新
47 also-notify { 172.25.62.1; };
systemctl restart named
重启服务
在测试主机上测试:
scp [email protected]:/var/named/Kwestos.+157+63097.* /mnt
用scp复制密钥
nsupdate -k Kwestos.+157+63097.key
> server 172.25.62.252
> update add yangmi.westos.com 86400 A 192.1.1.16
> send
> quit
更新dns信息。
dig yangmi.westos.com
动态域名解析(dhcpd配置)
首先,做这个实验要有dhcp服务,所以要先搭建dhcp服务。详情请看dhcp服务的搭建
vim /etc/dhcp/dhcpd.conf
7 option domain-name "westos.com";
8 option domain-name-servers 172.25.62.252;
14 ddns-update-style interim;
35 key westos {
36 algorithm hmac-md5;
37 secret ytVljUpc7Jfu2W/HLjP/uw==;
38 }
39
40 zone westos.com. {
41 primary 127.0.0.1;
42 key westos;
43 }
修改dhcp的配置文件
之后把测试主机的网络工作方式改为dhcp,并且设置这台主机的主机名为####.westos.com,只要在westos.com域内的主机都可以解析。