admin管理员组

文章数量:1546542

DNS和DDNS的安装和配置

一、DNS简介

1、DNS服务器的工作原理

域名服务(DNS)是一种分布式数据库,它提供从机器名到数字IP地址的映射。
DNS服务最常用的软件是BIND(Berkeley Internet Name Domain),BIND提供了解析器和名字服务器软件,解析器作实际的查询工作,名字服务器负责响应。BIND将名字服务器分成三个部分:
1. 主服务器包含了一个域的全部数据
2. 次服务器则有效地从主服务器复制DNS数据库
3. 缓冲服务器通过缓冲查询来建立例外的DNS数据库

域名体系层次结构图如下

2、DNS的分类

1)唯高速缓存域名服务器(Cache-only Server)

不包含域名数据库,它每次从某台远程服务器取得域名服务器查询的信息。一旦取得一个回答,就将它放入高速缓存中,下次查询相同的信息就用此回答。

2)主域名服务器(primary Name Server)

主域名服务器是特定域所有信息的权威来源,从域管理员构造的本地文件中加载域信息,该文件包含服务器具有的部分域结构的最精确信息。主域名服务器需要配置一组完整的文件。

3)辅助域名服务器(Second Name Server)

辅助域名服务器用来从主域名服务器中转移一整套域信息,它是可选的配置选项。区文件从主域名服务器转移出来,作为磁盘文件保存在辅助域名服务器中。辅助域名服务器不需要配置本地区文件,只需要配置主配置文件(named.conf),高速缓存初始化文件(named.ca)和回送文件(named.local)。

3、本次实验各文件之间的关系示意图

二、安装DNS(Domain Name System)

yum install bind -y
systemctl start named #此时打开需要读取一个文件/etc/rndc.key文件,但这个文件默认不存在,所以需要在主机上敲键盘生成该文件,然后就可以打开服务
若是想查看某一个服务的端口,可以查看文件cat /etc/services | grep domain,以domain服务为例

主配置文件: /etc/name.conf
子配置文件: /etc/named.rfc1912.zones
数据目录: /var/named

三、配置

1、简单配置,非权威DNS

这里进行测试必须了解dig命令,dig命令是常用的域名查询工具,可以用来测试域名系统是否正常

当使用客户端dig www.baidu命令时,出现报错说连接超时,则需要查看服务端的端口,是否是回环端口,若是,则需要改变。  
当出现dig状态是status: SERVFAIL,则表示地址解析的dns服务器也不知道该如何访问,则可添加下面配置的18行来进行修改,写入一个知道的ip地址
[root@server ~]# vim /etc/named.conf
  -->  11         listen-on port 53 { any; }; #表示向所有客户主机打开这个53端口
       17         allow-query     { any; };   #表示允许所有主机连接该dns服务器
       18         forwarders { 172.25.254.250; }; #表示当客户端主机没有服务端dig访问的内容时,则访问这个主机来进行访问
[root@server ~]# systemctl restart named  #重启服务

客户端,进行地址解析
[root@localhost ~]# vim /etc/resolv.conf
  --> nameserver 172.25.254.170   #dns服务端主机ip

测试

[root@localhost images]# dig www.qq

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> www.qq
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13418
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 11

...

;; Query time: 0 msec   #第一次时间会较长,后面时间较短
;; SERVER: 172.25.254.250#53(172.25.254.250)
;; WHEN: Sat Nov 25 09:53:52 EST 2017
;; MSG SIZE  rcvd: 302

2、权威DNS的正向解析

通过域名得到相对应的ip地址

在一个没有连接外网的主机上进行dns服务器配置如下:
[root@server ~]# vim /etc/named.conf
  -->  11         listen-on port 53 { any; }; #表示向所有客户主机打开这个53端口
       17         allow-query     { any; };   #表示允许所有主机连接该dns服务器
[root@server ~]# systemctl restart named

此时,用客户端进行测试:
[root@localhost ~]# dig www.westos
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 53264

修改服务端
可以直接在/etc/named.conf主配置文件里面修改,但会造成排错不好找,而且如果添加的很多之后,会使得文件太长。所以可以在该文件包含的文件/etc/named.rfc1912.zones文件中修改。
[root@server ~]# vim /etc/named.rfc1912.zones
  -->  25 zone "westos" IN {  #""中的内容表示客户端请求的域名地址
       26         type master;  #配置为主DNS服务器
       27         file "named.westos.zone"; #去访问这个文件,这个文件本身并没有,需要自己建立
       28         allow-update { none; };
       29 };
[root@server ~]# cd /var/named/
[root@server named]# cp -p named.localhost named.westos.zone
[root@server named]# vim named.westos.zone
  --> $TTL 1D
      ##表示缓存可以保存一天
      @       IN SOA  dns.westos. root.westos. (
      ##@表示/etc/named.rfc1912.zones/文件里面zone "westos" IN引号里面的内容,没有以'.'结尾的会默认添加@所表示的信息
      ##dns.westos. 默认复制过来的文件是一个@符
      ##root.westos. 管理员
                                        0       ; serial
                                        1D      ; refresh
                                        ##表示一天后重新刷新
                                        1H      ; retry
                                        ##若没有得到答案,1小时后再次询问
                                        1W      ; expire
                                        3H )    ; minimum
                                        ##3小时内若答案没有修改,则回答原来的答案,可以防止DOS攻击
               NS      dns.westos.  ##nameserver
       dns     A       172.25.254.170
       www     A       172.25.254.50  ##所提供该域名服务的ip地址
[root@server named]# systemctl restart named

客户端重新进行测试:

[root@localhost ~]# dig www.westos
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> www.westos
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9458
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
...

;; QUESTION SECTION:
;www.westos.            IN  A

;; ANSWER SECTION:
www.westos.     86400   IN  A   172.25.254.50

;; AUTHORITY SECTION:
westos.     86400   IN  NS  dns.westos.

;; ADDITIONAL SECTION:
dns.westos.     86400   IN  A   172.25.254.170

;; Query time: 0 msec
;; SERVER: 172.25.254.170#53(172.25.254.170)
;; WHEN: Sat Nov 25 10:39:08 EST 2017
;; MSG SIZE  rcvd: 93

3、权威DNS的反向解析

客户端输入dig -x ip,显示出想要的域名

[root@localhost ~]# dig -x 172.25.254.55
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 48122

[root@server named]# vim /etc/named.rfc1912.zones
zone "254.25.172.in-addr.arpa" IN {     ##反响解析应该注意地址应该反方向写
        type master;
        file "westos.loopback";
        allow-update { none; };
};
[root@server named]# cp -p named.loopback westos.loopback
[root@server named]# vim westos.loopback  ##内容解释和2中一样
$TTL 1D
@       IN SOA  dns.westos. root.westos. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns.westos.
dns     A       172.25.254.55
55      PTR     www.westos. ##测试输入的需要反响解析的ip所对应的域名内容
[root@server named]# systemctl restart named

此时再次进行测试:

[root@localhost ~]# dig -x 172.25.254.55
...
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25237
;; QUESTION SECTION:
;55.254.25.172.in-addr.arpa.    IN  PTR

;; ANSWER SECTION:
55.254.25.172.in-addr.arpa. 86400 IN    PTR www.westos.

;; AUTHORITY SECTION:
254.25.172.in-addr.arpa. 86400  IN  NS  dns.westos.

;; ADDITIONAL SECTION:
dns.westos.     86400   IN  A   172.25.254.170
...

4、dns的双向解析

使内网和外网不同的人解析到不同的ip地址

[root@server named]# vim /etc/named.conf
view localnet  {
        match-clients { 172.25.254.70; };   ##表示内网解析到的
        zone "." IN {
                type hint;
                file "named.ca";
};
include "/etc/named.rfc1912.zones";   ##内王访问的文件
include "/etc/named.root.key";
};

view othernet  {    ##外网
        match-clients { any; }; ##除了172.25.254.70这个ip地址之外的ip
        zone "." IN {
                type hint;
                file "named.ca";
};
include "/etc/named.rfc1912.inter";   ##外网要访问这个文件,该文件需要自己创建
include "/etc/named.root.key";
};
[root@server named]# cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.inter
[root@server named]# vim /etc/named.rfc1912.inter
zone "westos" IN {
        type master;
        file "named.westos.inter";    ##把需要区分内外网的域名外网访问文件重新建立修改
        allow-update { none; };
};
[root@server named]# cp -p named.westos.zone named.westos.inter
[root@server named]# vim named.westos.inter
$TTL 1D
@       IN SOA  dns.westos. root.westos. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns.westos.
dns     A       1.1.1.170   
www     A       1.1.1.50    ##改为想要显示的外网的地址

不同客户端进行测试

内网ip测试172.25.254.70[root@localhost ~]# dig www.westos
...
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58908
;; QUESTION SECTION:
;www.westos.            IN  A

;; ANSWER SECTION:
www.westos.     86400   IN  A   172.25.254.50

;; AUTHORITY SECTION:
westos.     86400   IN  NS  dns.westos.

;; ADDITIONAL SECTION:
dns.westos.     86400   IN  A   172.25.254.170

;; Query time: 0 msec
;; SERVER: 172.25.254.170#53(172.25.254.170)
;; WHEN: Sat Nov 25 11:48:40 EST 2017
;; MSG SIZE  rcvd: 93


外网ip测试:
[root@server named]# dig www.westos
...
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50415
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.westos.            IN  A

;; ANSWER SECTION:
www.westos.     86400   IN  A   1.1.1.50

;; AUTHORITY SECTION:
westos.     86400   IN  NS  dns.westos.

;; ADDITIONAL SECTION:
dns.westos.     86400   IN  A   1.1.1.170

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Nov 25 11:48:03 EST 2017
;; MSG SIZE  rcvd: 93

可以看出不同ip所得到的ip地址是不同的

5、主从DNS服务器的同步

为了缓解主机的压力,可以创建一个辅助DNS的服务器,和主的DNS进行同步,使有的客户端可以通过辅助DNS得到结果

主DNS配置:
vim /etc/named.rfc1912.inter
  also-notify { 172.25.254.175; };
systemctl restart named

辅助DNS配置:
vim /etc/named.conf     any any
[root@dns-slave named]# vim /etc/named.rfc1912.zones
zone "westos" IN {
        type slave;
        masters { 172.25.254.170; };
        file "slaves/westos.inter";
        allow-update { none; };
};
[root@dns-slave named]# systemctl restart named

测试:用两个外网主机,resolv.conf分别写为主和辅助的DNS,进行dig测试

6、DNS的远程更新

1)基于ip的更新
在主DNS上面更改
vim /etc/named.rfc1912.inter
allow-update { 172.25.254.175; };
systemctl restart named

测试:
在175主机上
输入nsupdate命令,进行同步
server 172.25.254.170   ##主DNS
update add bbs.westos 86400 A 1.1.1.3   ##添加
send
server 172.25.254.170
update delete www.westos    ##删除
send
2)基于密钥的更新
cp -p /etc/rndc.key /etc/westos.key
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST westos

vim /etc/westos.key
将里面的名称改为westos,并将secret后面引号里面的具体数值改为生成的密钥
vim /etc/named.conf
添加
include "/etc/westos.key";
vim /etc/namde.rfc1912.inter
allow-update { key wesots; };

测试:
scp Kwestos.+157+07295.* root@172.25.254.175:/mnt
在175主机上运行命令
nsupdate -k Kwestos.+157+07295.key
进行和基于ip的一样的测试

四、DDNS

修改dns

 vim /etc/named.conf
include "/etc/westos.key";
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
view localnet  {      #内网
        match-clients { any; };
        zone "." IN {
                type hint;
                file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
};

vim /etc/named.rfc1912.zones
zone "westos" IN {
        type master;
        file "named.westos.zone";
        allow-update { key westos; };     ##有westos key的客户端主机可以访问
};

vim named.westos.zone
$TTL 1D
@   IN SOA  dns.westos. root.westos. (
                    1   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
    NS  dns.westos.
dns A   172.25.254.170

修改dhcp

安装dhcp,修改配置文件
vim /etc/dhcp/dhcpd.conf
option domain-name "westos";
option domain-name-servers 172.25.254.170;

ddns-update-style interim;

subnet 172.25.254.0 netmask 255.255.255.0 {
  range 172.25.254.197 172.25.254.210;
  option routers 172.25.254.170;
}
key westos {
         algorithm hmac-md5;
         secret "GgUPXCeBC7rQOk2pw8XYmw==";
};
zone westos.com. {
         primary 127.0.0.1;
         key westos;
}

重启两项服务,然后配置客户端
客户端的ip设为dhcp模式,并且配置主机名为www.westos,在进行dig www.westos会显示的是得到dhcp的ip的ip地址

本文标签: 服务器dnsDDNS