安裝和控制DNS伺服器
BIND(Berkeley Internet Name Domain,伯克利Internet 域名服務 )是一款開放源碼的DNS伺服器軟體,Bind由美國加州大學Berkeley分校開發和維護的,但不是唯一能夠提供域名服務的DNS服務程式,但它卻是應用最為廣泛的,BIND可以運作在大多數Linux/UNIX主機中。其官方站點位于https://www.isc.org/。
1、安裝BIND軟體
在CentOS7.x系統中,系統CD光牒自帶了BIND服務的多個安裝檔案,各軟體包的主要作用如下。
- bind:提供了域名服務的主要程式及相關檔案。
- bind-utils:提供了對DNS伺服器的測試工具程式,如nslookup等。
- bind-1ibs:提供了bind、bind-utils需要使用的庫函數。
- bind-chroot:可選軟體包,為BIND服務提供一個僞裝的根目錄(将/var/named/chroot/檔案夾作為BIND的根目錄),以提高安全性。也稱為jail(監牢)機制
預設已安裝bind-utils和bind-libs,是以隻需要安裝bind即可。
[root@localhost ~]# rpm -q bind-utils bind-libs
bind-utils-9.9.4-61.el7.x86_64
bind-libs-9.9.4-61.el7.x86_64
[root@localhost ~]# yum -y install bind
查詢是否已安裝與BIND相關的軟體包
[root@localhost ~]# rpm -q bind bind-utils bind-libs
bind-9.9.4-61.el7.x86_64
bind-utils-9.9.4-61.el7.x86_64
bind-libs-9.9.4-61.el7.x86_64
2、BIND服務控制
BIND軟體包安裝完畢以後,會自動增加一個名為named的系統服務,通過systemctl工具都可以控制DNS域名服務的運作。例如,執行以下操作可以查詢named服務的運作狀态。
[root@localhost ~]# systemctl status named
● named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
Active: inactive (dead)
3、BIND服務的配置檔案
使用BIND軟體建構域名服務時,主要涉及兩種類型的配置檔案:主配置檔案和區域資料檔案。其中,主配置檔案用于設定named服務的全局選項、注冊區域及通路控制等各種運作參數;區資料檔案用于存放某個DNS區域的位址解析記錄(正向或反向記錄)。
①. 主配置檔案
主配置檔案named.conf通常位于/etc/目錄下,在named.conf檔案中,主要包括全局配置、區域配置兩個部分,每一條配置記錄的行尾以分号“;”表示結束,以“#”号或者“//”開始的部分表示注釋文字(大段注釋可以使用“/* …… */”的格式)。
1). 全局配置部分
全局配置參數包括在形如“options { };”的大括号中,如可以設定監聽的位址和端口、區資料檔案存放的目錄、允許哪些客戶機查詢等。
[root@localhost ~]# cd /etc/
[root@localhost etc]# vim named.conf
…… //省略部分參數
options {
listen-on port 53 { 192.168.200.111; }; //監聽位址和端口
directory "/var/named"; //區域資料檔案的預設存放位置
allow-query { 192.168.100.0/24; 192.168.200.0/24; }; //允許使用本DNS服務的網段
};
…… //省略部分參數
上述配置内容中,除了directory項通常會保留以外,其他的配置項都可以省略。若不指定listen-on配置項時,named預設在所有接口的UDP 53端口監聽服務,不指定allow-query配置項時,預設會響應所有客戶機的查詢請求。
2). 區域配置部分
區域配置參數使用“zone …… { };”的配置格式,一台DNS伺服器可以為多個區域提供解析,是以在named.conf檔案中也可以有很多個zone配置段。區域類型按照解析方向可分為正向區域、反向區域。
[root@localhost etc]# vim named.conf
…… //省略部分參數
zone "crushlinux.com" IN { //正向"crushlinux.com"區域
type master; //類型為主區域
file "crushlinux.zheng"; //區域資料檔案為crushlinux. zheng
allow-transfer { 192.168.200.112; }; //允許下載下傳的從伺服器位址
};
zone "200.168.192.in-addr.arpa" IN { //反向"192.168.200.0/24"區域
type master;
file "crushlinux.fan";
};
…… //省略部分參數
在上述配置内容中,有幾個地方需要注意。
■ 每個zone區域都是可選的(包括根域、回環域、反向域),具體根據實際需要而定,zone配置部分的“IN”關鍵字也可以省略。
■ 反向區域的名稱由倒序的網絡位址和“in-addr.arpa”組合而成。例如,對于192.168.200.0/24網段,其反向區域名稱表示為“200.168.192.in-addr.arpa”。
■ file配置項用于指定實際的區域資料檔案,檔案名稱由管理者自行設定。
■ 區域配置中的部分參數(如allow-transfer)也可以放在全局配置裡。
修改完主配置檔案以後,可以執行named-checkconf指令對named.conf檔案進行文法檢查。如果檔案中沒有文法錯誤,該指令将不給出任何提示,反之,則會給出相應的提示資訊,隻要根據出錯提示修正檔案中的錯誤即可。帶“-z”選項的named-checkconf指令還可以嘗試加載主配置檔案中對應的區域資料庫檔案,并檢查該檔案是否存在問題。例如,當出現“…file not found”的錯誤時,表示找不到對應的檔案。
[root@localhost etc]# named-checkconf -z /etc/named.conf
zone crushlinux.com/IN: loading from master file crushlinux.zheng failed: file not found
zone crushlinux.com/IN: not loaded due to errors.
_default/crushlinux.com/IN: file not found
…… //省略部分參數
關于named.conf檔案中各種配置項的詳細說明,可以執行"man named.conf,,檢視手冊頁,也可參考配置樣本檔案/usr/share/doc/bind-9.8.2/sample/etc/named.conf。
②. 區域資料配置檔案
區域資料配置檔案通常位于/var/named/目錄下,每個區域資料檔案對應一個DNS解析區域,檔案名及内容由該域的管理者自行設定。
根域“.”的區域資料檔案比較特殊。Internet中所有的DNS伺服器都使用同一份根區域資料檔案,其中列出了所有根伺服器的域名和IP位址。根區域資料檔案可以從國際網際網路絡資訊中心(InterNIC)的官方網站位址http://www.internic.net/下載下傳。
在區域資料檔案中,主要包括TTL配置項、 SOA (Start of Authority,授權資訊開始)記錄、位址解析記錄。檔案中的注釋資訊以分号“;”開始。
1). TTL配置及SOA記錄部分
第一行的TTL配置用于設定預設生存周期,即緩存解析結果的有效時問。 SOA記錄部分用于設定區域名稱、管理郵箱,以及為從域名服務指定更新參數。
[root@localhost ~]# cd /var/named/
[root@localhost named]# vim crushlinux.zheng
$TTL 86400 ;有效解析記錄的生存周期
@ IN SOA crushlinux.com. admin.crushlinux.com. ( ;SOA标記、域名、管理郵箱
2011030501 ;更新序列号,可以是10位以内的整數
3H ;重新整理時間,重新下載下傳位址資料的間隔
15M ;重試延時,下載下傳失敗後的重試間隔
1W ;失效時間,超過該時間仍無法下載下傳則放棄
1D ;無效解析記錄的生存周期
)
上述配置内容中,時間機關預設為秒,也可以使用以下機關: M (分)、H (時)、W (周)、D(天)。檔案中的“@”符号當于“crushlinux.com.”,“admin.crushlinux.com.”,表示域管理者的電子郵箱位址(由于“@”符号已有其他含義,是以将郵件位址中的“@”用代替)。SOA記錄中的更新序列号用來同步主、從伺服器的區域資料,當從伺服器判斷區域更新時,若發現主伺服器中的序列号與本地區域資料中的序列号相同,則不會進行下載下傳。
2).位址解析記錄部分
位址解析記錄用來設定DNS區域内的域名、 IP位址映射關系,包括正向解析記錄和反向解嶄記錄。反向解析記錄隻能用在反向區域資料檔案中。
[root@localhost named]# vim crushlinux.zheng
…… //省略部分參數
@ IN NS ns1.crushlinux.com.
IN MX 10 mail.crushlinux.com.
ns1 IN A 192.168.200.111
www IN A 192.168.200.111
mail IN A 192.168.200.113
map IN A 192.168.200.114
ftp IN CNAME www
上述配置内容中,用到以下四種常見的位址解析記錄。
■ NS域名伺服器(Name Server):記錄目前區域的DNS伺服器的主機位址。
■ MX郵件交換(Mail Exchange):記錄目前區域的郵件伺服器的主機位址,數字10表示(當有多個MX記錄時)選擇郵件伺服器的優先級,數字越大優先級越低。
■ A位址(Address):記錄正向解析條目(IPV4)。例如,“WWW IN A 192.168.200.111”表示或名www.crushlinux.com對應的IP位址是192.168.200.111。
■ AAAA 位址(Address):記錄正向解析條目(IPV6)。
■ CNAME别名(Canonical Name):記錄某一個正向解析條目的其他名稱。例如,“ftp IN CNAME www”表示域名ftp.crushlinux.com是www.crushlinux.com的别名。
其中,NS、MX記錄行首的“@”符号可以省略(預設繼承SOA記錄行首的@資訊),但是必須保留一個空格或Tab制表位。
在反向區域資料檔案中,不會用到A位址記錄,而是使用PTR指針(Point)記錄。例如,對于反向區域crushlinux.fan,添加的反向解析記錄可以是以下形式。
[root@localhost named]# vim crushlinux.fan
…… //省略部分參數
@ IN NS ns1.crushlinux.com.
IN MX 10 mail.crushlinux.com.
111 IN PTR ns1.crushlinux.com.
111 IN PTR www.crushlinux.com.
113 IN PTR mai.crushlinux.com.
114 IN PTR map.crushlinux.com.
使用PTR記錄時,第一列中隻需要指明對應IP位址的“主機位址”部分即可,如“111”、“113”等,系統在查找位址記錄時會自動将目前反向域的網絡位址作為字首。例如,上述檔案中的“4 IN PTR mai1.crushlinux.com.”,表示IP位址為192.168.200.113的主機的域名是mail.crushlinux.com.。
在區域資料配置檔案中,凡是不以點号".″結尾的主機位址,系統在查找位址記錄時都會自動将目前的域名作為字尾。例如,若目前的DNS域為“crushlinux.com”,則在檔案中的主機位址“www”相當于“www.crushlinux.com”。是以,當使用完整的FQDN位址時,務必記得位址末尾的點号“.”不能省略。
修改完區域資料檔案以後,可以執行named-checkconf指令對該檔案進行文法檢查。依次指定區域名稱、資料檔案名作為參數。如果檔案中沒有文法錯誤,系統将給出“OK”的提示資訊。例如,若要檢查DNS區域crushlinux.com的區域資料檔案crushlinux.zheng,可以執行以下操作。
[root@localhost ~] # cd /var/named/
[root@localhost named] # named-checkzone crushlinux.com crushlinux.zheng
zone crushlinux.com/IN: loaded seria1 2011030501
0K
當一台伺服器需要同時承載某個DNS區域内的許多個不同的域名時(如IDC的虛拟主機伺服器、提供個人首頁空問的網站伺服器等),可以在區域資料檔案的最後一行添加泛域名解析記錄,即使用“*”以比對任意主機名。
* IN A 192.168.200.111
基于域名解析的負載均衡:同一個域名對應到多個IP位址
www IN A 192.168.200.111
www IN A 192.168.200.112
www IN A 192.168.200.113
5、建構緩存域名伺服器
學習了DNS伺服器的相關基礎知識、BIND軟體包的安裝,以及DNS伺服器的配置檔案組成、配置格式等。下面分别講解建構緩存域名伺服器、主域名伺服器、從域名伺服器的基本過程。
緩存域名伺服器通常架設在公司的區域網路内,主要目的是提高域名解析的速度,減少對網際網路通路的出口流量。例如,在一個小型企業的内部網絡,如下圖中,可單獨建立一台(或內建在網關主機中)緩存域名伺服器,為各部門的員工計算機提供DNS解析服務。
參考上述網絡結構,本小節案例使用的基本環境和要求如下所述。
■ 緩存域名伺服器的IP位址為192.168.200.111,并能夠正常通路網際網路。
■ 緩存域名伺服器代為處理用戶端的DNS解析請求,并緩存查詢結果。
■ 區域網路内的各PC将首選DNS伺服器位址設為192.168.200.111。
下面講解使用BIND建構此緩存域名伺服器的基本步驟。
①. 建立主配置檔案named.conf
若使用範本檔案建立named.conf,應注意修改或删除預設的監聽設定、查詢控制,以便能夠為區域網路段的客戶機提供服務。另外,logging、view配置部分一般用不到,可以先注釋以避免其幹擾。
[root@localhost ~]# vim /etc/named.conf
options {
listen-on port 53 { 192.168.200.111; };
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 { 192.168.200.0/24; };
recursion yes;
};
zone "." IN { //正向“.”根區域
type hint; //類型為根區域
file "named.ca"; //區域資料檔案為named.ca
};
上述配置内容中,dump-file、statistics-file、memstatistics-file等配置項用于指定緩存資料庫檔案、狀态統計檔案的位置。添加了“zone "." IN{ ……};”部分的根區域設定,盡管緩存伺服器并沒有自主要制的區域資料,但可以向根伺服器進行疊代查詢,并将最終獲得的解析結果回報給客戶。
有時候為了提高解析效率,也可以不向根區域查詢,而是将來自用戶端的查詢請求轉發給國内電信營運商的DNS伺服器(如北京的202.106.0.20、 202.106.148.1),緩存伺服器收到傳回的查詢結果後再傳遞給用戶端。隻要去掉“zone "." IN{ ……};”的設定,并在全局配置中正确設定forwarders參數即可實作該功能。
[root@localhost etc]# vim named.conf
options {
…… //省略部分内容
forwarders{202.106.0.20; 202.106.148.1;};
};
②. 确認根域的區域資料檔案named.ca
根區域的區域資料檔案預設位于檔案/var/named/named.ca中,該檔案記錄了Internet中13台根域伺服器的域名和IP位址等相關資訊。
[root@localhost ~]# ls /var/named/
data dynamic named.ca named.empty named.localhost named.loopback slaves
③. 啟動named服務
執行“systemctl start named”指令,啟動named服務,并通過netstat指令确認named服務的端口監聽狀态。若服務啟動失敗或發現沒有正常監聽UDP53端口,可以根據錯誤提示資訊(或者/var/log/messages檔案中的日志記錄)排除錯誤,然後再重新開機服務即可。
[root@localhost ~]# systemctl start named
[root@localhost ~]# systemctl enable named
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
[root@localhost ~]# netstat -anpu | grep named
udp 0 0 192.168.200.111:53 0.0.0.0:* 63751/named
④. 驗證緩存域名伺服器
在區域網路内的客戶機中,将首選DNS伺服器的位址設為192.168.200.111.生效後,執行“nslookup www.baidu.com”指令對其進行解析,驗證其是否能夠獲得該域名對應的IP位址資訊。
6、建構主域名伺服器
主域名伺服器通常架設在Internet環境中,提供某一個域或某幾個域内的主機名與IP位址的查詢服務。為了分擔域名查詢的壓力、提供區域資料的備份,有時還會另外架設一台從域名伺服器,與主域名伺服器同時提供服務,如下圖所示。
參考下圖的網絡結構,将分别介紹主域名伺服器、從域名伺服器的建構過程。案例使用的基本網絡環境和要求如下所述。
■ 主、從域名伺服器均位于Internet中,所負責的DNS區域為“crushlinux.com”。
■ 主伺服器的IP位址為192.168.200.111,主機名為nsl.crushlinux.como
■ 從伺服器的IP位址為192.168.200.112,主機名為ns2.crushlinux.como
■ 參考各伺服器的位址映射關系,為192.168.200.0/24網段提供反向解析。
■ 在crushlinux.com區域中,除了NS記錄以外,提供的解錄還包括以下内容。
● 網站伺服器www.crushlinux.com,IP位址為192.168.200.111。
● 郵件伺服器mai1.crushlinux.com,IP位址為192.168.200.112。
● 線上教育訓練伺服器study.crushlinux.com,IP位址為192.168.200.113。
● 設定crushlinux.com域的泛域名解析,對應的IP位址為192.168.200.111。
■ 客戶機将首選、備用DNS伺服器分别設為192.168.200.111和192.168.200.112,使用其中的任何一個伺服器.都能夠正常查詢crushlinux.com區域中的主機位址。
下面首先講解使用BIND建構主域名伺服器的基本步驟。
①. 确認本機的網絡位址、主機映射、預設DNS伺服器位址。
将主域名伺服器的IP位址設為192.168.200.111、主機名設為ns1.crushlinux.com,通過修改網絡配置檔案的方式進行。另外,為了提高域名解析效率,建議将兩個DNS伺服器的位址映射直接寫入到/etc/hosts檔案中,并在/etc/resolv.conf檔案中指定兩個DNS伺服器的位址。
[root@localhost ~]# tail -2 /etc/hosts
192.168.200.111 nsl.crushlinux.com nsl
192.168.200.112 ns2.crushlinux.com ns2
[root@localhost ~]# tail -2 /etc/resolv.conf
nameserver 192.168.200.111
nameserver 192.168.200.112
②. 建立主配置檔案named.confo
新建立的named.conf主配置檔案,由于隻需要提供crushlinux.com域的正向解析和192.168.200.0/24網段的反向解析,是以相應地添加這兩個區域即可。根區域、回環域等其他配置内容可以省略。
[root@localhost ~]# cd /etc/
[root@localhost etc]# vim named.conf
options {
directory "/var/named";
};
zone "crushlinux.com" IN { //正向"crushlinux.com"區域
type master; //類型為主區域
file "crushlinux.zheng"; //區域資料檔案為crushlinux. com. zone
allow-transfer { 192.168.200.112; }; //允許從伺服器位址下載下傳正向域資料
};
zone "200.168.192.in-addr.arpa" IN { //反向"192.168.200.0/24"區域
type master;
file "crushlinux.fan";
allow-transfer { 192.168.200.112; }; //允許從伺服器位址下載下傳反向域資料
};
當不需要建立從域名伺服器時,上述配置内容中的“allow-transfer ……”部分可以不添加,當不需要提供反向解析時,“zone "200.168.192.in-addr.arpa" IN { …… }”部分也可以去掉。
③. 建立正向、反向區域資料檔案。
根據named.conf中的zone區域設定,分别建立正向區域資料檔案crushlinux.zheng.反向區域資料檔案crushlinux.fan配置内容可以參考區域資料檔案/var/named/named.localhost。
[root@localhost ~]# cd /var/named/
[root@localhost named]# vim crushlinux.zheng
$TTL 86400 ;有效解析記錄的生存周期
@ IN SOA crushlinux.com. admin.crushlinux.com. ( ;SOA标記、域名、管理郵箱
2011030501 ;更新序列号,可以是10位以内的整數
3H ;重新整理時間,重新下載下傳位址資料的間隔
15M ;重試延時,下載下傳失敗後的重試間隔
1W ;失效時間,超過該時間仍無法下載下傳則放棄
1D ;無效解析記錄的生存周期
)
@ IN NS ns1.crushlinux.com.
IN NS ns2.crushlinux.com.
IN MX 10 mail.crushlinux.com.
ns1 IN A 192.168.200.111
ns2 IN A 192.168.200.112
mail IN A 192.168.200.112
www IN A 192.168.200.111
study IN A 192.168.200.113
* IN A 192.168.200.111
[root@localhost named]# vim crushlinux.fan
$TTL 86400
@ IN SOA crushlinux.com. admin.crushlinux.com. (
2011030501
3H
15M
1W
1D
)
@ IN NS ns1.crushlinux.com.
IN NS ns2.crushlinux.com.
111 IN PTR www.crushlinux.com.
112 IN PTR mail.crushlinux.com.
113 IN PTR study.crushlinux.com.
111 IN PTR ns1.crushlinux.com.
112 IN PTR ns2.crushlinux.com.
④. 啟動named服務或重載配置。
啟動named服務,如果之前named服務已經在運作,也可以重新開機服務或重載配置。
[root@localhost named]# chgrp named crushlinux.zhengcrushlinux.fan
[root@localhost ~]# named-checkconf /etc/named.conf
[root@localhost ~]# named-checkzone crushlinux.com /var/named/crushlinux.zheng
zone crushlinux.com/IN: loaded serial 2019010801
OK
[root@localhost ~]# named-checkzone crushlinux.com /var/named/crushlinux.fan
zone crushlinux.com/IN: NS \'ns1.crushlinux.com\' has no address records (A or AAAA)
zone crushlinux.com/IN: NS \'ns2.crushlinux.com\' has no address records (A or AAAA)
zone crushlinux.com/IN: not loaded due to errors.
[root@localhost named]# systemctl reload named
⑤. 驗證主域名伺服器。
用戶端将DNS伺服器指向192.168.200.111 (主域名伺服器的IP位址) ,使用nslookup指令驗證DNS查詢結果。例如,以下操作使用Windows 7客戶機分别驗證了正向解析、泛域名解析、反向解析的查詢結果。
C:\Users\Administrator> nslookup study.crushlinux.com //驗證正向域名解析
伺服器: nsl.crushlinux.com
Address: 192.168.200.111
名稱: Study.crushlinux.com
Address: 192.168.200.113
C:\Users\Administrator>nslookup www.crushlinux.com
伺服器: ns1.crushlinux.com
Address: 192.168.200.111
名稱: www.crushlinux.com
Address: 192.168.200.111
C: \Users\Administrator> nslookup xxyyzz.crushlinux.com //驗證泛域名解析
伺服器: nsl.crushlinux.com
Address: 192.168.200.111.
名稱: xxyyzz.crushlinux.com
Address: 192.168.200.111
C:\Users\Administrator> nslookup192.168.200.112 //驗證反向域名解析
伺服器: nsl.crushlinux.com
Address: 192.168.200.111
名稱: mai1.crushlinux.com
Address: 192.168.200.112
7、建構從域名伺服器
繼續用上面的應用案例,在已經建構好主域名伺服器192.168.200.111的基礎之上,繼續建構從域名伺服器192.168.200.112。
①. 确認本機的網絡位址、主機映射、預設DNS伺服器位址
将從域名伺服器的IP位址設為192.168.200.112,主機名設為ns2.crushlinux.com,通過修改網絡配置檔案的方式進行。另外,主機映射檔案/etc/hosts和DNS解析檔案/etc/resolve.conf的内容與主伺服器中的内容相同。
②. 建立主配置檔案named.conf
在從域名伺服器中,named.conf檔案的内容與主伺服器的内容大部分相同,隻是不需要再設定“allow-transfer ……”,更關鍵的一點是, zone部分的區域類型應設定為“slave”,并添加“masters { };”語句來指定主域名伺服器的位址。
[root@localhost ~]# yum -y install bind
[root@localhost ~]# cd /etc/
[root@localhost etc]# vim named.conf
options {
directory "/var/named";
};
zone "crushlinux.com" IN { //正向"crushlinux.com"區域
type slave; //類型為從區域
masters { 192.168.200.111; }; //指定主伺服器的IP位址
file "slaves/crushlinux.zheng"; //下載下傳的區域檔案儲存到slave/crushlinux. com. zone
};
zone "200.168.192.in-addr.arpa" IN { //反向"173.16.16.0/24"區域
type slave;
masters { 192.168.200.111; };
file " slave/Crushlinux.fan";
};
由于從伺服器的區域資料檔案是從主伺服器中下載下傳而來,是以該檔案儲存的名稱可以自行定義,不用非得與主伺服器中的一緻。但需要注意的是,named服務預設以名為“named”的使用者身份運作,是以要确認named使用者對存放目錄有寫入權限。
[root@localhost ~]# ls -l /var/named/slaves/
總用量 0
③. 啟動named服務,檢視區域資料檔案是否下載下傳成功
在從域名伺服器中啟動named服務,若配置無誤,則named将會從主域名伺服器中自動下載下傳指定的區域資料檔案,并儲存到“slaves/”目錄下。另外,通過系統日志檔案/var/log/messages也可以觀察到下載下傳區域資料檔案的過程。
[root@localhost ~]# systemctl start named
[root@localhost ~]# ls -l /var/named/slaves/
總用量 8
-rw-r--r-- 1 named named 483 1月 8 23:03 crushlinux.fan
-rw-r--r-- 1 named named 538 1月 8 23:03 crushlinux.zheng
④. 驗證從域名伺服器
對于用戶端來說,從域名伺服器與主域名伺服器并沒有什麼差別,通過主伺服器能夠查詢到的資訊,通過從伺服器也同樣能夠查詢到。驗證從域名伺服器時,隻需要将用戶端的首選DNS伺服器位址設為192.168.200.112(從域名伺服器的IP位址),使用nslookup指令進行正常測試即可。例如,以下操作是使用Linux客戶機的測試結果。
[root@localhost etc]# nslookup study.crushlinux.com
伺服器: mail.crushlinux.com
Address: 192.168.200.112
名稱: study.crushlinux.com
Address: 192.168.200.113
[root@localhost etc]# nslookup 192.168.200.112
伺服器: mail.crushlinux.com
Address: 192.168.200.112
名稱: mail.crushlinux.com
Address: 192.168.200.112
8、DNS解析綜合學習案例
1、使用者需把/dev/myvg/mylv邏輯卷以支援磁盤配額的方式挂載到網頁目錄下
2、在網頁目錄下建立測試檔案index.html,内容為使用者名稱,通過浏覽器通路測試
3、建立使用者賬戶,對LVM配置磁盤配額限制使用者磁盤容量為軟限制80M;硬限制100M、檔案數量軟限制為80個;硬限制為100個。
4、建構主從DNS域名解析環境
5、主從DNS都可将www.crushlinux.com域名解析為192.168.200.113
6、客戶機可通過浏覽器通路www.crushlinux.com得到WEB伺服器相應内容
7、主域名伺服器要同時擔任緩存域名伺服器功能
8、客戶機通過nslookup域名測試工具可解析到www.jd.com等網站的域名解析結果
9、DNS生産環境案例
在域名營運商購買域名備案後,可将域名DNS更改為自己建構的DNS伺服器。
[root@localhost ~]# nslookup www.crushlinux.com 134.175.27.146
Server: 134.175.27.146
Address: 134.175.27.146#53
Name: www.crushlinux.com
Address: 180.153.100.100
10、建構DNS域名伺服器的分離解析
DNS分離解析域名伺服器概述
DNS分離解析域名伺服器實際也是主域名DNS伺服器,這裡所說的分離解析(Split DNS),主要是指根據不同來源的用戶端請求,提供不同的域名解析記錄。來自不同位址的客戶機請求解析同一域名時,為其提供不同的解析結果。
分離解析案例:
如下圖所示:Crushlinux工作室的DNS域名伺服器架設在公司網關伺服器中,網關伺服器擁有兩個網卡,ens32(VMnet8)的IP位址為192.168.200.111屬于公司的内網通信網絡;網卡ens34(Vmnet2)的IP位址為172.16.1.1屬于公司的公網通信網絡。公司注冊的域名有網站伺服器:www.crushlinux.com和郵件伺服器:mail.crushlinux.com。
案例需求:
- 來自Internet的客戶機解析www.crushlinux.com和mail.crushlinux.com域名時考慮伺服器的安全性,需解析為公司的公網位址172.16.1.1。使其通過公司的網關伺服器轉發後通路網站和郵件伺服器。
- 來自公司區域網路中的客戶機解析www.crushlinux.com和mail.crushlinux.com域名時考慮到使用者通路速度分别解析為伺服器區域網路位址192.168.200.112和192.168.200.113。使其通過公司區域網路直接通路相應伺服器。
- 客戶機切換網絡模式,模拟内網與公網位址進行解析測試。
10.1、前期環境準備
[root@localhost ~]# ip a | grep ens
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.200.111/24 brd 192.168.200.255 scope global ens32
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 172.16.1.1/24 brd 172.16.1.255 scope global ens34
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0
setenforce: SELinux is disabled
[root@localhost ~]# yum -y install bind
10.2、修改/etc/named.conf主配置檔案中為不同網絡的客戶機位址準備不同的zone區域設定,各自使用獨立的資料檔案
[root@localhost ~]# vim /etc/named.conf
options {
directory "/var/named";
};
view "LAN" {
match-clients { 192.168.200.0/24; }; //比對區域網路的用戶端
zone "crushlinux.com" IN {
type master;
file "crushlinux.zheng.lan";
};
};
view "WAN" {
match-clients { any; }; //比對網際網路的用戶端
zone "crushlinux.com" IN {
type master;
file "crushlinux.zheng.wan";
};
};
10.3、分别建立不同的區域資料檔案
[root@localhost ~]# cd /var/named/
[root@localhost named]# vim crushlinux.zheng.lan
$TTL 86400
@ IN SOA crushlinux.com. admin.crushlinux.com. (
2019011001
3H
15M
1W
1D
)
IN NS ns.crushlinux.com.
IN MX 10 mail.crushlinux.com.
ns IN A 192.168.200.111
www IN A 192.168.200.112
mail IN A 192.168.200.113
[root@localhost named]# vim crushlinux.zheng.wan
$TTL 86400
@ IN SOA crushlinux.com. admin.crushlinux.com. (
2019011001
3H
15M
1W
1D
)
IN NS ns.crushlinux.com.
IN MX 10 mail.crushlinux.com.
ns IN A 172.16.1.1
www IN A 172.16.1.1
mail IN A 172.16.1.1
[root@localhost named]# chgrp named crushlinux.zheng.*
[root@localhost named]# ls -l crushlinux.zheng.*
-rw-r--r-- 1 root named 229 1月 10 23:51 crushlinux.zheng.lan
-rw-r--r-- 1 root named 214 1月 10 23:52 crushlinux.zheng.wan
[root@localhost named]# systemctl restart named
10.4、客戶機設定網絡模式為VMnet8,DNS伺服器指向為192.168.200.111,解析測試
C:\Users\Crushlinux>nslookup www.crushlinux.com
伺服器: UnKnown
Address: 192.168.200.111
名稱: www.crushlinux.com
Address: 192.168.200.112
C:\Users\Crushlinux>nslookup mail.crushlinux.com
伺服器: UnKnown
Address: 192.168.200.111
名稱: mail.crushlinux.com
Address: 192.168.200.113
10.5、客戶機設定網絡模式為VMnet2,DNS伺服器指向為172.16.1.1,解析測試
C:\Users\Crushlinux>nslookup www.crushlinux.com
伺服器: UnKnown
Address: 172.16.1.1
名稱: www.crushlinux.com
Address: 172.16.1.1
C:\Users\Crushlinux>nslookup mail.crushlinux.com
伺服器: UnKnown
Address: 172.16.1.1
名稱: mail.crushlinux.com
Address: 172.16.1.1
11、DNS view的多種應用方式
11.1、match-clients直接指定位址
[root@localhost ~]# vim /etc/named.conf
options {
directory "/var/named";
};
view "LAN" {
match-clients { 192.168.200.0/24; }; //比對區域網路的用戶端
zone "crushlinux.com" IN {
type master;
file "crushlinux.zheng.lan";
};
};
view "WAN" {
match-clients { any; }; //比對網際網路的用戶端
zone "crushlinux.com" IN {
type master;
file "crushlinux.zheng.wan";
};
};
11.2、基于acl通路控制清單
[root@localhost ~]# vim /etc/named.conf
options {
directory "/var/named";
};
acl lan { 192.168.200.0/24; }; //定義通路控制清單
acl wan { any; };
view "LAN" {
match-clients { lan; }; //比對區域網路的用戶端
zone "crushlinux.com" IN {
type master;
file "crushlinux.zheng.lan";
};
};
view "WAN" {
match-clients { wan; }; //比對網際網路的用戶端
zone "crushlinux.com" IN {
type master;
file "crushlinux.zheng.wan";
};
};
11.3、基于通路控制檔案
[root@localhost ~]# cat /var/named/lan.txt
acl lan {
192.168.200.0/24;
};
[root@localhost ~]# cat /var/named/wan.txt
acl wan {
any;
};
[root@localhost ~]# vim /etc/named.conf
[root@localhost ~]# cat /etc/named.conf
options {
directory "/var/named";
};
include "/var/named/lan.txt";
include "/var/named/wan.txt";
view "LAN" {
match-clients { lan; };
zone "crushlinux.com" IN {
type master;
file "crushlinux.zheng.lan";
};
};
view "WAN" {
match-clients { wan; };
zone "crushlinux.com" IN {
type master;
file "crushlinux.zheng.wan";
};
};
12、建構智能DNS域名解析伺服器
随着原中國電信集團按南北地域分家,新的中國電信和網通集團随即成立,網際網路的骨幹網也被一分為二了,北有網通、南有電信。從此,細心的網民可以發現,有些經常通路的網站速度一下子慢了下來,有時候還有通路不到的情況出現。例如北方地區的網絡使用者通路中國網通的伺服器會非常快,而通路中國電信的伺服器時,感覺非常慢。這種現象不僅影響了網站的通路量,更嚴重的是它直接影響了一些經營性網站的經濟效益。據分析,産生這個問題的根本原因是中國電信分家之後,電信與網通之間的互連存在問題。雖然資訊産業部已經在規劃南北互通計劃,但在今後相當長的一段時期内,南北方網互連的問題還會長期存在。
智能DNS解析是針對電信和網通互聯互通不暢的問題推出的一種DNS解決方案。
智能DNS域名解析伺服器能自動判斷通路者的IP位址并根據IP位址所屬的營運商不同可為其解析出對應營運商伺服器的IP位址,使網通使用者通路到網通伺服器,電信使用者通路到電信伺服器,而不需要使用者進行選擇。避免使用者通路跨營運商導緻使用者通路速度緩慢。
例如一個企業網站站點帶寬租用了三個營運商的帶寬:電信、網通、移動,同樣有三個來自不同營運商網絡的通路使用者,那電信使用者通路企業網站時,智能DNS會進行自動判斷,根據IP來源營運商,為其解析為電信營運商IP位址,使使用者通路同營運商伺服器;其他營運商的使用者通路的也同理,如下圖所示。
智能DNS政策解析還可以實作就近通路機制。有些使用者在國外和國内都放置了伺服器,使用我們的DNS政策解析服務可以讓國外的網絡使用者通路你國外的伺服器,國内的使用者通路國内的伺服器,進而使國内外的使用者都能迅速的通路到你的伺服器。
智能DNS作用
- 雙線路的機房:服務本身有兩個IP,一個電信IP,一個網通IP或者其他線路。
- 鏡象網站:在網通及電信的機房放置多個相同的鏡象站點, 讓不同的地方客戶通路不同的站點。
- 負載均衡:對于流量比較大的網站,可以把流量配置設定到幾台不同的伺服器上,以提高網站速度。
- 個性化站點服務:比如通過IP表的重新定義, 讓國外的客戶自動通路英文版的網站; 讓國内的客戶自動通路中文版的網站。
- CDN(内容分發網絡)加速器:通過與squid、Nginx、Varnish等WEB緩存軟體結合實作CDN加速器。
- 防止DDOS(分布式拒絕服務)攻擊:通過多個線路分散攻擊流量,進而達到抵擋DDOS攻擊。
CDN加速基礎原理
智能DNS域名伺服器案例:
如下圖所示:Crushlinux工作室的DNS域名伺服器架設在公司網關伺服器中,網關伺服器擁有兩個網卡,ens32(VMnet8)的IP位址為192.168.200.111屬于公司的内網通信網絡;網卡ens34(Vmnet2)的IP位址為172.16.1.1(VMnet2)屬于公司的公網通信網絡。公司注冊的域名有網站伺服器:www.crushlinux.com和郵件伺服器:mail.crushlinux.com。
案例需求:
- 來自Internet的電信客戶機解析www.crushlinux.com和mail.crushlinux.com域名時需解析為電信位址172.16.1.12。
- 來自Internet的網通客戶機解析www.crushlinux.com和mail.crushlinux.com域名時需解析為網通位址172.16.1.13。
- 客戶機切換IP位址模拟電信與網通營運商進行解析測試。
12.1、前期環境準備
[root@localhost ~]# ip a | grep ens
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.200.111/24 brd 192.168.200.255 scope global ens32
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 172.16.1.1/24 brd 172.16.1.255 scope global ens34
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0
setenforce: SELinux is disabled
[root@localhost ~]# yum -y install bind
12.2、修改/etc/named.conf主配置檔案中為不同營運商的客戶機位址準備不同的zone區域設定,各自使用獨立的資料檔案
[root@localhost ~]# cat /var/named/wangtong.txt
acl wangtong {
172.16.1.3;
};
[root@localhost ~]# cat /var/named/dianxin.txt
acl dianxin {
172.16.1.2;
};
[root@localhost ~]# cat /etc/named.conf
options {
directory "/var/named";
};
include "/var/named/dianxin.txt";
include "/var/named/wangtong.txt";
view "dianxin" {
match-clients { dianxin; };
zone "crushlinux.com" IN {
type master;
file "crushlinux.zheng.dianxin";
};
};
view "wangtong" {
match-clients { wangtong; };
zone "crushlinux.com" IN {
type master;
file "crushlinux.zheng.wangtong";
};
};
12.3、分别建立不同的區域資料檔案
[root@localhost ~]# cd /var/named/
[root@localhost ~]# cat /var/named/crushlinux.zheng.dianxin
$TTL 86400
@ IN SOA crushlinux.com. admin.crushlinux.com. (
2019011001
3H
15M
1W
1D
)
IN NS ns.crushlinux.com.
IN MX 10 mail.crushlinux.com.
ns IN A 172.16.1.1
www IN A 172.16.1.12
mail IN A 172.16.1.12
[root@localhost ~]# cat /var/named/crushlinux.zheng.wangtong
$TTL 86400
@ IN SOA crushlinux.com. admin.crushlinux.com. (
2019011001
3H
15M
1W
1D
)
IN NS ns.crushlinux.com.
IN MX 10 mail.crushlinux.com.
ns IN A 172.16.1.1
www IN A 172.16.1.13
mail IN A 172.16.1.13
[root@localhost named]# chgrp named crushlinux.zheng.*
[root@localhost named]# ls -l crushlinux.zheng.*
-rw-r--r-- 1 root named 229 1月 10 23:51 crushlinux.zheng.lan
-rw-r--r-- 1 root named 214 1月 10 23:52 crushlinux.zheng.wan
[root@localhost named]# systemctl restart named
12.4、客戶機設定網絡模式為VMnet2,IP位址為172.16.1.2模拟電信使用者,解析測試
C:\Users\Crushlinux>nslookup www.crushlinux.com
伺服器: UnKnown
Address: 172.16.1.1
名稱: www.crushlinux.com
Address: 172.16.1.12
12.5、客戶機設定網絡模式為VMnet2,IP位址為172.16.1.3模拟網通使用者,解析測試
C:\Users\Crushlinux>nslookup www.crushlinux.com
伺服器: UnKnown
Address: 172.16.1.1
名稱: www.crushlinux.com
Address: 172.16.1.13
13、擷取不同營運商的IP位址範圍
https://github.com/clangcn/everyday-update-cn-isp-ip
根據APNIC的最新IP位址清單及whois資訊,每日0點(中原標準時間)生成的各主要營運商IP位址段。
中國電信 IP位址段:(http://ispip.clang.cn/chinatelecom.html)
中國聯通(網通)IP位址段:(http://ispip.clang.cn/unicom_cnc.html)
中國移動 IP位址段:(http://ispip.clang.cn/cmcc.html)
中國鐵通 IP位址段:(http://ispip.clang.cn/crtc.html)
中國教育網 IP位址段:(http://ispip.clang.cn/cernet.html)
中國其他ISP IP位址段:(http://ispip.clang.cn/othernet.html)
[root@localhost ~]# cat ispip.sh
#!/bin/bash
url="http://ispip.clang.cn/"
for i in chinatelecom unicom_cnc cmcc crtc cernet othernet
do
wget $url$i.html -O /tmp/$i.txt
sed -n \'/^[0-9]/ s/<br>/;/gp\' /tmp/$i.txt | sed "1iacl $i {" | sed \'$a};\' > /var/named/$i.txt
done
[root@localhost ~]# chmod +x ispip.sh
[root@localhost ~]# crontab -e
* */5 * * * /usr/sbin/ntpdate pool.ntp.org > /dev/null 2>&1
05 0 * * * /bin/bash /root/ispip.sh
[root@localhost ~]# systemctl restart crond