標籤:
安裝bind
yum install -y bind bind-chroot bind-utis
如果是Centos 5
# yum -y install bind caching-nameserver
檔案結構
# ll /etc/named.*
-rw-r----- 1 root named 1021 May 8 16:39 /etc/named.conf
-rw-r--r-- 1 root named 2389 Mar 10 23:55 /etc/named.iscdlv.key
-rw-r----- 1 root named 1073 May 9 11:27 /etc/named.rfc1912.zones
-rw-r--r-- 1 root named 487 Jul 19 2010 /etc/named.root.key
# tree /var/named/
/var/named/
├── chroot
│ ├── dev
│ │ ├── null
│ │ ├── random
│ │ └── zero
│ ├── etc
│ │ ├── localtime
│ │ ├── named
│ │ ├── named.conf
│ │ ├── named.iscdlv.key
│ │ ├── named.rfc1912.zones
│ │ ├── named.root.key
│ │ ├── pki
│ │ │ └── dnssec-keys
│ │ └── rndc.key
│ ├── usr
│ │ └── lib64
│ │ └── bind
│ └── var
│ ├── log
│ ├── named
│ │ ├── 199.168.192.zone
│ │ ├── app.com.zone
│ │ ├── chroot
│ │ │ ├── dev
│ │ │ │ ├── null
│ │ │ │ ├── random
│ │ │ │ └── zero
│ │ │ ├── etc
│ │ │ │ ├── localtime
│ │ │ │ ├── named
│ │ │ │ ├── named.conf
│ │ │ │ ├── named.iscdlv.key
│ │ │ │ ├── named.rfc1912.zones
│ │ │ │ ├── named.root.key
│ │ │ │ ├── pki
│ │ │ │ │ └── dnssec-keys
│ │ │ │ └── rndc.key
│ │ │ ├── usr
│ │ │ │ └── lib64
│ │ │ │ └── bind
│ │ │ └── var
│ │ │ ├── log
│ │ │ ├── named
│ │ │ ├── run
│ │ │ │ └── named
│ │ │ │ ├── named.pid
│ │ │ │ └── session.key
│ │ │ └── tmp
│ │ ├── data
│ │ │ └── named.run
│ │ ├── dynamic
│ │ │ ├── managed-keys.bind
│ │ │ └── managed-keys.bind.jnl
│ │ ├── named.ca
│ │ ├── named.empty
│ │ ├── named.localhost
│ │ ├── named.loopback
│ │ └── slaves
│ ├── run
│ │ └── named
│ │ ├── named.pid
│ │ └── session.key
│ └── tmp
├── data
│ └── named.run
├── dynamic
│ ├── managed-keys.bind
│ └── managed-keys.bind.jnl
├── named.ca
├── named.empty
├── named.localhost
├── named.loopback
└── slaves
BIND設定檔儲存在:
/etc/named.conf 主設定檔
/var/named/ 域zone檔案位置
配置修改:
vim /etc/named.conf
vim /etc/named.rfc1912.zones
vim /var/named/app.com.zone
SOA表示授權開始/*上面的IN表示後面的資料使用的是INTERNET標準。而@則代表相應的網域名稱,如在這裡代表app.com,即表示一個網域名稱記錄定義的開始。而ns.app.com則是這個域的主網域名稱伺服器,而root.app.com.則是管理員的郵件地址。注意這是郵件地址中用.來代替常見的郵件地址中的@.而SOA表示授權的開始*/1 ; serial (d. adams) /*本行前面的數字表示設定檔的修改版本,格式是年月日當日修改的修改的次數,每次修改這個設定檔時都應該修改這個數字,要不然你所作的修改不會更新到網上的其它DNS伺服器的資料庫上,即你所做的更新很可能對於不以你的所配置的DNS伺服器為DNS伺服器的用戶端來說就不會反映出你的更新,也就對他們來說你更新是沒有意義的。*/1D ; refresh/*定義的是以為單位的重新整理頻率 即規定從網域名稱伺服器多長時間查詢一個主伺服器,以保證從伺服器的資料是最新的*/1H ;retry/*上面的這個值是規定了以秒為單位的重試的時間間隔,即當從服務試圖在主伺服器上查詢更時,而串連失敗了,則這個值規定了從服務多長時間後再試*/1W ; expiry/*上面這個用來規定從伺服器在向主服務更新失敗後多長時間後清除對應的記錄,上述的數值是以分鐘為單位的*/3H )/*上面這個資料用來規定緩衝伺服器不能與主服務聯絡上後多長時間清除相應的記錄*/
@ IN NS ns.app.com.
ns.app.com. IN A 192.168.199.61
www.app.com. IN A 192.168.199.60
mail.app.com. IN MX 5 ns.app.com.
nginx1 IN CNAME www
/*上面的第一列表示是主機的名字,省去了後面的域。NS:表示是這個主機是一個網域名稱伺服器,A:定義了一條A記錄,即主機名稱到IP地址的對應記錄MX 定義了一郵件記錄CNAME:定義了對應主機的一個別名
vim /var/named/199.168.192.zone
@ IN SOA ns.app.com. root.app.com. (12 ; Serial28800 ; Refresh14400 ; Retry3600000 ; Expire86400 ) ; MinimumIN NS ns.app.com.
/*以上的各關鍵字的含義跟app.com是相同的@ IN NS ns.app.com.
61 IN PTR ns.app.com.
60 IN PTR www.app.com.
60 IN PTR nginx1.app.com.
/*上面的第二列表示的是主機的IP地址。省略了網路地址部分。如61完整應該是:192.168.199.61
PTR:表示反向記錄最後一列表示的是主機的網域名稱。
文法檢測:
named-checkconf /etc/named.conf #設定檔檢測
named-checkzone app.com /var/named/app.com.zone #zone檔案檢測
防火牆設定:
vim /etc/sysconfig/iptables #配置防火牆連接埠
-AINPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-AINPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
-AINPUT -m state --state NEW -m tcp -p tcp --dport 953 -j ACCEPT
用戶端測試:
# cat /etc/resolv.conf
nameserver 192.168.199.61
# yum install bind-utils
nslookup
dig
host
故障排查
# tail -f /var/log/messages | grep named
# service named restart
zone xxx.xxx/IN: loading from master file xxx.xxx.xxx failed: permission denied
named[4089]: zone xxx.xxx /IN: not loaded due to errors.
報此錯誤是因為 named 服務是通過 named使用者身份啟動並執行沒有讀取/var/named下設定檔的許可權
執行 chmod +r /var/named/* 即可
參考:
Linux下搭建DNS伺服器和設定檔(named.conf)祥解
錯誤集合
Centos6.4環境下DNS伺服器的搭建
Centos 6 DNS Server 配置