主服務器:192.168.138.200
從服務器:192.168.138.201linux
安裝很簡單,執行如下命令便可:
web
yum install -y bind
先看一下bind的版本和配置文件安裝路徑shell
# named -v BIND 9.9.4-RedHat-9.9.4-51.el7_4.2 (Extended Support Version) # rpm -qc bind /etc/logrotate.d/named /etc/named.conf /etc/named.iscdlv.key /etc/named.rfc1912.zones /etc/named.root.key /etc/rndc.conf /etc/rndc.key /etc/sysconfig/named /var/named/named.ca /var/named/named.empty /var/named/named.localhost /var/named/named.loopback
/etc/named.conf,/etc/named.rfc1912.zones是主配置文件
/var/named/named.ca是根區域解析庫文件
/var/named/named.localhost,/var/named/named.loopback 是本機和環回地址的解析庫文件
rndc---remote name domain controller這是一個輔助管理工具,默認狀況下與BIND安裝在同一主機,並且只能經過127.0.0.1鏈接named進程,監聽的端口號是TCP/953。windows
這個配置文件主要分3段內容,options是全局配置,logging是日誌配置,最後是區域解析庫配置以及所包含的區域解析庫文件配置。緩存
# cat /etc/named.conf // 2個雙//在這個配置文件中表示註釋 options { //下面一行表示監聽的端口和IP地址,其中2個{}內部兩端都要有空格,IP地址要以;號結尾。 這裏的IP地址至少應該包含宿主機能夠和外部通迅的地址,也能夠包含一個本地迴環地址供rndc工具使用。也能夠簡寫成{ any; } 每一個語句結束一樣都要以;結尾,若是不須要監聽IPV6能夠註釋掉或刪除。 listen-on port 53 { 192.168.138.200; 127.0.0.1; }; // listen-on-v6 port 53 { ::1; }; //下面一行表示named的工做目錄爲/var/named 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"; //下面一行表示容許哪些主機查詢,改爲any表示全部 allow-query { any; }; //下面一行表示是否容許遞歸查詢. recursion yes; dnssec-enable yes; dnssec-validation yes; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; //.表示根區域,這個區域是必需要有的 zone "." IN { type hint; //hint表示根區域類型 file "named.ca"; //指定根區域解析庫文件名稱所在位置,相對於/var/named }; //指定區域文件名稱,全部的區域定義均可以寫在named.rfc1912.zones文件中 include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
編輯/etc/named.rfc1912.zones在文件末尾添加一個正向解析區域和一個反向解析區域服務器
# cat /etc/named.rfc1912.zones zone "0.in-addr.arpa" IN { type master; file "named.empty"; allow-update { none; }; }; // 添加一個正向解析區域,並定義爲主服務器 zone "frank.com" IN { type master; //master表示主服務器 file "frank.com.zone"; //指明區域解析庫文件,相對於/var/named/ }; //添加一個反向解析區域,並定義爲主服務器 zone "138.168.192.in-addr.arpa" IN { type master; file "138.zone"; };
建立frank.com.zone解析庫文件session
# cat frank.com.zone $TTL 1D frank.com. IN SOA ns.frank.com. admin.frank.com. ( 201802001 ;序列號 2H ;刷新時間 10M ;重試時間間隔 1W ;過時時間 1D ;沒法解析時否認答案的TTL值 ) frank.com. IN NS ns1.frank.com. IN NS ns2.frank.com. ns1.frank.com. IN A 192.168.138.200 ns2.frank.com. IN A 192.168.138.200 frank.com. IN MX 10 mx1.frank.com. IN MX 20 mx2.frank.com. mx1.frank.com. IN A 192.168.138.200 mx2.frank.com. IN A 192.168.138.200 www.frank.com. IN A 192.168.138.200 master IN CNAME www.frank.com. web IN CNAME www.frank.com.
建立138.zone反向解析庫文件dom
# cat 138.zone $TTL 1d @ IN SOA ns.frank.com. admin.frank.com. ( 201802001; 2H; 10M; 1W; 1D; ) IN NS ns.frank.com. 200 IN PTR www.frank.com. 200 IN PTR ns.frank.com.
注意事項:工具
# ll /var/named total 16 drwxrwx---. 2 named named 23 Feb 21 13:10 data drwxrwx---. 2 named named 60 Feb 21 13:11 dynamic -rw-r-----. 1 root named 2281 May 22 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 44 Feb 21 13:14 slaves
檢查配置文件語法oop
# named-checkconf 沒有任何輸出表示 /etc/named.conf沒有語法錯誤
# named-checkzone "frank.com" "frank.com.zone" zone frank.com/IN: loaded serial 201802001 OK 正向解析區域檢查沒問題
# named-checkzone "frank.com" "138.zone" zone frank.com/IN: loaded serial 201802001 OK 反向解析區域檢查沒問題
啓動named服務
# systemctl start named.service
使用dig測試
dig語法使用格式:
dig -t [SOA|A|CNAME|NS|MX] 域名 [@dns服務器地址] [+[no]trace|recurse]
dig -t A web.frank.com @192.168.138.200 ; <<>> DiG 9.9.4-RedHat-9.9.4-51.el7_4.2 <<>> -t A web.frank.com @192.168.138.200 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40444 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;web.frank.com. IN A ;; 下面就是解析出的結果 ;; ANSWER SECTION: web.frank.com. 86400 IN CNAME www.frank.com. www.frank.com. 86400 IN A 192.168.138.200 ;; AUTHORITY SECTION: frank.com. 86400 IN NS ns2.frank.com. frank.com. 86400 IN NS ns1.frank.com. ;; ADDITIONAL SECTION: ns1.frank.com. 86400 IN A 192.168.138.200 ns2.frank.com. 86400 IN A 192.168.138.200 ;; Query time: 0 msec ;; SERVER: 192.168.138.200#53(192.168.138.200) ;; WHEN: Wed Feb 21 12:35:24 CST 2018 ;; MSG SIZE rcvd: 144
到此DNS主服務器已經配置完畢並能正常工做。
編輯/etc/named.conf將監聽IP地址改一下,其它不須要更改
# cat /etc/named.conf listen-on port 53 { 192.168.138.201; 127.0.0.1; };
編輯/etc/named.rfc1912.zones將type類型改成slave
# cat /etc/named.rfc1912.zones zone "0.in-addr.arpa" IN { type master; file "named.empty"; allow-update { none; }; }; // 添加一個正向解析區域,並定義爲從服務器 zone "frank.com" IN { type slave; //slave表示主服務器 masters { 192.168.138.200; }; //指明主服務器IP file 「slaves/frank.com"; //指定從服務區域解析庫文件位置 }; //添加一個反向解析區域,並定義爲主服務器 zone "138.168.192.in-addr.arpa" IN { type slave; masters { 192.168.138.200; }; file "slaves/138.zone"; };
注意事項:從服務器的區域解析庫文件應當是從主服務器加載過來的,因此無需建立區域解析庫文件。
啓動named服務
# systemctl start named
檢查/var/named/slaves目錄
# ll /var/named/slaves/ total 8 -rw-r--r--. 1 named named 268 Feb 21 13:14 138.zone -rw-r--r--. 1 named named 554 Feb 21 13:14 frank.com.zone
這2個文件是自動從主服務器同步過來的。
使用dig驗證
dig -t MX frank.com @192.168.138.201 ; <<>> DiG 9.9.4-RedHat-9.9.4-51.el7_4.2 <<>> -t MX frank.com @192.168.138.201 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57146 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 5 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;frank.com. IN MX ;; ANSWER SECTION: frank.com. 86400 IN MX 10 mx1.frank.com. frank.com. 86400 IN MX 20 mx2.frank.com. ;; AUTHORITY SECTION: frank.com. 86400 IN NS ns1.frank.com. frank.com. 86400 IN NS ns2.frank.com. ;; ADDITIONAL SECTION: mx1.frank.com. 86400 IN A 192.168.138.200 mx2.frank.com. 86400 IN A 192.168.138.200 ns1.frank.com. 86400 IN A 192.168.138.200 ns2.frank.com. 86400 IN A 192.168.138.200 ;; Query time: 0 msec ;; SERVER: 192.168.138.201#53(192.168.138.201) ;; WHEN: Wed Feb 21 13:15:43 CST 2018 ;; MSG SIZE rcvd: 178
rndc reload:
重載主配置文件和區域解析庫文件,能夠不用重啓named服務狀況下更新主配置文件和區域解析庫文件。
rndc reload zone_name:
重域指定區域
rndc retransfer zone:
手動啓動區域傳送,無論序號是否增長或減小
rndc notify zone:
手動通知區域
rndc reconfig:
重載主配置文件
rndc querylog:
開啓或關閉查詢日誌
windows中的DNS服務器架設完成後,客戶端會自動向DNS服務器註冊,服務器端也會自動添加相應的A記錄和PTR記錄,linux系統當中是否是隻能手動添加這些記錄才能解析到局域網中的計算機名呢?