Linux之高级缓存DNS

DNS是Domain Name System的英文缩写,被翻译为域名系统,是英特网的一项核心服务,它作为可以将域名和IP相互映射的一个数据库,使用户在访问互联网时只需要记住简单的域名(如www.baidu.com),而不需要记住复杂的被机器直接读取的IP数字串,即DNS的工作就是当用户在输入域名时,帮助用户自动找到该域名对应的IP从而使用户在使用互联网时更加方便。


一、DNS的高速缓存

1、安装DNS 命令 yum install bind(bind是最广泛使用的开源缓存dns服务器)

2、启动DNS服务

3、将DNS加入火墙允许列表

Linux之高级缓存DNS

4、更改dns主配置文件/etc/named.conf令其可以为所有的主机进行网络解析服务,完成后重启服务

listen-on port 53 { any; };

allow-query { any; };

forwarders { 172.25.254.250; };

Linux之高级缓存DNS

5、客户端加入DNS解析,nameserver=配置好dns的主机

Linux之高级缓存DNS

6、在客户端解析域名,我这里dig www.163.com,可以看到其反馈出其ip地址为1113.142.80.177,实现了域名的解析Linux之高级缓存DNS

并且可以看到访问时延为1245msLinux之高级缓存DNS

但我们再一次dig www.163.com时,会发现其时延变为0ms,这便是dns的高速缓存。即再次访问同一个网址,已经缓存过的会高速的显示出来。

Linux之高级缓存DNS


二、DNS的正向解析

1、删除主配置文件/etc/named.conf里的forwarders { 172.25.254.250; };那一行

2、vim  /etc/named.rfc1912.zones 编辑子配置文件复制模板,改为要维护的域(我这里是westos.com)并命名维护的域的主机的配置文件(westos.com.zone),如下图

Linux之高级缓存DNS

3、切换到 /var/named目录下 

cp -p named.localhost  westos.com.zone复制模板为刚才命名的文件

编辑westos.com.zone,改成如下图

Linux之高级缓存DNS

@符表示在子配置文件中所设定的那个域名(westos.com),该文件中所有的域名如dns.westos.com的结尾都需要添加一个“.”,否则会被该@符读取

第一行的TTL是一种设定,后面的1D表示该记录文件里面的各项记录的预设TTL值为86400秒,即刚好一天

IN定义出目前的记录类型是属于internet class的

SOA表示目前区域的授权记录开始,其后面的值为区域授权主机和管理信箱

serial表示修改的时间及次数,当自己在修改记录文件时需要更改serial的值,否则修改无法被slave识别;

refresh表示数据多久进行一次更新

retry表示如果slave的对数据更新失败后,多久后进行重试

expire记录逾期时间,即超过该时间slave未与master进行联系,系统会放弃retry并标记该数据标识为过期

minimum最小预设TTL的值,如果在文件开头没有设置TTL的值,将以该处的值为准

这里172.25.254.105表示从105获得解析;172.25.254.111表示把要维护的域www,westos.com解析为172.25.254.111;NS表示域名的名称服务器;A表示名称至ipv4地址。

4、客户端dig www.westos.com查看,可以看到将www.westos.com解析为172.25.254.111

Linux之高级缓存DNS 


CNAME解析轮询

我们刚刚dig www.163.com可以看到查询结果是先将其CNAME两次再看到其真实ip,怎么做到,如下

1、还是编辑westos.com.zone,这次我们加入CNAME bbs.westos.com.(注意要加. 否则将表示bbs.westos.com.westos.com)

并且dns自带轮询,我们可以加入两个ip地址一会去查看

Linux之高级缓存DNS

2、客户端dig www.westos.com 多次观察,速度要慢一点 ,可以看到实现解析轮询

Linux之高级缓存DNS

Linux之高级缓存DNS


三、反向解析

1、编辑/etc/named.rfc1912.zones 载文件里最后几行,还是复制模版并改成网段和配置文件

Linux之高级缓存DNS

2、编辑westos.com.ptr文件,PTR表示ipv4/ipv6地址至名称,为了查看结果时明显,将111 222表示两个不同域名

Linux之高级缓存DNS

3、客户端dig -x +地址查看

Linux之高级缓存DNS


Linux之高级缓存DNS


四、双向解析

1、cd /etc cp

cd /var/named/ cp -p westos.com.zone westos.com.inter
编辑westos.com.inter将里面的172改为192

-p named.rfc1912.zones  name .rfc1912.zones.inter

编辑name .rfc1912.zones.inter 复制上面的模版将里面改为westos.com且指定的file 改为“westos.com.inter”

Linux之高级缓存DNS

2、cd /var/named/ cp -p westos.com.zone   westos.com.inter
编辑westos.com.inter将里面的172改为192配置好内网和外网

Linux之高级缓存DNS

Linux之高级缓存DNS

3、编辑主配置文件 /etc/named.conf,将系统自带的注释掉,编写如下图所示模式:

Linux之高级缓存DNS

Linux之高级缓存DNS

localnet表示本地,我这里匹配用户只有自己(用ip表示172.25.254.105),指定文件include是上面创建好的内网文件
internet
表示外网  匹配用户其他所有(用ip表示一会用客户端测试),指定文件include是上面创建好的外网文件

4、分别在105本身和客户端测试

1)105解析出来是172表示内网

Linux之高级缓存DNS

2)除105外所有都是外网解析,用客户端解析查看为外网192

Linux之高级缓存DNS



五、解析辅助

这里需要再打开一台虚拟机,重置网络(ip配置为172.25.254.205) ,dns解析(nameserver=172.25.254.205),完成后重启网络;配置好yum源;将其shell名字改为dns-slave,下面再205这台主机上

1、安装bind

2、vim /etc/named.conf //注释掉三行(//表示与其相反),如下图所示

Linux之高级缓存DNS


3、vim /etc/namedrfc1912.zones编辑设置与105同步

Linux之高级缓存DNS

4、105主机也编辑vim /etc/named.rfc1912.zones加一行并把法file“westos.com.inter”设置同步,/etc/named.conf里的本地解析用户ip随便改成一个155,因为要实现一个外网同步,所以改变内网解析ip也可以将其注释掉

Linux之高级缓存DNS

Linux之高级缓存DNS

5、现在修改105真实主机westos.com.inter里的内容随便更改一个ip记得修改serial那一行,完成后重其服务named,并进行查看;

辅助端也重启服务dig查看可以实现同步

Linux之高级缓存DNSLinux之高级缓存DNS


六、DNS远程更新

复制一份inter到/mnt/下一会会用

1、105中编辑主配置文件/etc/named.conf将自己写的/*  */注释并将系统自带的解开注释

Linux之高级缓存DNS

2、加权限 chmod g+w /var/named

并打开其他用户可以读写的权限 setsebool -P named_write_master_zones on

3、vim /etc/named.rfc1912.zones将allow-update一行none改为172.25.254.205

Linux之高级缓存DNS

4、在205直接测试nsupdate添加hello.westos.com完成后105重启服务并查看westos.com.inter查看hello.westos.com是否加入成功 ,如下图

Linux之高级缓存DNS

Linux之高级缓存DNS

5、  载尝试删除update deletehellow.westos.com并查看

Linux之高级缓存DNS

Linux之高级缓存DNS


七、DNS远程更新加密

(因为用上面那种方法别人改成相同的ip就可以更改你,所以比较危险,所以需要加密)

删除inter和jnl文件,并将/mnt/下的inter用cp -p过来 重启服务named

1、cp -p /etc/rndc.key  /etc/westos.key生成westos.key文件

2、dnssec-ketgen -a HMAC-MD5 -b 128 -n HOST westos生成密码和钥匙

(执行后若是卡住,要在主机里打开一个shell随机输入字符即可, -a表示加密模式 -b 表示加密字节 -n Host 表示类型是HOST 名称是westos)

Linux之高级缓存DNS

3、编辑/etc/westos.key

Linux之高级缓存DNS

4、vim /etc/named.conf编辑主配置文件,加入include "/etc/westos.key";

Linux之高级缓存DNS


5、vim /etc/named.rfc1912.zone编辑子配置文件

Linux之高级缓存DNS

完成4、5步重启named服务

6、发送密码钥匙给允许远程更新的主机 scp Kwestos.+157+36700.* [email protected]:/mnt/

7、收到私钥后进行测试:

1)加入hello

Linux之高级缓存DNS

主机端查看

Linux之高级缓存DNS

2)删除hello

Linux之高级缓存DNS

主机端查看

Linux之高级缓存DNS



八、DHCP对DNS进行动态更新

删除westos.com.inter 和jnl 并把/mnt下的inter cp -p 回来不要重启named

1、主机端安装dhcp cp模版配置文件命令:cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example   /etc/dhcp/dhcpd.conf

2、编辑/etc/dhcp/dhcpd.confLinux之高级缓存DNS

Linux之高级缓存DNS
1)第7行修改为"westos.com";  第8行修改为主机ip:172.25.254.105  第14行打开注释并改为interim
2)删除27、28行
3)删除35行以后的
4)修改30行以后的并修改为上图内容
完成后重启dhcpd服务

3、在客户端205修改主机名字为hello.westos.com
将其网络模式设置为dhcp并重启网络服务

dig hello.westos.com观测

Linux之高级缓存DNS