簡介
DNS(Domain Name System,域名系統),因特網上作為域名和IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析(或主機名解析)。DNS協議運行在UDP協議之上,使用端口號53。
一 DNS and BIND
DNS: Domain Name Service,協議(C/S, 53/udp, 53/tcp);應用層協議;
BIND:Bekerley Internat Name Domain, ISC (www.isc.org)
DNS查詢類型:
遞歸查詢
迭代查詢
DNS資源記錄:
DNS服務器中域名與IP地址相互轉換的映射信息以文本形式存儲在其區域解析中,每一行表示一對對應關系,稱之為資源記(RR Resource Record),每一條資源記錄都包含域名、IP地址和其它屬性信息。
資源記錄定義的格式:
語法:name[TTL]IN rr_type value
name:資源記錄引用的域對象名,可以是單臺主機或者整個域,字段值: "."是根域 "@"是默認域,即當前域
TTL: 生存時間字段,以秒為單位定義該資源記錄的信息存放在DNS緩存中的時間長度。此字段缺省采用SOA記錄中的最小TTL值(即1小時)
IN : 固定關鍵字
rr_type:資源記錄類型
(1)SOA:Start Of Authority,起始授權記錄;一個區域解析庫有且僅能有一個SOA記錄而必須為解析庫的第一條記錄;
(2)A:internet Address,作用,A記錄,成為主機記錄,DNS名稱到IP地址的映射,用于正向解析
(3)AAAA: FQDN –> IPv6地址主機記錄
(4)PTR: PoinTeR,IP –> IP地址到DNS名稱的映射,用于反向解析
(5)NS: Name Server,專用于標明當前區域的DNS服務器
(6)CNAME:Canonical Name,別名記錄
(7)MX: Mail eXchanger,郵件交換器,用于告知郵件服務器進程將郵件發往指定的另一臺郵件服務器
value: 有多部分組成
(1) 當前區域的主DNS服務器的FQDN,也可以使用當前區域的名字;
(2) 錄前區域管理員的郵箱地址;但地址中不能使用@符號,一般用.替換,例如linuxedu.magedu.com;
(3) (主從服務協調屬性的定義以及否定的答案的統一的TTL)
二 BIND的安裝配置
dns服務,程序包名bind,程序名named
程序包:
bind#提供服務
bind-libs#提供庫文件
bind-utils#測試工具
系統安裝環境:centos 6.7
關閉SELINUX:setenforce 0 #立即生效 (實際是寬容模式)
配置防火墻:iptables -F(清除防火墻規則)或者是關閉iptables
域名:test.com
主DNS的IP:192.168.1.7
從DNS的IP:192.168.1.5
1.bind 的安裝
yum -y install bind #依賴關系會自動解決安裝
查看一下bind生成的文件和路徑信息
rpm -ql bind
/etc/named.conf #主配置文件
/etc/named.rfc1912.zones #主配置文件的輔助區域配置文件
/etc/rc.d/init.d/named #服務啟動腳本
/etc/rndc.conf #域名服務遠程控制工具
/etc/rndc.key #rndc的消息完整性驗證key
/usr/sbin/named #主運行程序
/usr/sbin/named-checkconf #配置文件測試工具,測試語法錯誤
/usr/sbin/named-checkzone #區域解析庫文件測試工具
/usr/sbin/rndc #域名服務遠程控制工具
/usr/sbin/rndc-confgen #密鑰生成工具
/var/named #區域解析文件存放位置
/var/named/slaves #從服務器由主服務器同步過來區域文件的存放位置
/var/run/named #服務啟動后產生的進程
/var/named/named.ca #DNS根服務器信息
注意:
(1) 一臺物理服務器可同時為多個區域提供解析;
(2) 必須要有根區域文件;named.ca
(3) 應該有兩個(如果包括ipv6的,應該更多)實現localhost和本地回環地址的解析庫;
主配置文件格式:
全局配置:options {}
日志子系統配置:logging {}
區域定義:本機能夠為哪些zone進行解析,就要定義哪些zone;
zone "ZONE_NAME" IN {}
注意:任何服務程序如果期望其能夠通過網絡被其它主機訪問,至少應該監聽在一個能與外部主機通信的IP地址上;
緩存名稱服務器的配置:
監聽外部地址即可;
2.配置主配置文件:/etc/named.conf
注意這里面不需要的用//注釋掉就可以了啊
options { listen-on port 53 { 192.168.1.7; 127.0.0.1; }; #定義監聽的端口以及監聽ip地址 // listen-on-v6 port 53 { ::1; }; #ipv6地址和端口的配置 directory "/var/named"; #定義bind的工作目錄 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 { localhost; }; #允許那些客戶端來查詢,默認localhost為內置acl recursion yes; #允許遞歸 // dnssec-enable yes; #這幾行是跟DNS安全相關的,建議關閉此功能 // dnssec-validation yes; // dnssec-lookaside auto; /* Path to ISC DLV key */ // bindkeys-file "/etc/named.iscdlv.key"; // managed-keys-directory "/var/named/dynamic"; }; 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"; #配置文件包含這個文件的內容
3.定義區域解析庫文件:/etc/named.rfc1912.zones
zone "localhost.localdomain" IN { #域名,IN為固定格式 type master; #類型,master|slave|hint|forward 這幾種 file "named.localhost"; #區域解析配置文件,在options定義的工作目錄下 allow-update { none; }; #動態數據更新,默認是不接受 }; zone "localhost" IN { type master; file "named.localhost"; allow-update { none; }; }; zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN { type master; file "named.loopback"; allow-update { none; }; }; zone "1.0.0.127.in-addr.arpa" IN { #反向域 type master; file "named.loopback"; allow-update { none; }; }; zone "0.in-addr.arpa" IN { type master; file "named.empty"; allow-update { none; }; }; zone "test.com" IN { type master; file "test.com.zone"; allow-update { none;}; }; zone "1.168.192.in-addr.arpa" { type master; file "192.168.1.zone"; };
4.創建區域解析庫文件:/var/named/test.com.zone
$TTL 86400 $ORIGIN test.com. @ IN SOA ns1.test.com. admin.test.com ( #定義SOA記錄 2016030701 #序列號 1H #版本號刷新時間 5M #重試時間 7D #過期時長 1D ) #否定答案的TTL值 IN NS ns1 IN NS ns2 IN MX 10 mx1 #MX記錄以及優先級 IN MX 20 mx2 ns1 IN A 192.168.1.7 ns2 IN A 192.168.1.5 mx1 IN A 192.168.1.13 mx2 IN A 192.168.1.14 www IN A 192.168.1.7 www IN A 192.168.1.5 pop IN CNAME WWW #別名記錄
5.創建反向區域解析庫文件:/var/named/192.168.1.zone
$TTL 86400 $ORIGIN 1.168.192.in-addr.arpa. @ IN SOA ns1.test.com. admin.test.com ( 2016030701 1H 5M 7D 1D ) IN NS ns1.test.com. IN NS ns2.test.com. 7 IN PTR ns1.test.com. #將A記錄全改成PTR記錄,提供反向解析 7 IN PTR www.test.com. 13 IN PTR mx1.test.com. 5 IN PTR ns2.test.com. 5 IN PTR www.test.com. 14 IN PTR mx2.test.com.
6.由于默認named服務有named用戶身份運行,因此修改解析庫文件的屬組為named,權限改為640
cd /var/named/
chmod 640 test.com.zone
chmod 640 1.168.192.zone
chown :named test.com.zone
7.檢查zone配置文件是否有錯誤
named-checkzone "test.com" /var/named/test.com.zone
named-checkzone "1.168.192.in-addr.arpa" /var/named/1.168.192.zone
named-checkconf
8.測試命令
(1)host [-t type] name [SERVER]
例子:host -t A www.test.com 192.168.1.7
(2)dig [-t type] name [@SERVER] [query options]
dig用于測試dns系統,因此,不會查詢hosts文件進行解析
查詢選項:
+[no]trace:跟蹤解析過程
+[no]recurse:進行遞歸解析
測試反向解析:
dig -x IP @SERVER
模擬區域傳送:
dig -t axfr ZONE_NAME @SERVER
例如:dig -t axfr test.com @192.168.1.7
(3)nslookup命令:
nslookup [-option] [name | -] [server]
交互式模式:
nslookup>
server IP: 指明使用哪個DNS server進行查詢;
set q=RR_TYPE: 指明查詢的資源記錄類型;
NAME: 要查詢的名稱;
9.啟動DNS服務并進行正向解析測試
service named start #如果你已經啟動過服務的話直接 service named reload
dig -t A www.test.com @192.168.1.7
dig -t MX mail.test.com @192.168.1.7
10.進行逆向解析測試
dig -x 192.168.1.5 @192.168.1.7
三 主從復制(根據以上繼續配置從服務器)
1.配置從服務器的主配置文件:/etc/named.conf
2.啟動named服務
service named start
netstat -nlp | grep :53
3.定義區域解析庫文件:/etc/named.rfc1912.zones
在文件最后的部分添加這幾行
4.重載主配置文件和區域解析庫文件并查看從主服務器同步過來的文件
rndc reload
主從復制:
1、應該為一臺獨立的名稱服務器;
2、主服務器的區域解析庫文件中必須有一條NS記錄是指向從服務器;
3、從服務器只需要定義區域,而無須提供解析庫文件;解析庫文件應該放置于/var/named/slaves/目錄中;
4、主服務器得允許從服務器作區域傳送;
5、主從服務器時間應該同步,可通過ntp進行;
6、bind程序的版本應該保持一致;否則,應該從高,主低;
DNS 子域授權和高級應用
http://www.www58058.com/12542
原創文章,作者:liangkai,如若轉載,請注明出處:http://www.www58058.com/12395