一、DNS 介紹
DNS(Domain Name System,域名系統),因特網上作為域名和IP地址相互映射的一個分布式數據庫,DNS協議運行在UDP協議之上,使用端口號53(Domain), 953(mdc)。這兩個端口號。在RFC文檔中RFC 2181對DNS有規范說明,RFC 2136對DNS的動態更新進行說明,RFC 2308對DNS查詢的反向緩存進行說明。
二、安裝
[root@dns ~]# yum install -y bind bind-chroot bind-utils
DNS的主程序 bind,還有一個是bind-utils。為了DNS安全考慮,引入了bind-chroot.
chroot是通過將相關文件封裝到一個偽根目錄內,已達到安全防護的目的,一旦該程序被攻破,將只能訪問到偽根目錄內的內容,而並不是真實的根目錄。安裝了chroot這個服務,DNS服務的配置文件都會被安裝到我們的偽根里面,會在里面生成一個與原來服務完全相同的一個目錄體系結構。該服務的根目錄就會把 /var/named/chroot 當成是自己的根目錄,這樣就可以對我們的真實根目錄進行保護,所以建議大家在安裝網絡服務時最好都附帶安裝上chroot這個程序。
三、配置
BIND 的一些服務文檔位置和模板:
/usr/share/doc/bind-9.8.2/sample
BIND的主配置文件通常是保存在兩個位置:
/etc/named.conf -BIND服務主配置文件
/var/named/ -域的zone配置文件
安裝了 bind-chroot 這個程序以后,BIND的主配置文件存放位置就變了,此時BIND的主配置文件會被封裝到一個偽根目錄內,此時的配置文件位置為:
/var/named/chroot/etc/named.conf -BIND服務主配置文件
/var/named/chroot/var/named -域的zone配置文件
復制模板
[root@dns ~]# cp /etc/named.conf /etc/named.rfc1912.zones /var/named/chroot/etc/
[root@dns ~]# cp -rv /usr/share/doc/bind-9.8.2/sample/var/* /var/named/chroot/var/
修改配置:
1、聲明要解析的域名
[root@dns etc]# vim /var/named/chroot/etc/named.conf options { listen-on port 53 { 192.168.1.200; }; #監聽本地IP的53端口 //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; }; #接受任何人的DNS解析請求 recursion yes; dnssec-enable yes; dnssec-validation yes; /* 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"; }; //This is my DNS configuration zone "123.com" { //域名正向解析配置,建議寫在 named.rfc1912.zones 文件中 type master; // 指定我們要配置的是域主DNS服務器 file "123.com.zone"; // 指定域名的zone文件為123.com.zone ,一般都是以域名.zone 命名 allow-update { none; }; }; // ;號一定要加上,否則會報錯 zone "2.168.192.in-addr.arpa" { //域名反向解析配置,建議寫在 named.rfc1912.zones 文件中,格式一定為 xx.xx.xx.in-addr.arpa type master; file "192.168.2.zone"; allow-update { none; }; }; // End my configuration include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
2、配置域名和IP的對應關系。
[root@dns etc]# cd /var/named/chroot/var/named [root@dns etc]# cp named.localhost 123.com.zone [root@dns etc]# vim 123.com.zone $TTL 1D @ IN SOA @ 123.com. ( ; “.”號必須加上 2017012501 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 AAAA ::1 IN MX 10 mail.123.com. ; MX 添加一條 郵件記錄,郵件記錄后面要跟域名,它會遞歸的解析這個域名,所以該域名的資源記錄一定要有,后面的 “.” 一定要寫上 www IN A 192.168.2.10 ;添加A記錄 c1 IN A 192.168.2.11 c2 IN A 192.168.2.12
【注意:】MX記錄一定要定義資源記錄的最前面,否則就會解析不成功
$TTL = 1D(默認生存時間=1D、緩存服務器保存記錄的時間是1天。也就是告訴緩存服務器保存域的解析記錄為1天)
serial = 2017012501 (序列號=2017012501、我用配置日期作為序列號。這個序列號的作用是當輔域名服務器來復制這個文件的時候,如果號碼增加了就復制)
refresh = 1D (刷新=1D、輔域名服務器每隔24小時查詢一個主服務器)
retry = 1H (1 hour) (重試=3600秒、當輔域名服務試圖在主服務器上查詢更新時,而連接失敗了,輔域名服務器每隔1小時訪問主域名服務器)
expire = 1W (7 days) (到期=604800秒、輔域名服務器在向主服務更新失敗后,7天后刪除中的記錄。)
3、配置反向解析
[root@dns etc]# cp named.localhost 192.168.2.zone [root@dns etc]# vim 192.168.2.zone $TTL 1D @ IN SOA @ 123.com. ( 2017012501 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 AAAA ::1 10 IN PTR www.123.com.
11 IN PTR c1.123.com.
12 IN PTR c2.123.com.
4.啟動DNS服務
[root@dns etc]# service named restart
Stopping named: [ OK ]
Starting named: [FAILED]
查看日志:
[root@dns etc]# tail -f /var/log/messages

權限問題,查看named.rfc1912.zones 發現 其他用戶 沒有 r 權限.
添加權限
[root@dns etc]# chmod o+r /var/named/chroot/etc/named.rfc1912.zones
[root@dns etc]# service named restart
Stopping named: [ OK ]
Starting named: [ OK ]
5.測試,在自己PC上配置DNS,通過nslookup 進行測試。
