Linux下DNS服務(Bind9)之Web管理利器-NamedManager部署說明

 

NamedManager 是一個基於Web的DNS管理系統,可用來添加、調整和刪除DNS的zones/records數據。它使用Bind做爲底層DNS服務,提供一個現代Ajax的Web界面,支持 IPv4和IPv6。該應用程序很穩定,在生產環境中使用沒有任何問題。過多的介紹在此就不作說明了,下面說下NamedManager環境部署過程:php

1)下載NamedManager的rpm安裝包mysql

[root@dns ~]# hostname
dns.kevin.cn

[root@dns named]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.206 dns.kevin.cn

[root@dns ~]# ifconfig |grep 192.168
          inet addr:192.168.10.206  Bcast:192.168.10.255  Mask:255.255.255.0

[root@dns named]# ping dns.kevin.cn
PING dns.kevin.cn (192.168.10.206) 56(84) bytes of data.
64 bytes from dns.kevin.cn (192.168.10.206): icmp_seq=1 ttl=64 time=0.027 ms
64 bytes from dns.kevin.cn (192.168.10.206): icmp_seq=2 ttl=64 time=0.043 ms
......
 
[root@dns ~]# cd /usr/local/src/
[root@dns src]# wget http://repos.jethrocarr.com/pub/amberdms/linux/centos/6/amberdms-custom/i386/namedmanager-bind-1.8.0-1.el6.noarch.rpm
[root@dns src]# wget http://repos.jethrocarr.com/pub/amberdms/linux/centos/6/amberdms-custom/i386/namedmanager-www-1.8.0-1.el6.noarch.rpm
 
[root@dns src]# ll
total 1352
-rw-r--r--. 1 root root  109584 Dec 22  2013 namedmanager-bind-1.8.0-1.el6.noarch.rpm
-rw-r--r--. 1 root root 1270108 Dec 22  2013 namedmanager-www-1.8.0-1.el6.noarch.rpm

2)安裝namedmanagerlinux

[root@dns src]# yum install perl httpd mod_ssl mysql-server php php-intl php-ldap php-mysql php-soap php-xml
 
修改/etc/httpd/conf/httpd.conf
[root@dns src]# vim /etc/httpd/conf/httpd.conf
......
ServerName dns.kevin.cn:80
 
[root@dns src]# service mysqld start
[root@dns src]# service httpd start
[root@dns src]# lsof -i:3306
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  16589 mysql   10u  IPv4  77732      0t0  TCP *:mysql (LISTEN)
[root@dns src]# lsof -i:80
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
httpd   16621   root    4u  IPv6  77759      0t0  TCP *:http (LISTEN)
httpd   16623 apache    4u  IPv6  77759      0t0  TCP *:http (LISTEN)
httpd   16624 apache    4u  IPv6  77759      0t0  TCP *:http (LISTEN)
httpd   16625 apache    4u  IPv6  77759      0t0  TCP *:http (LISTEN)
httpd   16626 apache    4u  IPv6  77759      0t0  TCP *:http (LISTEN)
httpd   16627 apache    4u  IPv6  77759      0t0  TCP *:http (LISTEN)
httpd   16628 apache    4u  IPv6  77759      0t0  TCP *:http (LISTEN)
httpd   16629 apache    4u  IPv6  77759      0t0  TCP *:http (LISTEN)
httpd   16630 apache    4u  IPv6  77759      0t0  TCP *:http (LISTEN)
 
[root@dns src]# chkconfig mysqld on
[root@dns src]# chkconfig httpd on
 
[root@dns src]# mysqladmin -u root password 123456
 
[root@dns src]# rpm -Uvh namedmanager-www-1.8.0-1.el6.noarch.rpm
[root@dns src]# cd /usr/share/namedmanager/resources/
[root@dns resources]# ./autoinstall.pl
autoinstall.pl
 
This script setups the NamedManager database components:
 * NamedManager MySQL user
 * NamedManager database
 * NamedManager configuration files
 
THIS SCRIPT ONLY NEEDS TO BE RUN FOR THE VERY FIRST INSTALL OF NAMEDMANAGER.
DO NOT RUN FOR ANY OTHER REASON
 
Please enter MySQL root password (if any): 123456        //輸入mysql密碼
Searching ../sql/ for latest install schema...
../sql//version_20131222_install.sql is the latest file and will be used for the install.
Importing file ../sql//version_20131222_install.sql
Creating user...
Updating configuration file...
DB installation complete!
 
You can now login with the default username/password of setup/setup123 at http://localhost/namedmanager
 
 
[root@dns resources]# cd /usr/local/src/
[root@dns src]# yum install bind php-process
[root@dns src]# rpm -Uvh namedmanager-bind-1.8.0-1.el6.noarch.rpm
 
 
修改/etc/named.conf
[root@dns src]# cp /etc/named.conf /etc/named.conf.bak
[root@dns src]# vim /etc/named.conf
options {
        listen-on port 53 { any; };
//      listen-on-v6 port 53 { ::1; };
        directory "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };
        allow-query-cache     { any; };         //DNS查詢的緩存功能。實際上不建議開啓此功能,即刪除這一行配置。若是打開了,當DNS解析修改後,由於緩存緣由,需等待一段時間才能生效。
        recursion yes;
        forward first;
        forwarders {
            223.5.5.5;
            223.6.6.6;
            8.8.8.8;
            8.8.4.4;
          };

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        bindkeys-file "/etc/named.iscdlv.key";
        managed-keys-directory "/var/named/dynamic";

        };
 
logging {                            
        channel default_debug {
        file "data/named.run";
        severity dynamic;
        };
};
 
zone "." {
        type hint;       
        file "named.ca"; 
        };
 
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
include "/etc/named.namedmanager.conf";

==========================================================web

若是要bind能夠在chroot的模式下運行
[root@dns src]# yum install bind-chroot

創建「/etc/named.namedmanager.conf」文件的硬鏈接
[root@dns src]# ln /etc/named.namedmanager.conf /var/named/chroot/etc/named.namedmanager.conf

若是不創建硬鏈接named啓動時,會提示找不到「/etc/named.namedmanager.conf」。
這是由於:
bind-chroot是bind的一個功能,使bind能夠在一個chroot的模式下運行。也就是說,bind運行時的/(根)目錄,並非系統真正的/(根)目錄,只是系統中的一個子目錄而已。
這樣作的目的是爲了提升安全性。由於在chroot的模式下,bind能夠訪問的範圍僅限於這個子目錄的範圍裏,沒法進一步提高,進入到系統的其餘目錄中。

chroot能夠改變程序運行時所參考的根目錄(/)位置,即將某個特定的子目錄做爲程序的虛擬根目錄,而且對程序運行時可使用的系統資源,用戶權限和所在目錄進行嚴
格控制,程序只在這個虛擬的根目錄下具備權限,一旦跳出該目錄就無任何權限。例如在centos中,/var/name/chroot其實是根目錄(/)的虛擬目錄,因此虛擬目錄中的
/etc目錄其實是/var/named/chroot/etc目錄,而/var/named目錄其實是/var/named/chroot/var/named目錄。chroot功能的優勢是:若是有黑客經過Bind侵入系統,也只能被限定在chroot目錄及其子目錄中,其破壞力也僅侷限在該虛擬目錄中,不會威脅到整個服務器
的安全。

==========================================================sql

3)啓動named服務apache

[root@dns src]# service named start
[root@dns src]# chkconfig named on
[root@dns src]# lsof -i:53
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
named   16864 named   20u  IPv4  81946      0t0  TCP localhost:domain (LISTEN)
named   16864 named   21u  IPv4  81948      0t0  TCP 192.168.10.206:domain (LISTEN)
named   16864 named  512u  IPv4  81945      0t0  UDP localhost:domain 
named   16864 named  513u  IPv4  81947      0t0  UDP 192.168.10.206:domain

修改/etc/namedmanager/config-bind.php
[root@dns src]# cp /etc/namedmanager/config-bind.php /etc/namedmanager/config-bind.php.bak
[root@dns src]# vim /etc/namedmanager/config-bind.php
.......
$config["api_url"]      = "http://192.168.10.206/namedmanager";          // 應用程序的安裝位置
$config["api_server_name"]  = "dns.kevin.cn";                            // 此處必須與httpd配置裏的Name Server名稱一致
$config["api_auth_key"]     = "Dns";
......

4)設置防火牆vim

namedmanager部署機本機要麼關閉iptables,要麼安裝以下設置:
[root@dns src]# setenforce 0
[root@dns src]# getenforce
[root@dns src]# vim /etc/sysconfig/selinux
.......
SELINUX=disabled

[root@dns src]# iptables -F
[root@dns src]# iptables -P INPUT DROP
[root@dns src]# iptables -P FORWARD DROP
[root@dns src]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@dns src]# iptables -A INPUT -i lo -p all -j ACCEPT
[root@dns src]# iptables -A INPUT -p icmp -j ACCEPT
[root@dns src]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[root@dns src]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT
[root@dns src]# iptables -A INPUT -p udp --dport 53 -j ACCEPT
[root@dns src]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
[root@dns src]# iptables -A INPUT -p tcp --dport 443 -j ACCEPT

禁用IPV6。添加域名記錄(正向解析與反向解析)。設置開機啓動服務,並重啓服務器。
[root@dns src]# vim /etc/modprobe.d/dist.conf         //文件結尾添加以下內容:
......
alias net-pf-10 off
alias ipv6 off
chkconfig ip6tables off

[root@dns src]# chkconfig httpd on
[root@dns src]# chkconfig mysqld on
[root@dns src]# chkconfig named on

[root@dns src]# init 6      //或者執行"reboot"

4)訪問namedmanager
訪問http://192.168.10.206/namedmanager,默認用戶名和密碼(setup,setup123)。不要忘記在用戶管理中修改用戶名和密碼。centos

接着設置API key(以下圖。設置郵箱地址和API key,這個key是在上面的/etc/namedmanager/config-bind.php文件中設置的api

添加服務器。Name Server FQDN的名稱要和httpd中的ServerName一致。(以下添加部署機的主機名或者ip地址均可以)緩存

添加正向域名解析

添加反向域名解析(若是有多個ip段的客戶機,那麼就以下圖添加多個反向解析配置)

查看正反向解析域名添加狀況

上面已經成功添加了正反向解析域名,如今嘗試添加一些域名的A記錄和PTR記錄

先添加A正向解析記錄

因爲上面在添加A正向解析的時候,已經勾選了PTR反向解析(若是沒有勾選,則須要手動添加PTR反向解析記錄),故這時候已經有了上面那幾個域名的反向解析記錄了:

如上,已經添加了幾個正反向解析記錄,如今到namedmanager部署機器本機上查看相關的正反向解析配置:

[root@dns ~]# cd /var/named/
[root@dns named]# ll
total 40
-rw-r--r--. 1 root  root   490 Apr  7 14:48 10.168.192.in-addr.arpa.zone
drwxr-x---. 7 root  named 4096 Apr  7 13:37 chroot
drwxrwx---. 2 named named 4096 Apr  7 13:39 data
drwxrwx---. 2 named named 4096 Apr  7 14:40 dynamic
-rw-r--r--. 1 root  root   455 Apr  7 14:45 kevin.cn.zone
-rw-r-----. 1 root  named 3289 Apr 11  2017 named.ca
-rw-r-----. 1 root  named  152 Dec 15  2009 named.empty
-rw-r-----. 1 root  named  152 Jun 21  2007 named.localhost
-rw-r-----. 1 root  named  168 Dec 15  2009 named.loopback
drwxrwx---. 2 named named 4096 Jan 22 20:57 slaves

A記錄的正向解析配置爲:
[root@dns named]# cat kevin.cn.zone 
$ORIGIN kevin.cn.
$TTL 120
@       IN SOA dns.kevin.cn. wangshibo.kevin.com. (
            2018040703 ; serial
            21600 ; refresh
            3600 ; retry
            604800 ; expiry
            120 ; minimum ttl
        )

; Nameservers

kevin.cn.   86400 IN NS dns.kevin.cn.

; Mailservers


; Reverse DNS Records (PTR)


; CNAME


; HOST RECORDS

db01    120 IN A 192.168.10.205
db02    120 IN A 192.168.10.209
dns 120 IN A 192.168.10.206
web01   120 IN A 192.168.10.202
web02   120 IN A 192.168.10.203



PTR記錄的反向解析配置爲:
[root@dns named]# cat 10.168.192.in-addr.arpa.zone 
$ORIGIN 10.168.192.in-addr.arpa.
$TTL 120
@       IN SOA dns.kevin.cn. wangshibo.kevin.com. (
            2018040704 ; serial
            21600 ; refresh
            3600 ; retry
            604800 ; expiry
            120 ; minimum ttl
        )

; Nameservers

10.168.192.in-addr.arpa.    86400 IN NS dns.kevin.cn.

; Mailservers


; Reverse DNS Records (PTR)

202 120 IN PTR web01.kevin.cn.
203 120 IN PTR web02.kevin.cn.
205 120 IN PTR db01.kevin.cn.
206 120 IN PTR dns.kevin.cn.
209 120 IN PTR db02.kevin.cn.

; CNAME


; HOST RECORDS

5)設置客戶機的DNS配置

將namedmanager本機以及全部的客戶機的DNS地址都設置成192.168.10.206(即namedmanager部署機的ip地址)
[root@storage01 ~]# ifconfig|grep 192
          inet addr:192.168.10.202  Bcast:192.168.10.255  Mask:255.255.255.0

[root@storage01 ~]# cat /etc/resolv.conf 
domain kevin.cn
search kevin.cn
nameserver 192.168.10.206

[root@storage01 ~]# ping www.baidu.com                         //這裏走的是DNS配置中的forwarders轉發的解析
PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.
64 bytes from 14.215.177.38: icmp_seq=1 ttl=49 time=37.6 ms
64 bytes from 14.215.177.38: icmp_seq=2 ttl=49 time=37.5 ms
64 bytes from 14.215.177.38: icmp_seq=3 ttl=49 time=37.4 ms
.....

[root@storage01 ~]# ping web02.kevin.cn
PING web02.kevin.cn (192.168.10.203) 56(84) bytes of data.
64 bytes from web02.kevin.cn (192.168.10.203): icmp_seq=1 ttl=64 time=0.136 ms
64 bytes from web02.kevin.cn (192.168.10.203): icmp_seq=2 ttl=64 time=0.212 ms
64 bytes from web02.kevin.cn (192.168.10.203): icmp_seq=3 ttl=64 time=0.132 ms
.....

在客戶機上檢查下正反向解析是否成功:
[root@storage01 ~]# host 192.168.10.209
209.10.168.192.in-addr.arpa domain name pointer db02.kevin.cn.

[root@storage01 ~]# host db01.kevin.cn
db01.kevin.cn has address 192.168.10.205

注意一下:1)以上是在單機部署的BindManager服務,若是是線上環境的話,建議在多臺機器上部署(至少兩臺機器)一樣的BindManger服務,好比BindManager0一、BindManager02兩臺機器;2)在客戶機的/etc/resolv.conf文件裏將DNS地址配置成其中的一個BindManager部署機的ip地址,好比配置成BindManager01地址;3)將BindManager01的正反向解析文件實時同步到BindManager02機器上(直接同步/var/named這個目錄便可);兩臺機器的BindaManger相關服務都要是啓動狀態。4)若是BindManager01服務器發生故障,不能正常提供DNS解析服務。此時,能夠迅速將BindManager02的ip地址修改爲BindManager01的ip地址。這樣就能很快的實現故障轉移了。

相關文章
相關標籤/搜索