企業級Web DNS實戰
系統環境
1
|
#cat /etc/redhat-release
|
安裝部署namedmanager
準備rpm包
https://repos.jethrocarr.com/pub/jethrocarr/linux/centos/7/jethrocarr-custom/x86_64/
下載最新版
1
|
[root@hdss7-11 opt]# ll
|
安裝
1
|
[root@hdss7-11 opt]# yum localinstall namedmanager-* -y
|
先配mysql
啟動mysql
1
|
[root@hdss7-11 mysql]# systemctl start mariadb.service
|
開機自啟動
1
|
[root@hdss7-11 ~]# systemctl enable mariadb
|
配mysql的root密碼
1 |
[root@hdss7-11 mysql]# mysqladmin -uroot password 123456
|
匯入namedmanager的資料庫指令碼
/usr/share/namedmanager/resources/autoinstall.pl
1
|
[root@hdss7-11 ~]# cd /usr/share/namedmanager/resources/
|
配置namedmanager
config.php,增加一條配置
/etc/namedmanager/config.php
1
|
$_SERVER['HTTPS'] = "TRUE";
|
config-bind.php,修改以下三條配置
/etc/namedmanager/config-bind.php
1
|
$config["api_url"] = "http://dns-manager.od.com/namedmanager"; // Application Install Location
|
php.ini,修改一條配置
/etc/php.ini
1
|
; How many GET/POST/COOKIE input variables may be accepted
|
綁host(臨時)
/etc/hosts
1
|
10.4.7.11 dns-manager.od.com
|
配apache
/etc/httpd/conf/httpd.conf
1
|
Listen 10.4.7.11:8080
|
配nginx
/etc/nginx/conf.d/dns-manager.od.com.conf
1
|
server {
|
啟動apache和nginx
-
啟動apache
1
2
3[root@hdss7-11 ~]# systemctl start httpd
[root@hdss7-11 ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. -
啟動nginx
1
2
3
4[root@hdss7-11 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@hdss7-11 ~]# nginx
訪問http://dns-manager.od.com,看看頁面是否正常
繼續改namedmanager的配置
改namedmanager_bind_configwriter.php
/usr/share/namedmanager/bind/namedmanager_bind_configwriter.php
1
|
if (flock($fh_lock, LOCK_EX ))
|
啟動namedmanager_logpush.rcsysinit
加執行許可權
/usr/share/namedmanager/resources/namedmanager_logpush.rcsysinit
1
|
[root@hdss7-11 resources]# chmod u+x namedmanager_logpush.rcsysinit
|
啟動該指令碼
/usr/share/namedmanager/resources/namedmanager_logpush.rcsysinit
1
|
[root@hdss7-11 resources]# sh namedmanager_logpush.rcsysinit start
|
檢查是否啟動
1
|
[root@hdss7-11 resources]# ps -ef|grep php|egrep -v grep
|
用supervisor管理起來
這個指令碼非常重要,是整個namedmanager軟體的核心,所以要保證它一直在後臺啟動,這裡我們用supervisor
這個軟體把它管理起來
先安裝supervisor軟體
1
|
[root@hdss7-11 resources]# yum install supervisor -y
|
建立指令碼啟動的配置檔案
/etc/supervisord.d/namedmanager_logpush.ini
1
|
[program:namedmanager_logpush]
|
啟動supservisord服務
1
|
[root@hdss7-11 resources]# systemctl start supervisord
|
開機自啟
1
|
[root@hdss7-11 resources]# systemctl enable supervisord
|
檢視指令碼啟動情況
1
|
[root@hdss7-11 resources]# supervisorctl status
|
這樣指令碼就可以保證高可用性了
檢查日誌
/var/log/namedmanager_logpush
1
|
[root@hdss7-11 resources]# tail -fn 200 /var/log/namedmanager_logpush
|
有報錯,所以需要繼續配置
改inc_soap_api.php
/usr/share/namedmanager/bind/include/application/inc_soap_api.php
1
|
preg_match("/^http:\/\/(\S*?)[:0-9]*\//", $GLOBALS["config"]["api_url"], $matches);
|
重啟namedmanager_logpush.rcsysinit
如果已經用supervisor
軟體管理起來了,只需要kill掉指令碼程序即可
1
|
[root@hdss7-11 resources]# ps -ef|grep -v grep|grep php|awk '{print $2}'|xargs kill -9
|
否則需要手動重啟指令碼
/usr/share/namedmanager/resources/namedmanager_logpush.rcsysinit
1
|
[root@hdss7-11 resources]# sh namedmanager_logpush.rcsysinit restart
|
配置BIND9
先配rndc
rndc.key
1
|
[root@hdss7-11 ~]# cat /etc/rndc.key
|
如果沒有,使用如下命令生成rndc.key
1
|
[root@hdss7-11 ~]# rndc-confgen -r /dev/urandom
|
配rndc.conf
/etc/rndc.conf
1
|
key "rndc-key" {
|
刪除rndc.key
1
|
[root@hdss7-11 ~]# rm -f /etc/rndc.key
|
BIND9主配置檔案
/etc/named.conf
1
|
options {
|
改named.namedmanager.conf檔案屬性
/etc/named.namedmanager.conf
1
|
[root@hdss7-11 named]# chown apache.apache /etc/named.namedmanager.conf
|
檢查配置並啟動BIND9
檢查配置
1
|
[root@hdss7-11 ~]# named-checkconf
|
啟動BIND9
1
|
[root@hdss7-11 ~]# systemctl start named
|
開機自啟動
1
|
[root@hdss7-11 ~]# systemctl enable named
|
檢查啟動情況
1
|
[root@hdss7-11 ~]# netstat -luntp|grep 53
|
配置NamedManager頁面
瀏覽器開啟http://dns-manager.od.com(提前綁好host),使用者名稱/密碼:setup/setup123
配置Configuration選項卡
Zone Configuration Defaults
- DEFAULT_HOSTMASTER
- DEFAULT_TTL_SOA
86400
- DEFAULT_TTL_NS
120
- DEFAULT_TTL_MX
60
- DEFAULT_TTL_OTHER
60
API Configuration
- ADMIN_API_KEY
verycloud
Date and Time Configuration
- DATEFORMAT
yyyy-mm-dd
- TIMEZONE_DEFAULT
Asia/Shanghai
Save Changes
配置New Servers選項卡
Add NewServer
Server Details
- Name Server FQDN *
dns-manager.od.com
注意:這裡一定要填config-bind.php
裡對應$config["api_server_name"]
項配置的值 - Description
dns server for od.com
Server Type
- Server Type
API (supports Bind)
- API Authentication Key *
verycloud
Server Domain Settings
必須勾選以下三項 - Nameserver Group *
default – Default Nameserver Group
- Primary Nameserver *
Make this server the primary one used for DNS SOA records.
- Use as NS Record *
Adds this name server to all domains as a public NS record.
Save Changes
儲存後View Name Servers
選項卡下,Logging Status
應變綠且成為status_synced
,如一直不變綠,需要進行排錯,不要繼續往下做了。
配置Domain/Zones選項卡
新增Domain/Zone
兩種方式
- 手動新增域
- 自動匯入域
Add Domain(手動新增)
Domain Details
- Domain Type *
Standard Domain
Reverse Domain (IPv4)
Reverse Domain (IPv6)
根據實際情況選擇,這裡選擇Standard Domain(正解域) - Domain Name *
od.com
- Description
od.com domain
Domain Server Groups
注意:一定要勾選域伺服器組
default – Default Nameserver Group
Start of Authority Record
- Email Administrator Address *
Email Administrator Address *
- Domain Serial *
2018121601
- Refresh Timer *
21600
- Refresh Retry Timeout *
3600
- Expiry Timer *
604800
- Default Record TTL *
60
注意:這裡配置SOA記錄最後一個引數值沒有按套路出牌,配置的並不是否定應答超時時間(NegativeAnswerTTL),而是預設資源記錄的過期時間
Save Changes
Import Domain(自動匯入)
- Import Source
Bind 8/9 Compatible Zonefile
- Zone File
選擇檔案host.com.txt
匯入一個正解域
upload,選擇檔案
附1:host.com.txt
host.com.txt
1
|
$ORIGIN .
|
注意:這裡可以不用給NS記錄和對應的A記錄了,會預設生成
Save Changes
點儲存進入下一個配置頁面
Domain Details
這裡可以配置域的資訊和描述,我們這裡先配一個Standard Domain
(正解域)
Start of Authority Record
這裡注意SOA記錄的最後一個選項Default Record TTL *
Domain Records
檢查一下和匯入檔案裡的記錄是否一致
Save Changes
先點一次儲存
Domain Details
檢查一遍域資訊和描述
Domain Server Groups
注意:這裡一定要勾選伺服器組(上個頁面沒有,這裡新出來的選項)
Start of Authority Record
檢查一遍SOA記錄
Save Changes
最後點一下儲存,匯入成功
匯入一個反解域
upload,選擇檔案
附2:7.4.10.in-addr.arpa.txt
7.4.10.in-addr.arpa.txt
1
|
$TTL 600 ; 10 minutes
|
注意:這裡可以不用給NS記錄和對應的A記錄了,會預設生成
Save Changes
點儲存進入下一個配置頁面
Domain Details
注意:
Domain Type *
應為Reverse Domain (IPv4)
IPv4 Network Address *
應為10.4.7.0
/24
Start of Authority Record
配置SOA記錄
Domain Records
檢查一下和匯入檔案裡的記錄是否一致
Save Changes
先點一次儲存
Domain Details
檢查一遍域資訊和描述
Domain Server Groups
注意:這裡一定要勾選伺服器組(上個頁面沒有,這裡新出來的選項)
Start of Authority Record
檢查一遍SOA記錄
Save Changes
最後點一下儲存,匯入成功
在對應的Zone裡操作資源記錄(增、刪、改)
View Domains選項卡
details 按鈕
維護domain的基本配置,略
delete 按鈕
刪除domain,略
domain record(od.com)
配置頁面
- Domain Details
Domain od.com selected for adjustment
- Nameserver Configuration
這裡是配置NS記錄的配置區,預設會生成一條
Type | TTL | Name/Origin | Content | - |
---|---|---|---|---|
NS | 120 | od.com | dns-manager.od.com | - |
- Mailserver Configuration
略,暫不配置MX記錄
- Host Records Configuration
這裡是配置重點,A記錄、CNAME記錄、TXT記錄等都在這個裡配置
這裡增加兩條A記錄解析,增加一條CNAME解析
Type | TTL | Name | Content | ReversePTR | - |
---|---|---|---|---|---|
A | 60 | dns-manager | 10.4.7.11 | no | delete |
A | 60 | www | 10.4.7.11 | no | delete |
CNAME | 60 | eshop | www.od.com | no | delete |
Save Changes
domain record(host.com)
配置頁面
- Domain Details
Domain host.com selected for adjustment
- Nameserver Configuration
這裡是配置NS記錄的配置區,預設會生成一條
Type | TTL | Name/Origin | Content | - |
---|---|---|---|---|
NS | 120 | host.com | dns-manager.od.com | - |
- Mailserver Configuration
略,暫不配置MX記錄
- Host Records Configuration
這裡是配置重點,A記錄、CNAME記錄、TXT記錄等都在這個裡配置
因為是從檔案匯入的域,預設會有記錄
Type | TTL | Name | Content | ReversePTR | - |
---|---|---|---|---|---|
A | 60 | HDSS7-11 | 10.4.7.11 | √ | delete |
A | 60 | HDSS7-12 | 10.4.7.12 | √ | delete |
Save Changes
domain record(7.4.10.in-addr.arpa)
配置頁面
- Domain Details
Domain 7.4.10.in-addr.arpa selected for adjustment
- Nameserver Configuration
這裡是配置NS記錄的配置區,預設會生成一條
Type | TTL | Name/Origin | Content | - |
---|---|---|---|---|
NS | 120 | 7.4.10.in-addr.arpa | dns-manager.od.com | - |
- Mailserver Configuration
略,暫不配置MX記錄
- Host Records Configuration
這裡是配置重點,A記錄、CNAME記錄、TXT記錄等都在這個裡配置
因為是從檔案匯入的域,預設會有記錄
Type | TTL | Name | Content | - |
---|---|---|---|---|
PTR | 60 | 11 | HDSS7-11.host.com | delete |
PTR | 60 | 12 | HDSS7-12.host.com | delete |
Save Changes
返回Name Servers選項卡
檢視頁面DNS伺服器狀態
- Logging Status
status_synced
- Zonefile Status
status_synced
全部變綠且為status_synced
即為正常
檢視伺服器上配置檔案(都是由namedmanager服務自動生成的)
named.namedmanager.conf
/etc/named.namedmanager.conf
1
|
//
|
這裡生成了三個zone,兩個正解域,一個反解域,依次檢查三個域的區域資料庫檔案:
od.com.zone
/var/named/od.com.zone
1
|
$ORIGIN od.com.
|
host.com.zone
/var/named/host.com.zone
1
|
$ORIGIN host.com.
|
7.4.10.in-addr.arpa.zone
/var/named/7.4.10.in-addr.arpa.zone
1
|
$ORIGIN 7.4.10.in-addr.arpa.
|
檢查資源記錄解析是否生效
1
|
# dig -t A www.od.com @10.4.7.11 +short
|
驗證頁面增、刪、改是否均生效
注意:
- 增、刪、改資源記錄時,對應域的SOA記錄的serial序列號會自動滾動,非常方便
- 這裡在頁面上操作資源記錄,會先寫mysql,再由php指令碼定期刷到磁碟檔案上,所以大概需要1分鐘的時間生效
- 在維護主機域時,新增正解記錄,並勾選後面的reverse選項,將同時生成一條反解記錄,簡化了操作
- 由於伺服器上的區域資料庫檔案是由php程序定期更新的(根據mysql資料庫裡的資料),所以手動在伺服器上修改資源記錄是無法生效的,應該嚴格禁止
配置DNS主輔同步
略
配置客戶端的DNS伺服器
/etc/resolv.conf
1
|
# Generated by NetworkManager
|
把所有客戶端繫結的臨時hosts刪除
/etc/hosts
1
|
#10.4.7.11 dns-manager.od.com
|
使用者系統及操作審計功能
使用者系統
可以建立不同的管理員使用者
User Management選項卡
該頁面下可以檢視所有的系統使用者,並可以進行使用者管理
Create a new User Account 增加使用者
User Details
- Username *
wangdao
- Real Name *
StanleyWang
- Contact Email *
User Password
- password *
123456
- password_confirm *
123456
Save Changes
User Permissions 使用者許可權
- disabled
勾上,使用者不生效
不勾,使用者生效
這裡不勾 - admin(超級管理員)
勾上,可以建立使用者管理使用者許可權
不勾,不可以建立使用者管理使用者許可權
這裡不勾 - namedadmins(管理員)
勾上,dns管理員,可以管理zone和資源記錄
不勾,不可以管理zone和資源記錄
這裡勾選
Save Changes
delete
刪除使用者,略
details
這裡可以配置使用者的基本資訊
User Password
超級管理員可以幫助使用者修改密碼
User Options
- option_shrink_tableoptions
Automatically hide the options table when using defaults
預設勾選,高階查詢框顯示與否 - option_debug
Enable debug logging - this will impact performance a bit but will show a full trail of all functions and SQL queries made
預設不勾,勾選上可以在頁面顯示debug日誌,建議部署時使用,投產後關閉 - option_concurrent_logins
Permit this user to make multiple simultaneous logins
預設不勾,允許該使用者在多點同時登入,應該嚴格禁止(審計)
使用wangdao使用者登入
可以進行DNS服務管理,但無法管理使用者
審計
使用wangdao使用者在頁面增加一條資源記錄
操作過程略
Changelog選項卡
可以看到所有使用者的操作記錄,實現審計功能,做到操作可溯
Tips
- 生產上強烈建議新生成一個超級管理員使用者並將setup使用者刪除!
- 超級管理員使用者應只有一個且不要輕易外洩,可以建立多個管理員賬戶。(一般根據業務而定,每個管理員負責一個子域)
- 管理員賬戶建立好後,應由各人自行登入修改密碼。
- 超級管理員使用者密碼的複雜度要足夠高,定期更換超級管理員使用者密碼。