您可以通過點擊 右下角 的按鈕 來對文章內容作出評價, 也可以通過左下方的 關注按鈕 來關注我的博客的最新動態。
如果文章內容對您有幫助, 不要忘記點擊右下角的 推薦按鈕 來支持一下哦
如果您對文章內容有任何疑問, 可以通過評論或發郵件的方式聯系我: 501395377@qq.com / lzp501395377@gmail.com
如果需要轉載,請注明出處,謝謝!!
在上一篇隨筆中Linux學習之CentOS(三十四)--配置域主DNS服務器,詳細講解了如何在Linux環境下配置一個域的主DNS服務器,在本篇隨筆中將講解如何配置一個域的從DNS服務器以及緩存DNS服務器
一、域從DNS服務器的作用
我們在之前上一篇隨筆里有提到,DNS服務器一般有三種類型,一個是Primary DNS Server(主DNS服務器),一個是Secondary DNS Server(從DNS服務器),還有一個就是Caching DNS Server,我們配置一個域的DNS服務就是給其配置一個主DNS服務器,那么從DNS服務器主要是用來干嘛的呢?
配置一個域的從服務器一般是為了進行備份以及負載均衡使用,例如在生產環境中,我們給一個域配置的主DNS服務器崩潰了或者被惡意攻擊了,那么這個時候如果沒有配置從DNS服務器的話,我們的DNS服務器就不能提供DNS服務了,也就無法解析服務器上配置的域名了,或者說主服務器的訪問量特別大,此時我們配置從服務器來達到負載均衡的效果,因此我們通常在配置了一個主DNS服務器以后,還需要為其配置多個從DNS服務器
我們知道,我們為一個域配置的文件都是由主DNS服務器來控制的,我們的從服務器上的信息都是通過從主服務器上抓取得來的,當域slave服務器啟動的時候就會從域master服務器上抓取指定域的zone文件,所以我們配置從服務器的步驟就非常的簡單了
二、配置域從DNS服務器
我們這里通過虛擬機模擬了兩台Linux主機,一台主機就是昨天已經配置好的主DNS服務器,另外一台主機作為從DNS服務器來使用。
在進行域從DNS服務器配置之前,我們首先需要在主DNS服務器上進行一些配置:
(1)開放主DNS服務器上的53、953端口
因為我們的從服務器要通過網絡去抓取主服務器上的zone文件,所以我們要在iptables里面增加兩個規則,開放本機的53和953端口,這里為了實驗方便,就直接先將iptables清空了
[root@xiaoluo etc]# iptables -F [root@xiaoluo etc]# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
(2)將我們的SELinux設置成permissive
[root@xiaoluo etc]# getenforce Enforcing [root@xiaoluo etc]# setenforce 0 [root@xiaoluo etc]# getenforce Permissive
(3)修改一下主配置文件 named.conf
因為我們從服務器要通過網絡來訪問主服務器進行zone文件的抓取,所以我們要在 named.conf 主配置文件里面添加從服務器的IP地址進去,因為我們默認是指定了本機IP,這樣就只能我們的本機使用BIND服務,所以我們需要將從服務器的IP地址也寫進去,或者說不指定開放53、953端口的IP地址,這樣其他主機也就能夠通過網絡訪問到這台主機的DNS服務了
這是昨天配置的named.conf文件,我們這里就將 listen-on port 那兩行代碼刪除即可
/* Sample named.conf BIND DNS server 'named' configuration file for the Red Hat BIND distribution. See the BIND Administrator's Reference Manual (ARM) for details, in: file:///usr/share/doc/bind-{version}/arm/Bv9ARM.html Also see the BIND Configuration GUI : /usr/bin/system-config-bind and its manual. */ options { // Put files that named is allowed to write in the data/ directory: directory "/var/named"; // "Working" directory //listen-on port 53 { any; }; listen-on port 53 { 127.0.0.1; }; //listen-on-v6 port 53 { any; }; listen-on-v6 port 53 { ::1; }; }; zone "cnblogs.com" { type master; file "cnblogs.com.zone"; };
修改后:
[root@xiaoluo etc]# vim named.conf /* Sample named.conf BIND DNS server 'named' configuration file for the Red Hat BIND distribution. See the BIND Administrator's Reference Manual (ARM) for details, in: file:///usr/share/doc/bind-{version}/arm/Bv9ARM.html Also see the BIND Configuration GUI : /usr/bin/system-config-bind and its manual. */ options { // Put files that named is allowed to write in the data/ directory: directory "/var/named"; // "Working" directory }; zone "cnblogs.com" { type master; file "cnblogs.com.zone"; };
(4)開啟我們的主DNS服務器的BIND服務
[root@xiaoluo etc]# service named start
Starting named: named: already running [ OK ]
主DNS服務器的配置就基本這樣子,接下來就是我們配置從DNS服務器的步驟了:
①首先我們也需要在從服務器上安裝BIND服務,這塊就省略了,具體安裝上一篇隨筆有詳細講解 Linux學習之CentOS(三十四)--配置域主DNS服務器
②在bind主配置文件中添加指定域的信息
我們只需要在named.conf配置文件下面添加如下信息就可:
zone "cnblogs.com" { type slave;
masters { 192.168.198.129; };
file "slaves/cnblogs.com.zone"
};
[root@slave etc]# cat named.conf /* Sample named.conf BIND DNS server 'named' configuration file for the Red Hat BIND distribution. See the BIND Administrator's Reference Manual (ARM) for details, in: file:///usr/share/doc/bind-{version}/arm/Bv9ARM.html Also see the BIND Configuration GUI : /usr/bin/system-config-bind and its manual. */ options { directory "/var/named"; // "Working" directory }; zone "cnblogs.com" { type slave; // 指定這是從DNS服務器 masters { 192.168.198.129; }; // 因為從DNS服務器要抓取主DNS服務器上的zone文件,這里要指定主DNS服務器的IP地址,注意:IP地址要用{}括起來,且以;結尾,前后都有空格 file "slaves/cnblogs.com.zone"; // 從服務器默認抓取到的zone文件通常都保存在了 slaves 這個目錄下
};
③關閉從服務器上的SELinux
因為要通過網絡來訪問主服務器,所以這里也需要將我們的SELinux設置成 permissive
[root@slave etc]# getenforce Enforcing [root@slave etc]# setenforce 0 [root@slave etc]# getenforce Permissive
【注意:】因為我們從主服務器上抓取文件到 slaves 這個目錄下是由 named 這個系統用戶來完成的,所以我們要保證slaves要有可寫權限,同時slaves的所屬用戶、所屬組都是 named
[root@slave named]# ls -l 總用量 32 drwxr-xr-x. 2 root root 4096 6月 6 22:52 data -rw-r--r--. 1 root root 56 6月 6 22:52 my.external.zone.db -rw-r--r--. 1 root root 56 6月 6 22:52 my.internal.zone.db -rw-r--r--. 1 root root 1892 6月 6 22:52 named.ca -rw-r--r--. 1 root root 152 6月 6 22:52 named.empty -rw-r--r--. 1 root root 152 6月 6 22:52 named.localhost -rw-r--r--. 1 root root 168 6月 6 22:52 named.loopback drwxr-xr-x. 2 root root 4096 6月 6 22:52 slaves [root@slave named]# chown named slaves/ [root@slave named]# chgrp named slaves/ [root@slave named]# ls -l 總用量 32 drwxr-xr-x. 2 root root 4096 6月 6 22:52 data -rw-r--r--. 1 root root 56 6月 6 22:52 my.external.zone.db -rw-r--r--. 1 root root 56 6月 6 22:52 my.internal.zone.db -rw-r--r--. 1 root root 1892 6月 6 22:52 named.ca -rw-r--r--. 1 root root 152 6月 6 22:52 named.empty -rw-r--r--. 1 root root 152 6月 6 22:52 named.localhost -rw-r--r--. 1 root root 168 6月 6 22:52 named.loopback drwxr-xr-x. 2 named named 4096 6月 6 22:52 slaves
④啟動我們從服務器上的BIND服務,或刷新我們的BIND服務配置
[root@slave etc]# service named start Generating /etc/rndc.key: [確定] 啟動 named: [確定]
⑤查看域的zone配置文件是否正常被抓取到了 /var/named/chroot/var/named/slaves/ 這個目錄當中
[root@slave slaves]# ls -l 總用量 12 -rw-r--r--. 1 named named 381 6月 6 23:20 cnblogs.com.zone -rw-r--r--. 1 root root 56 6月 6 22:52 my.ddns.internal.zone.db -rw-r--r--. 1 root root 56 6月 6 22:52 my.slave.internal.zone.db
我們看到,cnblogs.com.zone文件已經從主DNS服務器上抓取下來了
[root@slave slaves]# cat cnblogs.com.zone $ORIGIN . $TTL 86400 ; 1 day cnblogs.com IN SOA cnblogs.com. rname.invalid. ( 0 ; serial 86400 ; refresh (1 day) 3600 ; retry (1 hour) 604800 ; expire (1 week) 10800 ; minimum (3 hours) ) NS cnblogs.com. A 127.0.0.1 MX 10 mail.cnblogs.com. AAAA ::1 $ORIGIN cnblogs.com. mail A 192.168.1.222 www A 192.168.1.111
⑥將從DNS服務器的指向當前主機
這個時候我們的從DNS服務器已經配置好了,我們這時修改 /etc/resolv.conf 文件然后將 nameserver 指向本機
[root@slave slaves]# vim /etc/resolv.conf nameserver 127.0.0.1
⑦通過 host 或者 dig 命令來驗證我們的從DNS服務器是否能夠正常解析
// 查詢www.cnblogs.com的IP地址 [root@slave slaves]# dig www.cnblogs.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> www.cnblogs.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61233 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; QUESTION SECTION: ;www.cnblogs.com. IN A ;; ANSWER SECTION: www.cnblogs.com. 86400 IN A 192.168.1.111 ;; AUTHORITY SECTION: cnblogs.com. 86400 IN NS cnblogs.com. ;; ADDITIONAL SECTION: cnblogs.com. 86400 IN A 127.0.0.1 cnblogs.com. 86400 IN AAAA ::1 ;; Query time: 2 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Thu Jun 6 23:29:16 2013 ;; MSG SIZE rcvd: 107 // 查詢cnblogs.com這個域的郵件記錄 [root@slave slaves]# dig -t mx cnblogs.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t mx cnblogs.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3328 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 3 ;; QUESTION SECTION: ;cnblogs.com. IN MX ;; ANSWER SECTION: cnblogs.com. 86400 IN MX 10 mail.cnblogs.com. ;; AUTHORITY SECTION: cnblogs.com. 86400 IN NS cnblogs.com. ;; ADDITIONAL SECTION: mail.cnblogs.com. 86400 IN A 192.168.1.222 cnblogs.com. 86400 IN A 127.0.0.1 cnblogs.com. 86400 IN AAAA ::1 ;; Query time: 2 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Thu Jun 6 23:30:04 2013 ;; MSG SIZE rcvd: 124 // 查詢mail.cnblogs.com的IP地址 [root@slave slaves]# dig mail.cnblogs.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> mail.cnblogs.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47353 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; QUESTION SECTION: ;mail.cnblogs.com. IN A ;; ANSWER SECTION: mail.cnblogs.com. 86400 IN A 192.168.1.222 ;; AUTHORITY SECTION: cnblogs.com. 86400 IN NS cnblogs.com. ;; ADDITIONAL SECTION: cnblogs.com. 86400 IN A 127.0.0.1 cnblogs.com. 86400 IN AAAA ::1 ;; Query time: 1 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Thu Jun 6 23:30:36 2013 ;; MSG SIZE rcvd: 108
我們看到,我們的域名都能正常的解析成功,說明我們的從DNS服務器的配置就成功了
這個時候我們的客戶端既可以指向我們的主服務器,也可以指向我們的從服務器了,當主服務器發生故障時,從服務器就會接替主服務器進行工作,提供DNS服務
三、配置緩存DNS服務器
在上面以及前一篇隨筆中我們講解了如何配置一個主DNS服務器,以及從DNS服務器,但是一個DNS服務器可以既不是某個域的master服務器,也可以不是某個域的slave服務器,一個DNS服務器可以不包含任何域的配置信息,它將接收到的所有DNS查詢進行遞歸解析,將解析的結果返回給我們的查詢客戶端,並且將查詢結果緩存下來,這樣的服務器就稱之為Caching DNS Server
通常我們在一個局域網中配置一個緩存DNS服務器是為了加速網絡訪問
我們也可以在緩存服務器上配置一個上游的DNS服務器地址,緩存服務器可以給客戶提供一個上游DNS服務器的地址,只需通過加上以下一行語句在 named.conf 主配置文件即可:
forwarders { 218.30.19.40; };
[root@slave etc]# vim named.conf /* Sample named.conf BIND DNS server 'named' configuration file for the Red Hat BIND distribution. See the BIND Administrator's Reference Manual (ARM) for details, in: file:///usr/share/doc/bind-{version}/arm/Bv9ARM.html Also see the BIND Configuration GUI : /usr/bin/system-config-bind and its manual. */ options { directory "/var/named"; // "Working" directory forwarders { 218.30.19.40; }; // 一般上游的DNS服務器要更穩定,性能更好 forwarders forward 選項都要寫在 options 里面 }; zone "cnblogs.com" { type slave; masters { 192.168.198.129; }; file "slaves/cnblogs.com.zone"; };
我們還可以通過以下選項讓緩存服務器將所有的DNS查詢轉發到forwarders服務器上:
forward only;
至此,本篇隨筆的編寫就告一段落了,本篇隨筆詳細講解了如何配置一台從DNS服務器,講解了從服務器從主服務器上抓取zone配置文件的原理以及通過配置我們的緩存服務器來提高網絡性能.......