Linux:企业级域名解析服务(高速缓存DNS)

高速缓存DNS

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。
DNS协议运行在UDP协议之上,使用端口为53端口

DNS 总揽

1、权威名称服务器
存储并提供某区域 ( 整个 DNS 域或 DNS 域的一部分 ) 的实际数据。
权威名称服务器的类型包括:
Master : 包含原始区域数据。有时称作 “主要 ”名称服务器
Slave : 备份服务器 , 通过区域传送从 Master 服务器获得的区域数据
的副本。有时称作 “次要 ”名称服务器
2、非权威 / 递归名称服务器
客户端通过其查找来自权威名称服务器的数据。递归名称服务器的类型包括
仅缓存名称服务器 : 仅用于查找 , 对于非重要数据之外的任何内容都不具
有权威性

安装部署DNS

服务端desktop中:
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0    ##设置ip
BOOTPROTO=none
IPADDR0=172.25.254.119   
PREFIX0=24
[root@localhost ~]# systemctl restart network     ##重启网络
[root@localhost ~]# vim /etc/yum.repos.d/rhel_dvd.repo     ##配置yum源
baseurl = http://172.25.254.71/source7.0
[root@localhost ~]# yum clean all
[root@localhost ~]# yum install bind -y    ##安装DNS

这里写图片描述这里写图片描述
设置ip:
这里写图片描述
配置yum源:
这里写图片描述

DNS排错

它显示来自 DNS 查找的详细信息 , 其中包括为什么查询失败 :
– NOERROR : 查询成功
– NXDOMAIN : DNS 服务器提示不存在这样的名称
– SERVFAIL : DNS 服务器停机或 DNSSEC 响应验证失败
– REFUSED : DNS 服务器拒绝回答 ( 也许是出于访问控制原因 )

一·高速缓存DNS非权威:

[root@localhost ~]# systemctl stop firewalld    ##关闭火墙
[root@localhost ~]# rpm -qc bind     ##查找dns配置文件
/etc/named.conf
[root@localhost ~]# vim /etc/named.conf    
11         listen-on port 53 { any; };      ##控制 named 侦听的 IPv4 地址
17         allow-query     { any; };        ##控制哪些客户端可以向 DNS 服务器询问信息
18         forwarders      { 114.114.114.114; };    ##包含 DNS 查询将转发至的名称服务器的列表
***注:未添加此项目时,对于高速缓存dns没访问过的域名,将不会有解析***
33         dnssec-validation no;       ##互联网认证
[root@localhost ~]# systemctl restart named     ##重启服务
[root@localhost ~]# vim /etc/resolv.conf    
nameserver 172.25.254.119     ##高速缓存dns地址
在测试主机:
[root@localhost ~]# vim /etc/resolv.conf    
nameserver 172.25.254.119    ##
[root@foundation71 ~]# dig www.baidu.com    ##解析

测试端:
这里写图片描述
添加高速缓存dns地址:
这里写图片描述
在测试主机:
添加高速缓存dns地址:
这里写图片描述
这里写图片描述
这里写图片描述

测试由此可见,第一次测试比第二次测试时间长

注意:在连接其他测试主机时,需要将在配置文件中写入高速缓存dns地址,否则测试不成功

二·高速缓存DNS权威

1、正向解析:把域名变成ip

[root@dns-server ~]# vim /etc/named.conf     
18         forwarders      { 114.114.114.114; };   ##注释
[root@dns-server ~]# systemctl restart named
[root@dns-server ~]# vim /etc/named.rfc1912.zones    ##编辑域名文件
在dns的子配置文件中添加需要解析的域名,如果在主配置文件中添加会过于繁琐,不利于主配置文件的阅读和查看 
 25 zone "westos.com" IN {      ##需要解析的域名
 26         type master;
 27         file "westos.com.zone";    ## 记录域名解析的文件
 28         allow-update { none; };
 29 };
 ##在本文件上面编辑以上内容
[root@dns-server ~]# cd /var/named/
[root@dns-server named]# ls
[root@dns-server named]# cp -p named.localhost westos.com.zone     ##复制name.localhost解析模版到westos.com.zone,注意加上-p,保留权限
[root@dns-server named]# ls
[root@dns-server named]# vim westos.come.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.119
hello   A       172.25.254.219
[root@dns-server named]# systemctl restart named

此文件中参数解析:

$TTL 1D ##解析缓存文一天
@ (紫色) ##代表‘westos.com‘(即就是所要解析的域名)
dns.westos.com ##dns服务器的名称
root.westos.com. ##管理dns服务器的用户
0 ; serial ##一致性标记,在做dns集群的时候会用到
1D ; refresh ##dns缓存刷新的时间
1H ; retry ##如果出现解析错误后,重新尝试的时间
1W ; expire ##过期时间,此处为1周
3 H ) ; minimum ##主服务器挂后,从服务器至多工作的时间,可以保护dns防止ddos攻击
A ##名称至 IPv4 地址

这里写图片描述
域名文件编辑内容:
这里写图片描述
域名解析文件:
这里写图片描述
dig解析结果:
这里写图片描述
这里写图片描述
解析结果要和在解析文件中编辑ip要统一
注:在编辑解析文件时,必须要在解析域名、dns服务器名称以及地址都需要加”.”

2、轮叫机制
CNAME:不规范名称

[root@dns-server named]# systemctl stop firewalld    ##关闭火墙
[root@dns-server named]# systemctl start named   ##打开dns服务器
[root@dns-server named]# systemctl enable named
ln -s '/usr/lib/systemd/system/named.service' '/etc/systemd/system/multi-user.target.wants/named.service'
[root@dns-server named]# systemctl disable firewalld
rm '/etc/systemd/system/basic.target.wants/firewalld.service'
rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service'
[root@dns-server named]# 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.119
hello   A       172.25.254.119
www     CNAME   node1.westos.com.
node1   A       172.25.254.111
node1   A       172.25.254.222
[root@dns-server named]# systemctl restart named
[root@dns-server named]# dig www.westos.com     
www.westos.com.     86400   IN  CNAME   node1.westos.com.
node1.westos.com.   86400   IN  A   172.25.254.222
node1.westos.com.   86400   IN  A   172.25.254.111
[root@dns-server named]# dig www.westos.com
www.westos.com.     86400   IN  CNAME   node1.westos.com.
node1.westos.com.   86400   IN  A   172.25.254.111
node1.westos.com.   86400   IN  A   172.25.254.222

这里写图片描述
解析文件编辑内容:
这里写图片描述
dig解析结果:产生了一种轮询式
这里写图片描述
这里写图片描述
注:在测试时,不能太快,需要一个缓冲时间,否则看不到轮询式效果

3、反向解析:将ip变成域名

[root@dns-server ~]# vim /etc/named.rfc1912.zones    ##编辑域名文件
zone "254.25.172.in-addr.arpa" IN {    
        type master;
        file "westos.com.ptr";    ##ptr:反向
        allow-update { none; };
};
##在本文件最后编辑以上内容
[root@dns-server ~]# cd  /var/named
[root@dns-server named]# ls
data     named.ca     named.localhost  slaves          westos.com.zone
dynamic  named.empty  named.loopback   
[root@dns-server named]# cp -p named.localhost westos.com.ptr    ##复制
[root@dns-server named]# ls
data     named.ca     named.localhost  slaves          westos.com.zone
dynamic  named.empty  named.loopback   westos.com.ptr
[root@dns-server named]# vim westos.com.ptr
$TTL 1D
@       IN SOA  dns.westos.com. root.westos.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns.westos.com.
        A       172.25.254.119
119     PTR     www.westos.com
71      PTR     www.hello.com
[root@dns-server named]# systemctl restart named
[root@dns-server named]# dig -x 172.25.254.119
119.254.25.172.in-addr.arpa. 86400 IN   PTR www.westos.com.254.25.172.in-addr.arpa.
[root@dns-server named]# dig -x 172.25.254.71
71.254.25.172.in-addr.arpa. 86400 IN    PTR www.hello.com.254.25.172.in-addr.arpa.

这里写图片描述
域名解析文件:网段必须要反着写
这里写图片描述
反向解析文件:
这里写图片描述
这里写图片描述
这里写图片描述

4、双向解析:实现内网主机和外网主机访问同一网站域名,定义到不同服务器

[root@dns-server named]# cp -p westos.com.zone westos.com.inter
[root@dns-server named]# vim westos.com.inter
25 zone "westos.com" IN {
 26         type master;
 27         file "westos.com.inter";    ##改为inter
 28         allow-update { none; };
 29 };
 [root@dns-server named]# vim /etc/named.conf      
注释50~5860 view    localnet {
 61          match-clients { 172.25.254.119; };
 62          zone "." IN{
 63                 type hint;
 64                 file "named.ca";
 65         };
 66 include "/etc/named.rfc1912.zones";        ##编写内容
 67 };
 69 view    inter {
 70          match-clients { any; };
 71          zone "." IN{
 72                 type hint;
 73                 file "named.ca";
 74         };
 75 include "/etc/named.rfc1912.inter";
 76 };
[root@dns-server named]# systemctl restart named
[root@dns-server named]# dig www.westos.com
dns.westos.com.     86400   IN  A   172.25.254.119

在客户端测试:
[root@foundation71 ~]# vim /etc/resolv.conf 
namerserver 172.25.254.119
[root@foundation71 ~]# dig www.westos.com
dns.westos.com.     86400   IN  A   192.168.0.119

这里写图片描述
在双向解析文件中,将zone改为inter:
这里写图片描述
在主配置文件中先注释,后编辑以下内容:
这里写图片描述
访问内主机时的ip:
这里写图片描述
访问外主机时的ip:
这里写图片描述

三·主从dns的配置(dns集群)

在服务端desktop中:
[root@dns-server named]# vim /etc/named.conf     ##打开51~58行,注释60~76行
[root@dns-server named]# vim /etc/named.rfc1912.zones    ##编辑域名文件
25 zone "westos.com" IN {
26        type master;
27        file "westos.com.zone";
28        allow-update { none; };
29        also-notify{ 172.25.254.219; };    ##写入测试端ip,目的是同步到测试端server
30 };
[root@dns-server named]# vim /etc/resolv.conf 
nameserver 172.25.254.119      ##本机ip
[root@dns-server named]# vim westos.com.zone     ##编写解析文件
$TTL 1D
@       IN SOA  dns.westos.com. root.westos.com. (
                                        3       ; serial    ##更改次数(每一次更改ip,必须要更改次数)
        NS      dns.westos.com.
dns     A       172.25.254.119
hello   A       172.25.254.119
[root@dns-server named]# systemctl restart named
[root@dns-server named]# dig hello.westos.com
hello.westos.com.   86400   IN  A   172.25.254.119

这里写图片描述
在主配置文件中: /etc/named.conf 打开51~57,注释60~76
这里写图片描述
这里写图片描述
在域名文件中编辑内容:/etc/named.rfc1912.zones
这里写图片描述
在/etc/resolv.conf写入本机ip:
这里写图片描述
在解析文件中写入ip以及修改次数
这里写图片描述

注意注意:

如果主DNS服务器解析文件修改,但从服务器无法及时接受,这样会解析出2个地址,所以为了保持DNS服务器集群的准确性,需要将所有的服务器同步修改的信息

只要将两台服务器上的/var/named/westos.com.zone
里的第三行值改为不一样的即可,下图中将主服务器文件中的0改为1,重启服务器后两台服务器里的DNS同步更新

在测试端server中:
设置ip、hostname:dns-slave、配置yum源、安装dns服务器
[root@dns-salve ~]# vim /etc/named.conf     ##主配置文件中修改
 11         listen-on port 53 { any; };
 17         allow-query     { any; };
 32         dnssec-validation no;
[root@dns-salve ~]# vim /etc/named.rfc1912.zones 
 25 zone "westos.com" IN {
 26         type slave;
 27         masters { 172.25.254.119;  };    ##测试端ip
 28         file "slaves/westos.com.zone";    ##编辑内容
 29         allow-update { none; };
 30 };
[root@dns-salve ~]# vim /etc/resolv.conf 
search example.com
nameserver 172.25.254.219    ##本机ip
[root@dns-salve ~]# systemctl stop firewalld    ##关闭火墙
[root@dns-salve ~]# systemctl restart named   ##重启服务
[root@dns-salve ~]# dig hello.westos.com
hello.westos.com.   86400   IN  A   192.168.0.119

这里写图片描述
在主配置文件中修改内容:/etc/named.conf
这里写图片描述
这里写图片描述
在域名文件中编辑内容: /etc/named.rfc1912.zones
这里写图片描述
在/etc/resolv.conf 写入本机ip:
这里写图片描述
测试结果:
在服务端desktop中:
这里写图片描述
在测试端server中:
这里写图片描述
由测试结果可知,测试端和服务端的解析地址同步

四·DNS远程更新

在服务端desktop中:
[root@dns-server ~]# cd /var/named/
[root@dns-server named]# ls
data     named.ca     named.localhost  slaves            westos.com.ptr
dynamic  named.empty  named.loopback   westos.com.inter  westos.com.zone
[root@dns-server named]# cp -p westos.com.zone  /mnt/    ##复制是为了备用
[root@dns-server named]# cd
[root@dns-server ~]# vim /etc/named.rfc1912.zones
 28         allow-update { 172.25.254.71; };    ##远程更新ip
 29         also-notify{ 172.25.254.219; };
[root@dns-server ~]# systemctl restart named
[root@dns-server ~]# > /var/log/messages      ##清空日志
[root@dns-server ~]# cd /var/named
[root@dns-server named]# ls
data     named.ca     named.localhost  slaves            westos.com.ptr
dynamic  named.empty  named.loopback   westos.com.inter  westos.com.zone
[root@dns-server named]# chmod 770  /var/named/    ##赋予权限
打开真机,在真机中:
[kiosk@foundation71 Desktop]$ nsupdate
> server 172.25.254.119
> update add test.westos.com 86400 A 172.25.254.111    ##建立解析文件
> send
> 
在服务端desktop中:
[root@dns-server named]# systemctl restart named
[root@dns-server named]# vim westos.com.zone    ##运行这一步之后的结果(可以看出发生的变化)
$ORIGIN .
$TTL 86400      ; 1 day      ##发生的变化(86400是一天的时间:秒)
westos.com              IN SOA  dns.westos.com. root.westos.com. (
                                4          ; serial
                                86400      ; refresh (1 day)
                                3600       ; retry (1 hour)
                                604800     ; expire (1 week)
                                10800      ; minimum (3 hours)
                                )
                        NS      dns.westos.com.
$ORIGIN westos.com.
dns                     A       172.25.254.119
hello                   A       172.25.254.119
node1                   A       172.25.254.113
                        A       172.25.254.213
test                    A       172.25.254.111
www                     CNAME   node1

在服务端:
这里写图片描述
在域名文件中写入远程更新ip /etc/named.rfc1912.zones
这里写图片描述
在测试端真机:
这里写图片描述
测试结果:
这里写图片描述
这里写图片描述

删除解析文件:(真机)
> server 172.25.254.119
> update delete test.westos.com    ##删除解析文件
> send
在服务端desktop中:
[root@dns-server named]# ls
westos.com.zone.jnl        ##查看时多了一个文件
[root@dns-server named]# rm -fr westos.com.zone*   ##删除是为了还原
[root@dns-server named]# ls
[root@dns-server named]# cp -p /mnt/westos.com.zone .   ##复制到当前
[root@dns-server named]# ls

删除新建解析文件:
这里写图片描述
还原文件:
这里写图片描述
注:做完以上实验必须删除文件以及还原文件,否则会影响以下实验

五·DNS的密钥

[root@dns-server named]# cd /mnt/
[root@dns-server mnt]# dnssec-keygen -a HMAC-MD5 -b 125 -n HOST westos   ##加密
-a:类型
-b:大小
-n:名称
[root@dns-server mnt]# ls    ##加密成功
Kwestos.+157+23510.key  Kwestos.+157+23510.private  westos.com.zone
[root@dns-server mnt]# cat Kwestos.+157+23510.key    ##查看密钥
westos. IN KEY 512 3 157 +ugSypZwJaCt0Pv55LL99w==
westos:用户
+ugSypZwJaCt0Pv55LL99w==:密码
[root@dns-server mnt]# cp -p /etc/rndc.key  /etc/westos.key    ##复制 
[root@dns-server mnt]# vim /etc/westos.key 
key "westos" {       ##更改名称
        algorithm hmac-md5;
        secret "`+ugSypZwJaCt0Pv55LL99w==`";    ##更改密码
};
[root@dns-server mnt]# vim /etc/named.conf 
43 include "/etc/westos.key";      ##编写内容
[root@dns-server mnt]# vim /etc/named.rfc1912.zones 
28         allow-update { key westos; };      ##更改
[root@dns-server mnt]# scp Kwestos.+157+23510.*  root@172.25.254.219:/mnt/     ##传钥匙给客户端(ip为客户端ip)

这里写图片描述
在 /etc/westos.key 写入名称以及密码:
这里写图片描述
在 /etc/named.conf 在43行写入内容:
这里写图片描述
在 /etc/named.rfc1912.zones 更改:
这里写图片描述

在客户端server中:
[root@dns-salve ~]# cd /mnt/
[root@dns-salve mnt]# ls    ##传送成功
Kwestos.+157+23510.key  Kwestos.+157+23510.private
[root@dns-salve mnt]# nsupdate -k Kwestos.+157+23510.private 
> server 172.25.254.119
> update add hello.westos.com 86400 A 172.25.254.111
> send
> quit

这里写图片描述
测试结果:
这里写图片描述

六·DDNS动态域名解析(花生壳)

[root@dns-server named]# ls
westos.com.zone.jnl
[root@dns-server named]# rm -fr westos.com.zone*
[root@dns-server named]# cp -p /mnt/westos.com.zone .
[root@dns-server named]# systemctl restart named
[root@dns-server named]# yum install dhcp -y
[root@dns-server ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp: overwrite ‘/etc/dhcp/dhcpd.conf’? y
[root@dns-server ~]# vim /etc/dhcp/dhcpd.conf
7 option domain-name "westos.com";
8 option domain-name-servers 172.25.254.119;
14 ddns-update-style interim;      ##打开,最后并改为interim
删除2728行
subnet 172.25.254.0 netmask 255.255.255.0 {
  range 172.25.254.80 172.25.254.90;
  option routers 172.25.254.119;
}
[root@dns-server ~]# cd /mnt/
[root@dns-server mnt]# ls
Kwestos.+157+23510.key  Kwestos.+157+23510.private  westos.com.zone
[root@dns-server mnt]# cat Kwestos.+157+23510.key
westos. IN KEY 512 3 157 +ugSypZwJaCt0Pv55LL99w==
[root@dns-server mnt]# vim /etc/dhcp/dhcpd.conf 
key westos {
        alogrithm hamc-md5;
        secret +ugSypZwJaCt0Pv55LL99w==;
};
zone westos.com. {
        primary 127.0.0.1;
        key westos;
}
[root@dns-server mnt]# systemctl restart dhcpd

这里写图片描述
这里写图片描述
这里写图片描述
在/etc/dhcp/dhcpd.conf 编辑内容:
这里写图片描述

在客户端server中:
[root@dns-salve mnt]# hosetnamectl set-hostname linux.westos.com  ##更改名为linux.westos.com
[root@dns-salve mnt]# vim /etc/sysconfig/network-scripts/ifcfg-eth0    ##将静态ip为动态ip
[root@dns-salve mnt]# systemctl restart network
[root@linux ~]# ifconfig
inet 172.25.254.80
[root@linux ~]# dig linux.westos.com 

这里写图片描述
这里写图片描述
测试结果:
这里写图片描述
这里写图片描述
和测试端server中的ip一致即为测试成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值