※DNS基礎知識:
DNS(Domain Name Service):域名解析服務,應用層協議。
BIND:實現DNS服務的一種軟件。
DNS監聽的端口:53/TCP,53/UDP
DNS查詢類型:遞歸查詢,迭代查詢
DNS的兩種解析方式:正向解析(FQDN ---> IP),反向解析(IP --->FQDN)
區域解析庫:由衆多資源記錄組成;
資源記錄(RR)類型:
SOA:Start Of Authority,起始授權記錄;一個區域解析庫有且僅能有一個SOA記錄,而必須爲解析庫的第一條記錄;
A:internet Address,作用,FQDN --> IP
AAAA: FQDN --> IPv6
PTR: PoinTeR,IP --> FQDN
NS: Name Server,專用於標明當前區域的DNS服務器
CNAME:Canonical Name,別名記錄
MX: Mail eXchanger,郵件交換器(標明域內誰是郵件服務器)
資源記錄定義格式:
語法:name [TTL] IN rr_type value
例如:ns1 1D IN A 192.168.1.111
※bind:
bind程序包:
bind: | 主程序 |
bind-libs: | 庫文件 |
bind-utils: | 測試程序 |
配置文檔:
服務腳本: | /etc/rc.d/init.d/named |
主配置文件: | /etc/named.conf, /etc/named.rfc1912.zones, /etc/rndc.key |
解析庫文件: | /var/named/ZONE_NAME.ZONE |
準備實驗環境:
操作系統:CentOS 6.6
bind版本:bind-9.8.2-0.37.rc1.el6.x86_64
關閉防火牆:service iptables stop
關閉selinux:setenforce 0
主服務器IP:192.168.1.111(正反解析的主服務器都在此主機)
從服務器IP:192.168.1.200(正反解析的從服務器都在此主機)
◎正向解析配置:(主DNS服務器)
1,對/etc/named.conf稍作修改,使得監聽所有本機IP,以及允許任何人解析,並註釋掉dnssec的內容。
[root@localhost named]# vim /etc/named.conf
listen-on port 53 { any; }; 監聽在本機所有IP地址上
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 no;
// dnssec-validation no;(註釋掉了dnssec的內容)
// 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 {
typehint;
file"/var/named/named.ca";
};
include "/etc/named.rfc1912.zones";
//include"/etc/named.root.key";開始時候無法解析外網域名,註釋掉這一行就可以解析了,暫時不知爲何。
2,在/etc/named.rfc1912.zones中定義新的區域
[root@localhost named]# vim /etc/named.rfc1912.zones
zone "localhost" IN {
typemaster;
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 {
typemaster;
file"named.loopback";
allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
typemaster;
file"named.loopback";
allow-update { none; };
};
zone "0.in-addr.arpa" IN {
typemaster;
file"named.empty";
allow-update { none; };
};
//新定義的區域liaobin.com
zone "liaobin.com" IN {
type master; 定義爲主DNS服務器,其他可選:(master|slave|hint|forward)
file "liaobin.com.zone"; 區域文件位置
allow-transfer{ 192.168.1.200; };允許192.168.1.200這個服務器區域傳送
};
3,創建定義好的區域的區域文件
[root@localhost named]# vim/var/named/liaobin.com.zone
$TTL 1D 宏定義TTL爲一天
$ORIGIN liaobin.com.
@ IN SOA ns1.liaobin.com. admin.liaobin.com (
2015112201;序列號
2H ;刷新時間
5M;重試時間
7D ;過期時間
1D ;否定答案的TTL值
)
IN NS ns1;(IN前邊省略的部分被$ORIGIN的值替換)
IN NS ns2;(這兩行的意思是ns1 ns2是liaobin.com域的DNS服務器)
IN NS mx1;(兩個郵件服務器mx1 mx2)
IN NS mx2
ns1 IN A 192.168.1.111;(指定DNS服務器的IP地址)
ns2 IN A 192.168.1.200
mx1 IN A 192.168.1.111;(指定郵件服務器的IP地址)
mx2 IN A 192.168.1.200
www IN A 192.168.1.111;(A記錄,解析www.liaobin.com)
web IN CNAME www ;(設置web爲www的別名)
4,簡單配置完成,重啓服務,測試。
◎反向解析配置:
1,在/etc/named.rfc1912.zones 中定義反向解析區域,新增以下配置:
zone "1.168.192.in-addr.arpa." IN {
typemaster;
file"1.168.192.zone";
allow-transfer{ 192.168.1.200; }; 允許192.168.1.200這個服務器區域傳送
};
2,在/var/named/下新建1.168.192.zone區域文件:
[root@localhost named]# vim/var/named/1.168.192.zone
$TTL 1D
$ORIGIN 1.168.192.in-addr.arpa.
@ IN SOA ns1.liaobin.com. admin.liaobin.com (
2015112201
2H
5M
7D
1D )
IN NS ns1.liaobin.com.
IN NS ns2.liaobin.com.
111 IN PTR ns1.liaobin.com. ;111後面會自動添加$ORIGIN的值
200 IN PTR ns2.liaobin.com.
111 IN PTR www.liaobin.com. ;定義反向解析192.168.1.111的值爲www.liaobin.com.
3.反向解析配置完成,重啓服務,測試。
◎主從同步配置:(以上主服務器都已經配置好,接下來只需要配置從服務器即可。)
1,切換到從服務器192.168.1.200操作
2,打開/etc/named.conf稍作配置修改
[root@localhost slaves]# vim /etc/named.conf
options {
listen-on port 53 { any; }; 監聽在所有地址端口
//listen-on-v6 port 53 { ::1; }; 註釋掉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; 註釋掉dnssec相關內容
/*Path to ISC DLV key */
//bindkeys-file "/etc/named.iscdlv.key";
// managed-keys-directory "/var/named/dynamic";
};
3,在配置文件/etc/named.rfc1912.zones中添加從服務器的區域
zone "liaobin.com" IN {
type slave; 正向解析的從服務器
masters { 192.168.1.111; }; 主服務器爲192.168.1.111
file "/var/named/slaves/liaobin.com.zone"; 區域文件放在slaves目錄;因爲slaves目錄named纔有寫權限
};
zone "1.168.192.in-addr.arpa." {
type slave; 反向解析的從服務器
masters { 192.168.1.111; }; 主服務器爲192.168.1.111
file "/var/named/slaves/1.168.192.zone"; 區域文件放在slaves目錄
};
4,配置完成,重啓服務,測試。
◎測試命令簡單用法:
dig命令:用於測試dns系統,因此,不會查詢hosts文件進行解析;
dig[-t type] name [@SERVER] [query options]
查詢選項:
+[no]trace:跟蹤解析過程
+[no]recurse:進行遞歸解析
例如:dig -t A www.baidu.com @192.168.1.111 +trace
測試反向解析:
dig-x IP @SERVER
例如:dig -x 192.168.1.111 @192.168.111
模擬區域傳送:
dig-t axfr ZONE_NAME @SERVER
例如:dig -t axfr liaobin.com @172.16.100.11
host命令:
host[-t type] name [SERVER]
例如:
nslookup命令:
nslookup[-option] [name | -] [server]
例如:
nslookup交互模式:
nslookup>
serverIP: 指明使用哪個DNS server進行查詢;
setq=RR_TYPE: 指明查詢的資源記錄類型;
NAME:要查詢的名稱;
例如:
◎ rndc簡單用法:
rndcCOMMAND
status:查看dns狀態
reload: 重載主配置文件和區域解析庫文件
reload zone: 重載區域解析庫文件
retransfer zone: 手動啓動區域傳送過程,而不管序列號是否增加;
notify zone: 重新對區域傳送發通知;
reconfig: 重載主配置文件
querylog: 開啓或關閉查詢日誌;(建議關閉,否則大量磁盤I/O產生影響性能,排錯時可啓動)
trace: 遞增debug級別;
trace LEVEL: 指定使用的級別;