配置 bind DNS 服務器器
DNS服務器常見概念
DNS服務概述:
DNS(Domain Name System--域名系統),在TCP/IP 網絡中有著非常重要的地位,能夠提供域名和IP地址的解析服務.
DNS是一個分布式數據庫,命名系統采用層次的邏輯結構,如同一顆倒置的樹,這個邏輯的樹形結構稱為域名空間,由於DNS劃分了域名空間,所以各機構可以使用自己的域名空間創建DNS信息.
註:DNS域名空間中,樹的最大深度不得超過127層,樹中每個節點最長可以存儲63個字符.
一些名詞的解釋:
- 域和域名
DNS樹的每個節點代表一個域.通過這些節點,對整個域名空間進行劃分,成為一個層次結構.
域名空間的每個域的名字,通過域名進行表示.
域名:通常由一個完全合格域名(FQDN)標識.FQDN能準確表示出其相對於DNS 域樹根的位置,也就是節點到DNS 樹根的完整表述方式,從節點到樹根采用反向書寫,並將每個節點用“.”分隔,對於DNS 域google 來說,其完全正式域名(FQDN)為google.com.
例如,google為com域的子域,其表示方法為google.com,而www為google域中的子域,可以使用www.google.com表示.
註意:通常,FQDN 有嚴格的命名限制,長度不能超過256 字節,只允許使用字符a-z,0-9,A-Z和減號(-).點號(.)只允許在域名標誌之間(例如“google.com”)或者FQDN 的結尾使用.
域名不區分大小.
由最頂層到下層,可以分成:根域、頂級域、二級域、子域.
Internet 域名空間的最頂層是根域(root),其記錄著Internet 的重要DNS 信息,由Internet域名註冊授權機構管理,該機構把域名空間各部分的管理責任分配給連接到Internet 的各個組織.
“.”全球有13個根(root)服務器
DNS 根域下面是頂級域,也由Internet 域名註冊授權機構管理.共有3 種類型的頂級域.
組織域:采用3 個字符的代號,表示DNS 域中所包含的組織的主要功能或活動.比如com 為商業機構組織,edu 為教育機構組織,gov 為政府機構組織,mil 為軍事機構組織,net 為網絡機構組織,org 為非營利機構組織,int 為國際機構組織.
地址域:采用兩個字符的國家或地區代號.如cn 為中國,kr 為韓國,us 為美國.
反向域:這是個特殊域,名字為in-addr.arpa,用於將IP 地址映射到名字(反向查詢).
對於頂級域的下級域,Internet 域名註冊授權機構授權給Internet 的各種組織.當一個組織獲得了對域名空間某一部分的授權後,該組織就負責命名所分配的域及其子域,包括域中的計算機和其他設備,並管理分配域中主機名與IP 地址的映射信息.
2、區(Zone)
區是DNS 名稱空間的一部分,其包含了一組存儲在DNS 服務器上的資源記錄.
使用區的概念,DNS 服務器回答關於自己區中主機的查詢,每個區都有自己的授權服務器.
3、主域名服務器與輔助域名服務器
當區的輔助服務器啟動時,它與該區的主控服務器進行連接並啟動一次區傳輸,區輔助服務器定期與區主控服務器通信,查看區數據是否改變.如果改變了,它就啟動一次數據更新傳輸.每個區必須有主服務器,另外每個區至少要有一臺輔助服務器,否則如果該區的主服務器崩潰了,就無法解析該區的名稱.
輔助服務器的優點:
1)容錯能力
配置輔助服務器後,在該區主服務器崩潰的情況下,客戶機仍能解析該區的名稱.一般把區的主服務器和區的輔助服務器安裝在不同子網上,這樣如果到一個子網的連接中斷,DNS 客戶機還能直接查詢另一個子網上的名稱服務器.
2)減少廣域鏈路的通信量
如果某個區在遠程有大量客戶機,用戶就可以在遠程添加該區的輔助服務器,並把遠程的客戶機配置成先查詢這些服務器,這樣就能防止遠程客戶機通過慢速鏈路通信來進行DNS 查詢.
3)減輕主服務器的負載
輔助服務器能回答該區的查詢,從而減少該區主服務器必須回答的查詢數.
4、DNS 相關概念
(1)DNS 服務器
運行DNS 服務器程序的計算機,儲存DNS 數據庫信息.DNS 服務器會嘗試解析客戶機的查詢請求.
在解答查詢時,如果DNS 服務器能提供所請求的信息,就直接回應解析結果,如果該DNS 服務器沒有相應的域名信息,則為客戶機提供另一個能幫助解析查詢的服務器地址,如果以上兩種方法均失敗,則回應客戶機沒有所請求的信息或請求的信息不存在.
(2)DNS 緩存
DNS 服務器在解析客戶機請求時,如果本地沒有該DNS 信息,則可以會詢問其他DNS 服務器,當其他域名服務器返回查詢結果時,該DNS 服務器會將結果記錄在本地的緩存中,成為DNS 緩存.當下一次客戶機提交相同請求時,DNS 服務器能夠直接使用緩存中的DNS 信息進行解析.
2)DNS查詢過程:
看一個DNS查詢過程:
通過8個步驟的解析過程就使得客戶端可以順利訪問www.163.com 這個域名,但實際應用中,通常這個過程是非常迅速的
<1> 客戶機提交域名解析請求,並將該請求發送給本地的域名服務器.
<2> 當本地的域名服務器收到請求後,就先查詢本地的緩存.
如果有查詢的DNS 信息記錄,則直接返回查詢的結果.
如果沒有該記錄,本地域名服務器就把請求發給根域名服務器.
<3> 根域名服務器再返回給本地域名服務器一個所查詢域的頂級域名服務器的地址.
<4> 本地服務器再向返回的域名服務器發送請求.
<5> 接收到該查詢請求的域名服務器查詢其緩存和記錄,如果有相關信息則返回客戶機查詢結果,否則通知客戶機下級的域名服務器的地址.
<6> 本地域名服務器將查詢請求發送給返回的DNS 服務器.
<7> 域名服務器返回本地服務器查詢結果(如果該域名服務器不包含查詢的DNS 信息,查詢過程將重復<6>、<7>步驟,直到返回解析信息或解析失敗的回應).
<8> 本地域名服務器將返回的結果保存到緩存,並且將結果返回給客戶機.
5、兩種查詢方式:
(1)遞歸查詢
遞歸查詢是一種DNS 服務器的查詢模式,在該模式下DNS 服務器接收到客戶機請求,必須使用一個準確的查詢結果回復客戶機.如果DNS 服務器本地沒有存儲查詢DNS 信息,那麽該服務器會詢問其他服務器,並將返回的查詢結果提交給客戶機.
(2)叠代查詢
DNS 服務器另外一種查詢方式為叠代查詢,當客戶機發送查詢請求時,DNS 服務器並不直接回復查詢結果,而是告訴客戶機另一臺DNS 服務器地址,客戶機再向這臺DNS 服務器提交請求,依次循環直到返回查詢的結果為止.
6、正向解析與反向解析
1)正向解析
正向解析是指域名到IP 地址的解析過程.
2)反向解析
反向解析是從IP 地址到域名的解析過程.反向解析的作用為服務器的身份驗證.
http://dns.aizhan.com/ #一個反向解析服務器
7、DNS資源記錄
1)SOA 資源記錄(全區唯一)
每個區在區的開始處都包含了一個起始授權記錄(Start of Authority Record),簡稱SOA 記錄.
SOA 定義了域的全局參數,進行整個域的管理設置.一個區域文件只允許存在唯一的SOA 記錄.
2)NS 資源記錄
NS(Name Server)記錄是域名服務器記錄,用來指定該域名由哪個DNS服務器來進行解析.每個區在區根處至少包含一個NS 記錄.
3)A 資源記錄
地址(A)資源記錄把FQDN 映射到IP 地址. 因為有此記錄,所以DNS服務器能解析FQDN域名對應的IP 地址.
4)PTR 資源記錄
相對於A 資源記錄,指針(PTR)記錄把IP地址映射到FQDN. 用於反向查詢,通過IP地址,找到域名.
5)CNAME 資源記錄
別名記錄(CNAME)資源記錄創建特定FQDN 的別名.用戶可以使用CNAME 記錄來隱藏用戶網絡的實現細節,使連接的客戶機無法知道真正的域名.
例:ping百度時,解析到了百度的別名服務器.百度有個cname=www.a.shifen.com.的別名
6)MX 資源記錄
郵件交換(MX)資源記錄,為DNS 域名指定郵件交換服務器.
郵件交換服務器是為DNS 域名處理或轉發郵件的主機.處理郵件指把郵件投遞到目的地或轉交另一不同類型的郵件傳送者.轉發郵件指把郵件發送到最終目的服務器,用簡單郵件傳輸協議SMTP 把郵件發送給離最終目的地最近的郵件交換服務器,或使郵件經過一定時間的排隊.
以上是相關概念.
模式: C/S 模式
DNS服務器的安裝及相關配置:
DNS服務器的安裝:
BIND 簡介:全稱為Berkeley Internet Name Domain(伯克利因特網名稱域系統).BIND 主要有三個版本:BIND4、BIND8、BIND9.
BIND8 融合了許多提高效率、穩定性和安全性的技術,而BIND9 增加了一些超前的理念:IPv6支持、密鑰加密、多處理器支持、線程安全操作、增量區傳送等等.
yum -y install bind bind-chroot bind-utils
bind ---> #該包為DNS服務的主程序包
bind-chroot ---> #該包提高安全性
# bind-chroot是bind的一個功能包,使bind可以在一個chroot的模式下運行.
# 也就是說,bind運行時的/(根)目錄,並不是系統真正的/(根)目錄,
# 只是系統中的一個子目錄.這樣做的目的是為了提高安全性.
# 因為在chroot模式下,bind只可以方位這個子目錄的範圍.
# 而不能進入這個子目錄外其他的地方.
bind-utils ---> #該包為客戶端工具,默認安裝,用於搜索余名指令
DNS服務器的使用:
/etc/init.d/named <start | restart | stop | status >
或
service named <start | restart | stop | status >
#<start 啟動 | restart 重啟 | stop 停止 | status 狀態 >
chkconfig add named #添加named開機啟動項
chkconfig named on #設置named開機自啟動
chkconfig --list named #查看named開機啟動狀態
DNS服務器監聽端口:
vim /etc/services
PORT: udp/tcp 53 ---> 客戶端查詢
PORT: udp/tcp 953 ---> 主從服務器同步
DNS服務器配置文件:
rpm -ql bind
/etc/named.conf ---> 核心配置文件
沒有安裝bind-chroot情況下,可以備份配置文件後,直接修改/etc/name.conf.
(推薦)安裝了bind-chroot情況下,直接運行
/etc/init.d/named start
後,執行mount命令,在對/var/named/chroot/etc/named.conf 進行修改
[root@xiaogan120 ~]# /etc/init.d/named start
Generating /etc/rndc.key: [ OK ]
Starting named: [ OK ]
[root@xiaogan120 ~]# mount
/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/sda5 on /var type ext4 (rw)
/dev/sr0 on /mnt type iso9660 (ro)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/etc/named on /var/named/chroot/etc/named type none (rw,bind)
/var/named on /var/named/chroot/var/named type none (rw,bind)
/etc/named.conf on /var/named/chroot/etc/named.conf type none (rw,bind)
/etc/named.rfc1912.zones on /var/named/chroot/etc/named.rfc1912.zones type none (rw,bind)
/etc/rndc.key on /var/named/chroot/etc/rndc.key type none (rw,bind)
/usr/lib64/bind on /var/named/chroot/usr/lib64/bind type none (rw,bind)
/etc/named.iscdlv.key on /var/named/chroot/etc/named.iscdlv.key type none (rw,bind)
/etc/named.root.key on /var/named/chroot/etc/named.root.key type none (rw,bind)
配置文件詳解:
vim /var/named/chroot/etc/named.conf #啟動服務後,盡量使用這個路徑.
options :對全局生效,定義了監聽地址和端口,目錄,臨時目錄,狀態目錄等配置信息
logging : 日誌信息
zone : 針對某個區域生效
重點說一下type參數:
type 字段指定區域的類型,對於區域的管理至關重要,一共分為六種:
1. Master:
主DNS 服務器:擁有區域數據文件,並對此區域提供管理數據
2. Slave:
輔助DNS 服務器:擁有主DNS 服務器的區域數據文件的副本,輔助DNS 服務器會從主DNS服務器同步所有區域數據.
3. Stub:
stub 區域和slave 類似,但其只復制主DNS 服務器上的NS 記錄而不像輔助DNS 服務器會復制所有區域數據.
4. Forward:
一個forward zone 是每個域的配置轉發的主要部分.一個zone 語句中的type forward可以包括一個forward 和/或forwarders 子句,它會在區域名稱給定的域中查詢.如果沒有forwarders 語句或者forwarders 是空表,那麽這個域就不會有轉發,消除了options 語句中有關轉發的配置.
5. Hint:根域名服務器的初始化組指定使用線索區域hint zone,當服務器啟動時,它使用根線索來查找根域名服務器,並找到最近的根域名服務器列表.
----------------- /var/named/chroot/etc/named.conf -------------------
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
// 在/usr/share/doc/bind*/sample/ 文件夾中可查卡named配置案例
options {
listen-on port 53 { any; }; #監聽地址,和端口 IPV4
listen-on-v6 port 53 { any; }; #監聽地址,和端口 IPV6
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; }; #允許解析的IP地址
recursion yes; # 開啟遞歸查詢
dnssec-enable yes; #開啟加密
dnssec-validation yes; #在遞歸查詢服務器上開啟DNSSEC驗證
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key"; #isc dlv key 的地址
managed-keys-directory "/var/named/dynamic"; #key的保存目錄
};
logging { #日誌
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
這裏也可以采用docker 的方式部署
docker run -d --name=bind --dns=127.0.0.1 \
--publish=192.168.6.146:53:53/udp --publish=192.168.6.146:10000:10000 --volume=/srv/docker/bind:/data --env=‘ROOT_PASSWORD=123456a?‘ sameersbn/bind:latest
實驗環境:
Server: xiaogan64 ( CentOS6.8 ) IP: 192.168.31.64 ( eth0 )
Client: xiaogan63 ( CentOS6.8 ) IP: 192.168.31.63 ( eth0 )
Client端:
配置網卡選擇vmnet6模式,ip地址 192.168.64.63
網關 192.168.64.1(server eth1 IPAddr)
Server端:
配置eth0 選擇橋接模式,IP 192.168.31.64
配置eth1 選擇vmnet6模式,IP 192.168.64.1
安裝DNS服務
yum -y install bind bind-chroot bind-utils
啟動bind服務
/etc/init.d/named start
service named start
添加開機啟動項及相關設置
chkconfig --list named
chkconfig add named
chkconfig named on
chkconfig named off
- 實戰:配置DNS服務器解析
修改配置文件:
vim /var/named/chroot/etc/named.conf
修改options如下:
options {
listen-on port 53 { any; }; # 監聽任意IPV4地址53號端口
listen-on-v6 port 53 { any; }; #IPV6 同上
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; }; # 允許任何地址通過
recursion yes; # 默認,支持遞歸查詢
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto; # 添加這一行
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
添加zone如下:
zone "xiaogan.cn" IN { # 指定區域名為 xiaogan.cn
type master; # 指定工作模式 為主dns服務器
file "xiaogan.cn.zone"; # 指定配置文件為 xiaogan.cn.zone
};
:wq保存退出!
建立zone配置文件 xiaogan.cn.zone
cd /var/named/chroot/var/named
cp -a named.localhost xiaogan.cn.zone
在拷貝配置文件的時候,盡量使用-a選項 (拷貝所有屬性)
不然,有時候,你都不知道怎麽回事,什麽都對了,就是實驗不成功!!!我就是因為這個問題糾結了好幾天!!!
# ls -l xiaogan.cn.zone
# -rw-r----- 1 root named 289 Oct 12 20:56 /var/named/chroot/var/named/xiaogan.cn.zone
vim xiaogan.cn.zone
修改如下: 配置信息 ; # 註釋信息
1 $TTL 1D
# 設置有效地址解析記錄的默認緩存時間,默認為1天也就是1D。
2 xiaogan.cn. IN SOA dns.xiaogan.cn. root.xiaogan.cn. (
# 起始授權記錄SOA 定義了域的全局參數,進行整個域管理設置,一個區域文件只允許存在唯一的SOA記錄
# 原來的@表示當前的域xiaogan.cn.,為方便大家記憶,我們這裏,直接寫成xiaogan.cn.
# 設置SOA記錄為:dns.xuegod.cn.
# 在此配置文件中寫域名時,都把根. 也要寫上。
# 域管理郵箱root.xuegod.cn.0由於@有其他含義,所以用“.”代替@。
3 0 ; serial
# 更新序列號,用於標示數據庫的變換,可以在10位以內,如果存在輔助DNS區域,建議每次更新完數據庫,手動加1.
4 1D ; refresh
# 刷新時間,從域名服務器更新該地址數據庫文件的間隔時間,默認為1天
5 1H ; retry
# 重試延時,從域名服務器更新地址數據庫失敗以後,等待多長時間,默認為為1小時
6 1W ; expire
# 到期,失效時間,超過該時間仍無法更新地址數據庫,則不再嘗試,默認為一周
7 3H ) ; minimum
# 設置無效地址解析記錄(該數據庫中不存在的地址)默認緩存時間。設置無效記錄,最少緩存時間為3小時
8 xiaogan.cn. NS dns.xiaogan.cn.
# 域名服務器記錄,指定該域名xiaogan.cn由dns.xiaogan.cn進行分析,每個區在區根處至少包含一個NS記錄.
9 dns.xiaogan.cn. A 192.168.31.1
# 把FQDN(完全合格域名標識)映射到IP地址
# 即 把 dns.xiaogan.cn 映射到 192.168.64.1 位置
10 www.xiaogan.cn. A 192.168.31.1
# 同上
11 www2.xiaogan.cn. CNAME www.xiaogan.cn.
# 定義別名 www.xiaogan.cn 的別名為 www2.xiaogan.cn
![image](http://images2015.cnblogs.com/blog/998420/201610/998420-20161012223110390-1698751307.jpg)
NS @ ;域名服務器記錄,用於設置當前域的DNS服務器的域名地址,
A 127.0.0.1 ; 設置域名服務器的A記錄,地址為ipv4的地址127.0.0.1,可以設置成192.168.100.102
AAAA ::1 ; 設置域名服務器的A記錄,地址為ipv6的地址。
保存退出,並重啟named服務
/etc/init.d/named restart
客戶端:修改DNS
vim /etc/resolv.conf
nameserver 192.168.31.64
為了避免不必要的誤解,我們同時也修改了網卡配置文件(因為計算機的DNS可以在這兩個文件中定義
/etc/reslove.conf
/etc/sysconfig/network-scripts/ifcfg-eth0)
ping www.xiaogan.cn
ping www2.xiaogan.cn
wps9374.tmp
2. 實戰:使用DNS支持遞歸查詢.
vim /var/named/chroot/etc/named.conf
20 # dnssec-enable yes;
21 # dnssec-validation yes;
22 # dnssec-lookaside auto;
# 但是要把這三條內容註釋了,其它內容不用改,這樣客戶端才能通過這個DNS進行遞歸查詢。把dns加密通訊功能關閉,才可以和根服務器時行叠代查詢。
測試:
ping www.baidu.com
# 時好,時壞,我也不知道怎麽回事,更新一下時間就又好了,好神奇!!!
#### 三、搭建DNS轉發服務器
家庭路由器就是一個典型的轉發服務器
# 註意,開啟轉發,需要保證時間一致!!!
# ntpdate time.windows.com
1、vim /var/named/chroot/etc/named.conf
改:
把上面添加的
zone "xuegod.cn"IN{
type master;
file "xuegod.cn.zone";
};
這三行內容註釋或者刪除,再添加兩行內容:
forward only ; //僅執行轉發操作 ,only:僅轉發;first:先查找本地zone,再轉發
forwarders { 8.8.8.8; }; //指定轉發查詢請求的DNS服務器列表
即:
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
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; };
recursion yes; //允許遞歸查詢
#dnssec-enable yes; //註釋這三行
#dnssec-validation yes;
#dnssec-lookaside auto;
forward only ; //僅執行轉發操作 ,only:僅轉發;first:先查找本地zone,再轉發
forwarders { 8.8.8.8; }; //指定轉發查詢請求的DNS服務器列表
bindkeys-file "/etc/named.iscdlv.key";
};
四、搭建DNS主從服務器
1、搭建一個主DNS服務器A。配置內容如下:
[root@localhost etc]# vim named.conf
#dnssec-enable yes;
#dnssec-validation yes;
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { any ; };
listen-on-v6 port 53 { any; };
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; };
recursion yes;
#dnssec-enable yes;
#dnssec-validation yes;
#dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
}
zone "." IN {
type hint;
file "named.ca";
};
zone "xuegod.cn" IN {
type master;
file "xuegod.cn.zone";
allow-transfer { 192.168.31.0/24; };
#指定允許哪個網段的從DNS服務器,可以同步主DNS服務器zone文件,不寫默認為所有。
};
include "/etc/named.rfc1912.zones";
2、從DNS服務器的配置
主從時間一定要保持一致
安裝程序:
yum install bind bind-chroot bind-utils -y
[root@xuegod64 Packages]# service named restart
Stopping named: [ OK ]
Starting named: [ OK ]
[root@localhost etc]# vim named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
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; };
recursion yes;
bindkeys-file "/etc/named.iscdlv.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
zone "xuegod.cn" IN {
type slave;
file "slaves/xuegod.cn.zone.file";
masters { 192.168.31.64; };
};
include "/etc/named.rfc1912.zones";
註:這樣從DNS服務器就可以從主DNS服務器上獲取DNS解析記錄信息了。寫時註意slave slaves master 單詞的書寫,有的加s有的不加
重啟從DNS服務器會在:/var/named/chroot/var/named/slaves文件夾下自動創建一個文件xuegod.cn.zone.file 這個文件是從DNS服務器從主DNS服務器上獲取的數據這樣隨便一個DNS就可以獲取主DNS服務器的解析記錄,不安全,文章的後面會講如何進行主從認證。
註:主DNS記錄中應該有兩NS記錄,一條是主DNS的NS記錄,一條是從DNS服務器的域名記錄。
測試:
service named restart
ls /var/named/chroot/var/named/slaves/ #看到這個文件,說明成功了
xuegod.cn.zone.file
五、zone文件中的其它記錄信息。 通過DNS做負載均衡
編輯主DNS服務器上的配置文件:
cd /var/named/chroot/var/named
[root@localhost named]# vim xuegod.cn.zone
cat /var/named/chroot/var/named/xuegod.cn.zone
$TTL 1D
xuegod.cn. IN SOA dns.xuegod.cn. root.xuegod.cn. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
xuegod.cn. NS dns.xuegod.cn.
dns.xuegod.cn. A 192.168.31.64
www.xuegod.cn. 1 A 192.168.31.64 #DNS做簡單的負載均衡,1表示此記錄在客戶端保存1秒
www.xuegod.cn. 1 A 192.168.31.64
www.xuegod.cn. 1 A 192.168.31.1
www1.xeugod.cn. CNAME www.xuegod.cn.
xuegod.cn. MX 10 mail.xuegod.cn. #添加郵件記錄
mail.xuegod.cn. A 192.168.31.64
bbs.xuegod.cn. CNAME www.xuegod.cn.
六、DNS主從密鑰認證
主服務器重啟時,會主動給從服務器發送信息,讓從服務器更新自己的記錄,通訊端口采用TCP 的53端口。
註:TSIG (主從DNS的時間必須一樣)
1、同步時間:
vim /etc/ntp.conf //查看ntp服務器
ntpdate 0.rhel.pool.ntp.org #同步時間
2、生成密鑰,進行主從認證。
在主DNS服務器上操作。
rpm -qf `which dnssec-keygen`
bind-9.7.3-8.P3.el6.x86_64
(1)、dnssec-keygen -a hmac-md5 -b 128 -n HOST 名字
cd /var/named/chroot/
dnssec-keygen -a hmac-md5 -b 128 -n HOST abc #生成一對 對稱鑰匙
-a hmac-md5:采用hmac-md5加密算法。
-b 128:生成的密鑰長度為128位。
-n 密鑰類型。我們選擇主機類型:HOST 。
-n <nametype>: ZONE | HOST | ENTITY | USER | OTHER
(DNSKEY generation defaults to ZONE)
abc #為生成密鑰的名字
生成時速度有點慢,因為生成密鑰需要一些隨機事件,因此我們可以通過移動鼠標或執行
[root@xuegod63 etc]# find /
來產生一些隨機事件。
等待大約2分鐘,查看生成的密鑰對:
[root@xuegod63 chroot]# ls
dev etc Kabc.+157+36589.key Kabc.+157+36589.private usr var
[root@xuegod63 chroot]# cat Kabc.+157+54214.private
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: nVk1s0B6XVB4BFfkr+vdfQ== #這是密鑰
[root@xuegod63 chroot]# cat Kabc.+157+54214.key
abc. IN KEY 512 3 157 nVk1s0B6XVB4BFfkr+vdfQ==
(2)、修改主DNS配置:
[root@xuegod63 chroot]# vim /var/named/chroot/etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
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; };
recursion yes;
dnssec-enable yes; #取原來註釋
dnssec-validation yes; #取原來註釋
dnssec-lookaside auto; #取原來註釋
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
key abckey { #先定義密鑰的名字
algorithm hmac-md5;
secret "nVk1s0B6XVB4BFfkr+vdfQ==";
};
zone "xuegod.cn." IN {
type master;
file "xuegod.cn.zone";
allow-transfer { key abckey; }; #采用密鑰進行同步
};
include "/etc/named.rfc1912.zones";
重啟服務
(3)、從DNS 服務器:192.168.1.64:
#先定義密鑰
#采用密鑰進行同步
vim /var/named/chroot/etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
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; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
key abckey { #先定義密鑰名
algorithm hmac-md5;
secret "nVk1s0B6XVB4BFfkr+vdfQ==";
};
zone "xuegod.cn." IN {
type slave;
file "slaves/xuegod.cn.zone.file";
masters { 192.168.31.64 key abckey; }; #采用密鑰進行同步
};
include "/etc/named.rfc1912.zones";
重啟服務進行測試:
[root@xuegod63 chroot]# cd
[root@xuegod63 ~]# service named restart
Stopping named: . [ OK ]
Starting named: [ OK ]
[root@xuegod63 ~]#
從DNS服務器:
rm -rf /var/named/chroot/var/named/slaves/xuegod.cn.zone.file
ls /var/named/chroot/var/named/slaves/
測試工具:
nslookup 測試域名解析
(1)非交互式模式
語法: nslookup 域名或IP 地址
例:
root@xuegod63 chroot]# nslookup www.xuegod.cn
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: www.xuegod.cn
Address: 112.124.185.97
(2)交互模式
[root@xuegod63 ~]# nslookup
> www.g.cn
Server: 192.168.31.64
Address: 192.168.31.64#53
Non-authoritative answer:
Name: www.g.cn
Address: 203.208.49.178
Name: www.g.cn
Address: 203.208.49.179
Name: www.g.cn
Address: 203.208.49.180
Name: www.g.cn
Address: 203.208.49.176
Name: www.g.cn
Address: 203.208.49.177
dig命令:
linux下使用dig命令來查詢域名信息,當然也可以使用nslookup,但dig比nslookup更方便更強大一些。
安裝:
[root@xuegod63 ~]# rpm -qf `which dig`
bind-utils-9.7.3-8.P3.el6.x86_64
例:
使用114.114.114.114
DNS服務器解析www.xuegod.cn
[root@xuegod63 ~]# dig @114.114.114.114 www.xuegod.cn
; <<>> DiG 9.7.3-P3-RedHat-9.7.3-8.P3.el6 <<>> @114.114.114.114 www.xuegod.cn
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23192
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.xuegod.cn. IN A
;; ANSWER SECTION:
www.xuegod.cn. 30 IN A 112.124.185.97
;; Query time: 19 msec
;; SERVER: 114.114.114.114#53(114.114.114.114)
;; WHEN: Wed Mar 11 21:02:29 2015
;; MSG SIZE rcvd: 47
補充:雙線智能DNS:
智能DNS(Bind-view):
智能DNS的原理很簡單:在用戶解析一個域名的時候,判斷一下用戶 的IP,然後跟DNS服務器內部的IP表匹配一下,看看用戶是電信還是網通用戶,然後給用戶返回對應的IP地址。目前的域名服務運營商不提供智能DNS服務,所以必須自行架設DNS服務或者使用網上免費的智能DNS服務,如DNSPOD.
https://www.dnspod.cn/
那我們為什麽要使用智能DNS服務器:1、因為不同ISP廠商有競爭,使得我們成為受害者,細心的網友一定會發現,南方的網友訪問北方的網站一般都比較慢,北方的網友訪問南方的網站也很慢。這些都是廠商之間的競爭導致的。
http://gupt12.blog.51cto.com/7651206/1263525
http://linuxfun.me/?p=1023
配置 bind DNS 服務器器