从零构建DNS主从服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从零构建DNS主从服务器相关的知识,希望对你有一定的参考价值。

                                      从头构建主从dns

我们没有外网ip地址和域名。为了做实验,假设我们有一个网段地址192.168.0.0/24和一个域名:zhuxu.co
准备工作
物理机一台,ip :192.168.0.111/24 gw:192.168.0.1 dns:8.8.8.8
二台虚拟机,系统为redhat7,一台虚拟机(ns1.zhuxu.co)做成主dns服务器。网卡类型为自动桥接. ip:192.168.0.118/24 gw:192.168.0.1
另一台(ns2.zhuxu.co)做成从dns服务器,网络类型为自动桥接。ip:192.168.0.119/24 gw:192.168.0.1

1,配置主机名(把192.168.0.1主机名该成ns1.zhuxu.co)

[[email protected] ~]# hostnamectl set-hostname ns1.zhuxu.co
[[email protected] ~]# hostname ns1.zhuxu.co

2,配置yum源,(我选择挂载光盘的方式)

在touch /etc/yum.repos.d/server.repo 文件。添加一下内容

[base]
name=redhat7.repo
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0

挂载光盘(请确保光盘镜像是连接状态)

[[email protected] ~]# mount /dev/cdrom  /mnt/cdrom

3,安装bind(提供dns服务的软件包名为bind)

[[email protected] ~]# yum install -y bind
bind包安装后生成的文件。我简单的介绍一下(本文用到的文件和命令)

[[email protected] ~]# rpm -ql bind
/etc/named.conf    ---named服务主配置文件
/etc/sysconfig/named---named服务脚本配置文件
/usr/lib/systemd/system/named.service  ---named服务
/usr/sbin/rndc    ---远程域名控制器(命令)
/usr/sbin/named-checkconf  ---检查配置文件有没有语法错误的命令
/usr/sbin/named-checkzone  ---检查zone文件有没有语法错误的命令
/var/named                ---存放zone文件的目录
/var/named/named.ca       ---根zone 文件
/var/named/named.localhost ---本机zone 文件
/var/named/named.loopback  --本机的反向 zone 文件
/var/named/slaves   ---从服务器放区域文件的位置

4,配置dns服务

4.1修改配置文件(系统自带的配置文件,我们不用,完全自己编写)

4.1.1查看配置文件named.conf的属主,属组和权限

[[email protected] etc]# ll named.conf 
-rw-r-----. 1 root named 1705 Mar 22  2016 named.conf

4.1.2把named.conf 重命名named.bak

[[email protected] etc]# mv named.conf named.conf.bak ---备份配置文件是一种好习惯(职业病)

4.1.3创建一个named.conf 属主,属组和权限和原来一样的文件

[[email protected] etc]# touch named.conf
[[email protected] etc]# chmod 640 named.conf
[[email protected] etc]# chown root.named named.conf
[[email protected] etc]# ll named.conf
-rw-r-----. 1 root named 0 Jul 31 23:09 named.conf

4.1.4编写配置文件

[[email protected] etc]# vim named.conf

options {
       directory "/var/named";
};

zone "." IN {
      type hint;
      file "named.ca";
};

zone "localhost" IN {
       type master;
       file "named.localhost";
};      

zone "0.0.127.in-addr.arpa" IN {
         type master;
         file "named.loopback";
};

zone "zhuxu.co"  IN {
       type master;
       file "zhuxu.co.zone";
       allow-transfer { 192.168.0.119; };
};

zone "0.168.192.in-addr.arpa" IN {
       type master;
       file "192.168.0.zone";
       allow-transfer { 192.168.0.119; };
};

4.1.5添加两个zone

添加zhuxu.co.zone

vim /var/named/zhuxu.co.zone
~[[email protected] named]# vim zhuxu.co.zone

$TTL 600
@        IN             SOA   ns1.zhuxu.co     mail.zhuxu.co (
                              20180731
                              1H
                              15M
                              1D
                              6H )
         IN            NS      ns1
ns1      IN            A       192.168.0.118
         IN       MX   8       mail
mail     IN            A       192.168.0.114
www      IN            A       192.168.0.120

~ 添加192.168.0.zone

[[email protected] named]# vim 192.168.0.zone 

$TTL 600
@          IN     SOA   ns1.zhuxu.co.   mail.zhuxu.co. (
                                    20180731
                                    1H
                                    15M
                                    1D
                                    12H)
                   NS     ns1.zhuxu.co.
118                PTR    ns1.zhuxu.co.
120                PTR    www.zhuxu.co.

4.1.6检查配置文件。和zone的语法

检查配置文件语法:
[[email protected] named]# named-checkconf

检查zhuxu.co.zone

[[email protected] named]# named-checkzone zhuxu.co.zone  /var/named/zhuxu.co.zone 
zone zhuxu.co.zone/IN: loaded serial 20180731
OK

检查192.168.0.zone

[[email protected] named]# named-checkzone 192.168.0.zone  /var/named/192.168.0.zone 
zone 192.168.0.zone/IN: loaded serial 20180731
OK

4.1.7主服务配置完成。开放防火墙。启动named服务.

[[email protected] named]# firewall-cmd --permanent  --add-service=dns 
success
[[email protected] named]# firewall-cmd --reload 
success
[[email protected] named]# systemctl start named
[[email protected] named]# systemctl status named
● named.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2018-08-01 00:08:50 CST; 28s ago

主DNS服务器,就完全搭建好了。我们把物理主机的dns.换成192.168.0.118,经过检验完全可以上网。

搭建辅助DNS服务器

1,配置主机名(把192.168.0.119这台主机名改为ns1.zhuxu.co)

[[email protected] ~]# hostnamectl set-hostname ns2.zhuxu.co
[[email protected] ~]# hostname ns2.zhuxu.co

2,配置yum源,(我选择挂载光盘的方式)

在touch /etc/yum.repos.d/server.repo 文件。添加一下内容

[base]
name=redhat7.repo
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0

挂载光盘(请确保光盘镜像是连接状态)
[[email protected] ~]# mount /dev/cdrom /mnt/cdrom

3,安装bind(提供dns服务的软件包名为bind)

[[email protected] ~]# yum install -y bind

4,配置dns服务

4.1修改配置文件(系统自带的配置文件,我们不用,完全自己编写)

4.1.1查看配置文件named.conf的属主,属组和权限
[[email protected] etc]# ll named.conf 
-rw-r-----. 1 root named 1705 Mar 22  2016 named.conf
4.1.2把named.conf 重命名named.bak

[[email protected] etc]# mv named.conf named.conf.bak ---备份配置文件

4.1.3创建一个named.conf 属主,属组和权限和原来一样的文件
[[email protected] etc]# touch named.conf
[[email protected] etc]# chmod 640 named.conf
[[email protected] etc]# chown root.named named.conf
[[email protected] etc]# ll named.conf
-rw-r-----. 1 root named 0 Jul 31 23:09 named.conf

4.1.4编写配置文件

[[email protected] etc]# vim named.conf

options {

       directory "/var/named";
};

zone "." IN {
      type hint;
      file "named.ca";
};

zone "localhost" IN {
       type master;
       file "named.localhost";
};      

zone "0.0.127.in-addr.arpa" IN {
         type master;
         file "named.loopback";
};

zone "zhuxu.co"  IN {
       type slave;
       masters { 192.168.0.118; };
       file "slaves/zhuxu.co.zone";
       allow-transfer { none; };
};

zone "0.168.192.in-addr.arpa" IN {
       type slave;
       masters { 192.168.0.118; };
       file "slaves/192.168.0.zone";
       allow-transfer { none; };
};
~                                          

## 5,修改主NDS zone的配置文件
### 5.1修改zhuxu.co zone 文件

[[email protected] named]# vim zhuxu.co.zone

$TTL 600
@ IN SOA ns1.zhuxu.co. mail.zhuxu.co. (
20180731
1H
15M
1D
6H )
IN NS ns1
IN NS ns2 ;新增加的NS 记录
ns1 IN A 192.168.0.118
ns2 IN A 192.168.0.119 ;新增加的A 记录
IN MX 8 mail
mail IN A 192.168.0.114
www IN A 192.168.0.120

5.2 修改 192.168.0 zone 文件
[[email protected] named]# vim 192.168.0.zone

$TTL 600
@ IN SOA ns1.zhuxu.co. mail.zhuxu.co. (
20180731
1H
15M
1D
12H)
IN NS ns1.zhuxu.co.
IN NS ns2.zhuxu.co. ;新增加的NS 记录
118 IN PTR ns1.zhuxu.co.
120 IN PTR www.zhuxu.co.


## 6,辅助DNS服务器配置完成。防火墙放行DNS服务。重启主DNS服务,启动辅助dns服务器。

[[email protected] etc]# firewall-cmd --permanent --add-service=dns
success
[[email protected] etc]# firewall-cmd --reload
success
[[email protected] named]# systemctl restart named
[[email protected] etc]# systemctl start named


## 7,检验辅助DNS是否能工作。
方法很多种,随便介绍两种
### 简单直接修改物理机的dns为192.168.119,看能否正常打开网页
### 用命令验证:

dig -t A www.baidu.com @192.168.0.119
[[email protected] ~]# dig -t A www.baidu.com @192.168.0.119

; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> -t A www.baidu.com @192.168.0.119
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41911
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 13, ADDITIONAL: 27

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

;; ANSWER SECTION:
www.baidu.com. 1110 IN CNAME www.a.shifen.com.
www.a.shifen.com. 600 IN A 183.232.231.172
www.a.shifen.com. 600 IN A 183.232.231.173


......看到这些内容说明辅助dns服务器工作正常
dig 命令很强大,具体用法请自行查找。
如果我们现在配置一台主机名为www.zhuxu.co 安装httpd服务,可以使用基于主机名的虚拟主机(我会做一件关于httpd的实验)
本文里面配置没有太多注解。请见谅。最近时间太少,等空下来。我会写一个基础篇。

以上是关于从零构建DNS主从服务器的主要内容,如果未能解决你的问题,请参考以下文章

构建DNS主从域名服务器

构建主从DNS域名服务器

DNS域名解析服务(DNS正反向解析;构建主从域名服务器)

Linux----DNS服务器构建(反向解析,缓存服务器,主从服务器)!

构建DNS缓存主从域名服务器

搭建DNS服务,构建主从域名服务器