1. 程式人生 > >從零構建DNS主從服務器

從零構建DNS主從服務器

auth main enable serve 啟動 -s 防火 習慣 rect

從頭構建主從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)

[root@server ~]# hostnamectl set-hostname ns1.zhuxu.co
[root@server ~]# 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

掛載光盤(請確保光盤鏡像是連接狀態)

[root@ns1 ~]# mount /dev/cdrom  /mnt/cdrom

3,安裝bind(提供dns服務的軟件包名為bind)

[root@ns1 ~]# yum install -y bind
bind包安裝後生成的文件。我簡單的介紹一下(本文用到的文件和命令)

[root@ns1 ~]# 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的屬主,屬組和權限

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

4.1.2把named.conf 重命名named.bak

[root@ns1 etc]# mv named.conf named.conf.bak ---備份配置文件是一種好習慣(職業病)

4.1.3創建一個named.conf 屬主,屬組和權限和原來一樣的文件

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

4.1.4編寫配置文件

[root@ns1 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
~[root@ns1 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

[root@ns1 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的語法

檢查配置文件語法:
[root@ns1 named]# named-checkconf

檢查zhuxu.co.zone

[root@ns1 named]# named-checkzone zhuxu.co.zone  /var/named/zhuxu.co.zone 
zone zhuxu.co.zone/IN: loaded serial 20180731
OK

檢查192.168.0.zone

[root@ns1 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服務.

[root@ns1 named]# firewall-cmd --permanent  --add-service=dns 
success
[root@ns1 named]# firewall-cmd --reload 
success
[root@ns1 named]# systemctl start named
[root@ns1 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)

[root@client ~]# hostnamectl set-hostname ns2.zhuxu.co
[root@client ~]# 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

掛載光盤(請確保光盤鏡像是連接狀態)
[root@ns1 ~]# mount /dev/cdrom /mnt/cdrom

3,安裝bind(提供dns服務的軟件包名為bind)

[root@ns2 ~]# yum install -y bind

4,配置dns服務

4.1修改配置文件(系統自帶的配置文件,我們不用,完全自己編寫)

4.1.1查看配置文件named.conf的屬主,屬組和權限
[root@ns2 etc]# ll named.conf 
-rw-r-----. 1 root named 1705 Mar 22  2016 named.conf
4.1.2把named.conf 重命名named.bak

[root@ns2 etc]# mv named.conf named.conf.bak ---備份配置文件

4.1.3創建一個named.conf 屬主,屬組和權限和原來一樣的文件
[root@ns2 etc]# touch named.conf
[root@ns2 etc]# chmod 640 named.conf
[root@ns2 etc]# chown root.named named.conf
[root@ns2 etc]# ll named.conf
-rw-r-----. 1 root named 0 Jul 31 23:09 named.conf

4.1.4編寫配置文件

[root@ns2 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 文件

[root@ns1 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 文件
[root@ns1 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服務器。

[root@ns2 etc]# firewall-cmd --permanent --add-service=dns
success
[root@ns2 etc]# firewall-cmd --reload
success
[root@ns1 named]# systemctl restart named
[root@ns2 etc]# systemctl start named


## 7,檢驗輔助DNS是否能工作。
方法很多種,隨便介紹兩種
### 簡單直接修改物理機的dns為192.168.119,看能否正常打開網頁
### 用命令驗證:

dig -t A www.baidu.com @192.168.0.119
[root@ns1 ~]# 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主從服務器