Bind服務器:
bind(Berkeley Internet Name Domain Service),它是一款實現DNS服務器的開源軟件,現在爲最廣泛的DNS服務器軟件
Socket: 套接字,及IP:port(IP地址端口對) 端口: TCP:0~65535 UDP:0~65535
注: 小於1024的端口爲知名端口,只有root用戶有權限開放和關閉。
1.bind的安裝
包名: bind
進程: named
協議: dns
使用端口: 53(tcp,udp)
相關的包:
[root@localhost ~]
# rpm -qa bind*
bind-utils-9.8.2-0.37.rc1.el6_7.4.x86_64
#提供一些客戶端工具
bind-9.8.2-0.37.rc1.el6_7.4.x86_64
#bind主程序包
bind-libs-9.8.2-0.37.rc1.el6_7.4.x86_64
#服務器端和客戶端使用的公共庫文件
bind-chroot-9.8.2-0.37.rc1.el6_7.4.x86_64
#將named進程的活動範圍限定在chroot目錄中,保證安全性
bind-devel-9.8.2-0.37.rc1.el6_7.4.x86_64
#開發使用的頭文件和庫文件(編譯安裝時使用)
[root@localhost ~]# yum install bind*
已加載插件:fastestmirror, refresh-packagekit, security
設置安裝進程
Loading mirror speeds from cached hostfile
* base: mirror.bit.edu.cn
* c6-media:
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
解決依賴關係
--> 執行事務檢查
---> Package bind.x86_64 32:9.8.2-0.37.rc1.el6_7.4 will be 安裝
---> Package bind-chroot.x86_64 32:9.8.2-0.37.rc1.el6_7.4 will be 安裝
---> Package bind-devel.x86_64 32:9.8.2-0.37.rc1.el6_7.4 will be 安裝
---> Package bind-dyndb-ldap.x86_64 0:2.3-8.el6 will be 安裝
---> Package bind-libs.x86_64 32:9.8.2-0.30.rc1.el6 will be 升級
---> Package bind-libs.x86_64 32:9.8.2-0.37.rc1.el6_7.4 will be an update
---> Package bind-sdb.x86_64 32:9.8.2-0.37.rc1.el6_7.4 will be 安裝
--> 處理依賴關係 libpq.so.5()(64bit),它被軟件包 32:bind-sdb-9.8.2-0.37.rc1.el6_7.4.x86_64 需要
---> Package bind-utils.x86_64 32:9.8.2-0.30.rc1.el6 will be 升級
---> Package bind-utils.x86_64 32:9.8.2-0.37.rc1.el6_7.4 will be an update
--> 執行事務檢查
---> Package postgresql-libs.x86_64 0:8.4.20-3.el6_6 will be 安裝
--> 完成依賴關係計算
依賴關係解決
==========================================================================================
軟件包 架構 版本 倉庫 大小
==========================================================================================
正在安裝:
bind x86_64 32:9.8.2-0.37.rc1.el6_7.4 updates 4.0 M
bind-chroot x86_64 32:9.8.2-0.37.rc1.el6_7.4 updates 74 k
bind-devel x86_64 32:9.8.2-0.37.rc1.el6_7.4 updates 383 k
bind-dyndb-ldap x86_64 2.3-8.el6 base 72 k
bind-sdb x86_64 32:9.8.2-0.37.rc1.el6_7.4 updates 311 k
正在升級:
bind-libs x86_64 32:9.8.2-0.37.rc1.el6_7.4 updates 886 k
bind-utils x86_64 32:9.8.2-0.37.rc1.el6_7.4 updates 186 k
爲依賴而安裝:
postgresql-libs x86_64 8.4.20-3.el6_6 updates 202 k
事務概要
==========================================================================================
Install 6 Package(s)
Upgrade 2 Package(s)
總下載量:6.0 M
確定嗎?[y/N]:y
下載軟件包:
(1/8): bind-9.8.2-0.37.rc1.el6_7.4.x86_64.rpm | 4.0 MB 00:04
(2/8): bind-chroot-9.8.2-0.37.rc1.el6_7.4.x86_64.rpm | 74 kB 00:00
(3/8): bind-devel-9.8.2-0.37.rc1.el6_7.4.x86_64.rpm | 383 kB 00:00
(4/8): bind-dyndb-ldap-2.3-8.el6.x86_64.rpm | 72 kB 00:00
(5/8): bind-libs-9.8.2-0.37.rc1.el6_7.4.x86_64.rpm | 886 kB 00:01
(6/8): bind-sdb-9.8.2-0.37.rc1.el6_7.4.x86_64.rpm | 311 kB 00:00
(7/8): bind-utils-9.8.2-0.37.rc1.el6_7.4.x86_64.rpm | 186 kB 00:00
(8/8): postgresql-libs-8.4.20-3.el6_6.x86_64.rpm | 202 kB 00:00
------------------------------------------------------------------------------------------
總計 677 kB/s | 6.0 MB 00:09
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Importing GPG key 0xC105B9DE:
Userid : CentOS-6 Key (CentOS 6 Official Signing Key) <[email protected]>
Package: centos-release-6-6.el6.centos.12.2.x86_64 (@anaconda-CentOS-201410241409.x86_64/6.6)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
確定嗎?[y/N]:y
運行 rpm_check_debug
執行事務測試
事務測試成功
執行事務
正在升級 : 32:bind-libs-9.8.2-0.37.rc1.el6_7.4.x86_64 1/10
正在安裝 : 32:bind-9.8.2-0.37.rc1.el6_7.4.x86_64 2/10
正在安裝 : postgresql-libs-8.4.20-3.el6_6.x86_64 3/10
正在安裝 : 32:bind-sdb-9.8.2-0.37.rc1.el6_7.4.x86_64 4/10
正在安裝 : 32:bind-chroot-9.8.2-0.37.rc1.el6_7.4.x86_64 5/10
正在安裝 : bind-dyndb-ldap-2.3-8.el6.x86_64 6/10
正在升級 : 32:bind-utils-9.8.2-0.37.rc1.el6_7.4.x86_64 7/10
正在安裝 : 32:bind-devel-9.8.2-0.37.rc1.el6_7.4.x86_64 8/10
清理 : 32:bind-utils-9.8.2-0.30.rc1.el6.x86_64 9/10
清理 : 32:bind-libs-9.8.2-0.30.rc1.el6.x86_64 10/10
Verifying : 32:bind-utils-9.8.2-0.37.rc1.el6_7.4.x86_64 1/10
Verifying : 32:bind-devel-9.8.2-0.37.rc1.el6_7.4.x86_64 2/10
Verifying : 32:bind-chroot-9.8.2-0.37.rc1.el6_7.4.x86_64 3/10
Verifying : 32:bind-9.8.2-0.37.rc1.el6_7.4.x86_64 4/10
Verifying : 32:bind-sdb-9.8.2-0.37.rc1.el6_7.4.x86_64 5/10
Verifying : 32:bind-libs-9.8.2-0.37.rc1.el6_7.4.x86_64 6/10
Verifying : bind-dyndb-ldap-2.3-8.el6.x86_64 7/10
Verifying : postgresql-libs-8.4.20-3.el6_6.x86_64 8/10
Verifying : 32:bind-utils-9.8.2-0.30.rc1.el6.x86_64 9/10
Verifying : 32:bind-libs-9.8.2-0.30.rc1.el6.x86_64 10/10
已安裝:
bind.x86_64 32:9.8.2-0.37.rc1.el6_7.4
bind-chroot.x86_64 32:9.8.2-0.37.rc1.el6_7.4
bind-devel.x86_64 32:9.8.2-0.37.rc1.el6_7.4
bind-dyndb-ldap.x86_64 0:2.3-8.el6
bind-sdb.x86_64 32:9.8.2-0.37.rc1.el6_7.4
作爲依賴被安裝:
postgresql-libs.x86_64 0:8.4.20-3.el6_6
更新完畢:
bind-libs.x86_64 32:9.8.2-0.37.rc1.el6_7.4 bind-utils.x86_64 32:9.8.2-0.37.rc1.el6_7.4
完畢!
安裝完成後bind會自動創建用戶named系統用戶
注: 由於早期的linux都爲root用戶權限,服務的複雜導致BUG越來越多,***利用漏洞***系統,獲得root權限後控制了整個系統,爲了防止類似事件發生,服務軟件用root權限啓動,啓動後自動放棄root.由低權限的系統用戶(named)來運行進程,如果******也只有很低級的權限而不至於控制整個系統。
2.bind 的配置文件:
[root@localhost ~]
# rpm -qc bind
/etc/logrotate
.d
/named
/etc/named
.conf
#主配置文件
/etc/named
.iscdlv.Key
/etc/named
.rfc1912.zones
#區域配置文件
/etc/named
.root.Key
#根區域的key文件實現數字簽名
/etc/rndc
.conf
#遠程服務控制器的配置文件
/etc/rndc
.Key
#遠程控制器加密密鑰
/etc/sysconfig/named
/var/named/named
.ca
#13個根文件存放位置
/var/named/named
.empty
/var/named/named
.localhost
/var/named/named
.loopback
主配置文件: /etc/named.conf
定義區域
定義各區域的全局配置
定義視圖
定義日誌
註釋省略:
options { #服務器的全局配置選項及一些默認設置
listen-on port 53 { any; }; #監聽端口,也可寫爲 { 127.0.0.1; 192.168.139.46; }
listen-on-v6 port 53 { ::1; }; #對ip6支持
directory "/var/named"; #區域文件存儲目錄
dump-file "/var/named/data/cache_dump.db"; #dump cach的目錄directory
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
pid-file "/var/run/named/named.pid"; #存着named的pid
forwarders { 168.95.1.1; 139.175.10.20; }; # 如果域名服務器無法解析時,將請求交由168.95.1.1; 139.175.10.20來解析
allow-query { any; }; #指定允許進行查詢的主機,當然是要所有的電腦都可以查啦
allow-transfer { none; }; #指定允許接受區域傳送請求的主機,說明白一點就是輔dns定義,比如輔dns的ip是192.168.139.5,那麼可以這樣定義{ 192.168.139.5; },要不然主輔dns不能同步,當然,{}裏的也可以用下面提到的acl。
// those options should be used carefully because they disable port
// randomization
// query-source port 53;
// query-source-v6 port 53;
};
logging { #指定服務器日誌記錄的內容和日誌信息來源
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
#這裏定義一個acl列表
acl "acl1" {
192.168.139.0/200; 192.168.1.0/200
};
view localhost_resolver { #定義一個視圖
match-clients { any; }; #查詢者的源地址,any表示localhost_resolver視圖對任何主機開放,如果寫成{ acl1; },那麼就只有acl1表裏的ip可以遞歸查詢了
match-destinations { any; }; #查詢者的目標地址,這裏也可以寫成{ localhost; acl1; }
recursion yes; 3設置進行遞歸查詢
include "/etc/named.rfc1912.zones"; #包含文件,這裏也就是載入/etc/named.rfc1912.zones
};
bind客戶端工具:
[root@localhost ~]
# rpm -ql bind-utils
/usr/bin/dig
#常用的DNS服務器測試工具
/usr/bin/host
#輕量級DNS測試工具
/usr/bin/nslookup
#DNS查詢工具,在衆多平臺都有使用
/usr/bin/nsupdate
#更新工具
/usr/share/man/man1/dig
.1.gz
#以上工具的man文檔
/usr/share/man/man1/host
.1.gz
/usr/share/man/man1/nslookup
.1.gz
/usr/share/man/man1/nsupdate
.1.gz
host命令: host -t 資源記錄類型 名稱
[root@localhost ~]
# host -t A www.baidu.com #baidu的A記錄
www.baidu.com is an
alias
for
www.a.shifen.com.
www.a.shifen.com has address 119.75.217.109
www.a.shifen.com has address 119.75.218.70
3.dig命令的使用:
語法: dig -t 資源記錄類型(如NS A )名稱@server-IP
工作機制: 不加“@server-ip” 的話根據/etc/resolv.conf文件解析查詢
[root@localhost ~]
# cat /etc/resolv.conf
# Generated by NetworkManager
domain DHCP
search DHCP HOST
nameserver 124.207.160.106
nameserver 219.239.26.42
nameserver 144.144.144.144
#通過這些ip來查詢DNS
[root@localhost ~]# dig -t NS www.baidu.com #查詢百度的NS記錄
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 <<>> -t NS www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48075
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 # 表示權威應答
;; QUESTION SECTION:
;www.baidu.com. IN NS
;; ANSWER SECTION:
www.baidu.com. 506 IN CNAME www.a.shifen.com. #別名爲a.shifen.com
;; AUTHORITY SECTION:
a.shifen.com. 523 IN SOA ns1.a.shifen.com. baidu_dns_master.baidu.com. 1509110003 5 5 86400 3600#起始授權
;; Query time: 6 msec
;; SERVER: 124.207.160.106#53(124.207.160.106)# 通過第一個ip:124.207.160.106查詢,ip按順序來查詢
;; WHEN: Wed Sep 16 23:17:02 2015
;; MSG SIZE rcvd: 115
如果後邊加@server-ip則會跳過/etc/resole.conf配置文件,用指定DNS服務ip查詢
[root@localhost ~]# dig -t NS www.baidu.com @8.8.8.8
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 <<>> -t NS www.baidu.com @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9503
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;www.baidu.com. IN NS
;; ANSWER SECTION:
www.baidu.com. 291 IN CNAME www.a.shifen.com.
;; AUTHORITY SECTION:
a.shifen.com. 599 IN SOA ns1.a.shifen.com. baidu_dns_master.baidu.com. 1509110003 5 5 86400 3600
;; Query time: 154 msec
;; SERVER: 8.8.8.8#53(8.8.8.8) #指定的DNS查詢,ip 8.8.8.8
;; WHEN: Wed Sep 16 23:26:09 2015
;; MSG SIZE rcvd: 115
查詢反向解析: dig -x server-ip
[root@localhost ~]# dig -x 8.8.8.8 #反向解析google的域名服務
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 <<>> -x 8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12388
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 2#權威應答
;; QUESTION SECTION:
;8.8.8.8.in-addr.arpa. IN PTR
;; ANSWER SECTION:
8.8.8.8.in-addr.arpa. 62709 IN PTR google-public-dns-a.google.com.#google公共dns
;; AUTHORITY SECTION:
8.8.8.in-addr.arpa. 692 IN NS ns3.google.com. #google的反向解析
8.8.8.in-addr.arpa. 692 IN NS ns1.google.com.
8.8.8.in-addr.arpa. 692 IN NS ns4.google.com.
8.8.8.in-addr.arpa. 692 IN NS ns2.google.com.
;; ADDITIONAL SECTION:
ns1.google.com. 292900 IN A 216.239.32.10 #google的A記錄
ns3.google.com. 263708 IN A 216.239.36.10
;; Query time: 19 msec
;; SERVER: 124.207.160.106#53(124.207.160.106)
;; WHEN: Wed Sep 16 23:30:39 2015
;; MSG SIZE rcvd: 186
追蹤解析過程: dig -t 資源記錄類型 名稱 +trace
[root@localhost ~]# dig -t A www.baidu.com +trace
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 <<>> -t A www.baidu.com +trace
;; global options: +cmd
. 247435 IN NS i.root-servers.net.
. 247435 IN NS m.root-servers.net.
. 247435 IN NS f.root-servers.net.
. 247435 IN NS k.root-servers.net.
. 247435 IN NS b.root-servers.net.
. 247435 IN NS c.root-servers.net.
. 247435 IN NS a.root-servers.net.
. 247435 IN NS e.root-servers.net.
. 247435 IN NS h.root-servers.net.
. 247435 IN NS j.root-servers.net.
. 247435 IN NS l.root-servers.net.
. 247435 IN NS g.root-servers.net.
. 247435 IN NS d.root-servers.net. #首先找13臺根域
;; Received 496 bytes from 124.207.160.106#53(124.207.160.106) in 1193 ms
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS a.gtld-servers.net. #然後找.com.一級域
;; Received 503 bytes from 192.5.5.241#53(192.5.5.241) in 115 ms
baidu.com. 172800 IN NS dns.baidu.com.
baidu.com. 172800 IN NS ns2.baidu.com.
baidu.com. 172800 IN NS ns3.baidu.com.
baidu.com. 172800 IN NS ns4.baidu.com.
baidu.com. 172800 IN NS ns7.baidu.com. #再找baidu.com.二級域
;; Received 201 bytes from 192.42.93.30#53(192.42.93.30) in 252 ms
www.baidu.com. 1200 IN CNAME www.a.shifen.com.
a.shifen.com. 1200 IN NS ns4.a.shifen.com.
a.shifen.com. 1200 IN NS ns3.a.shifen.com.
a.shifen.com. 1200 IN NS ns1.a.shifen.com.
a.shifen.com. 1200 IN NS ns2.a.shifen.com.
a.shifen.com. 1200 IN NS ns5.a.shifen.com. #接着找到www三級域及到達。www.baidu.com.
;; Received 228 bytes from 61.135.165.235#53(61.135.165.235) in 12 ms
DNS(bind)服務的具體配置:
配置主要有:
正向解析
反向解析
輔助解析
主輔區域傳送
配置域主服務器
階段
1.在bind的主配置文件中添加該域
2.在/var/named中創建該域的zone文件
3.編輯zone文件添加需要的信息
4.測試是否有語法錯誤
5.設置區域文件的權限
6.檢測防火牆或selinux設置
7.啓動bind服務
8.使用host或nslookup命令 檢測域信息是否正常
首先在配置文件中添加域:vim /etc/named.conf
options {
listen-on port 53 { any; }; #把127.0.0.1本地修改爲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; };#localhost改爲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";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
zone "hong.com" IN { #添加正向解析域
type master;
file "hong.com.zone";
};
zone "0.168.192.in-addr.arpa" IN { #添加反向解析域
type master;
file "0.168.192.zone";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
接下來配置正向區域文件:
目錄位於; /var/named/
[root@localhost ~]
# cd /var/named/
[root@localhost named]
# ls
chroot data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@localhost named]
# cp named.localhost hong.com.zone #拷貝本地模板編輯到正向區域文件
[root@localhost named]
# vim hong.com.zone #vim編輯正向區域文件
$TTL 86400 #緩存時間
@ IN SOA ns.hong.com. admin.hong.com. ( #DNS服務器名
0 ; serial #序列號
1D ; refresh #服務器更新時間
1H ; retry #重新更新時間間隔
1W ; expire #多久之後提示失敗
3H ) ; minimum #緩存記憶時間
@ IN NS ns.hong.com.
@ IN MX 10 mail.hong.com. #10爲優先級,必須指定
ns IN A 192.168.0.107
mail IN A 192.168.0.107
www IN A 192.168.0.107
ftp IN CNAME mail
編輯反向區域文件:
[root@localhost named]# cp named.localhost 0.168.192.zone
[root@localhost named]# vim 0.168.192.zone
$TTL 86400
@ IN SOA ns.hong.com. admin.hong.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS ns.hong.com.
107 IN NS ns.hong.com.
107 IN PTR mail.hong.com.
107 IN PTR www.hong.com. #反向區域不需要指定CNAME記錄
配置好正向,反向區域文件後,我們檢查一下是否有語法錯誤:
named-checkconf
named-checkzone "反向區域名" /PATH/TO/反向區域名稱
[root@localhost named]
# named-checkconf
[root@localhost named]
# named-checkzone "0.168.192.zone" /var/named/0.168.192.zone
zone 0.168.192.zone
/IN
: 107.0.168.192.zone
/NS
'ns.hong.com'
(out of zone) has no addresses records (A or AAAA)
zone 0.168.192.zone
/IN
: loaded serial 0
OK
顯示OK說明配置語法沒有問題,這個OK很重要啊。。我的心都跟着跳啊。。。
接下來我們設置區域文件的權限:
文件屬主: root
文件屬組: named
權限爲: 640
[root@localhost named]
# chown root:named /var/named/hong.com.zone
[root@localhost named]
# chown root:named /var/named/0.168.192.zone
[root@localhost named]
# chmod 640 /var/named/hong.com.zone
[root@localhost named]
# chmod 640 /var/named/0.168.192.zone
[root@localhost named]
# ll hong.com.zone 0.168.192.zone
-rw-r-----. 1 root named 236 9月 17 00:50 0.168.192.zone
-rw-r-----. 1 root named 282 9月 17 00:40 hong.com.zone
配置防火牆(iptables)和selinux設置:
可用命令:getenforce #查詢selinux狀態
setenforce 0 #設置selinux
[root@localhost named]
# getenforce
Enforcing
#強制
[root@localhost named]
# setenforce 0
[root@localhost named]
# getenforce
Permissive
#現在表示selinux不起作用
設置防火牆: /etc/sysconfig/iptables
添加三條記錄把53和953端口放開
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-AINPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT #添加記錄通過53和952端口
-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
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
重啓防火牆: service iptables restart 即可
啓動bind服務:
service named start
配置host 文件:
/etc/resolv.conf 添加服務器ip地址
# Generated by NetworkManager
domain DHCP
search DHCP HOST
nameserver 124.207.160.106
nameserver 219.239.26.42
nameserver 144.144.144.144
nameserver 192.168.0.107
至此搭建成功,測試一下
我們使用本地windows系統測試一下
C:\Users\f>nslookup
默認服務器: bjdns.drpeng.com.cn
Address: 124.207.160.106
> server 192.168.0.108
默認服務器: [192.168.0.108]
Address: 192.168.0.108
> set q=PTR
> 192.168.0.108
服務器: [192.168.0.108]
Address: 192.168.0.108
108.0.168.192.in-addr.arpa name = mail.hong.com #反向解析成功
108.0.168.192.in-addr.arpa name = ns.hong.com
108.0.168.192.in-addr.arpa name = www.hong.com
0.168.192.in-addr.arpa nameserver = ns.hong.com
ns.hong.com internet address = 192.168.0.108
>#解析成功
> server 192.168.0.108
默認服務器: [192.168.0.108]
Address: 192.168.0.108
> set q=A
> www.hong.com
服務器: [192.168.0.108]
Address: 192.168.0.108
> set q=NS #查詢NS記錄
> hong.com
服務器: [192.168.0.108]
Address: 192.168.0.108
hong.com nameserver = ns.hong.com
ns.hong.com internet address = 192.168.0.108
>
> set q=CNAME #別名記錄
> ftp.hong.com
服務器: [192.168.0.108]
Address: 192.168.0.108
ftp.hong.com canonical name = mail.hong.com
hong.com nameserver = ns.hong.com
ns.hong.com internet address = 192.168.0.108
>
測試沒有問題,即可正向解析又可以反向解析。。
rndc的使用:
rndc(Remote Name Domain Controller)遠程名稱域控制器
rndc 通過一個 TCP 連接與名字服務器通信,發送經過數字簽名認證的命令。在當前版本的rndc 和 named 中,唯一
支持的認證算法是 HMAC-MD5,在連接的兩端使用共享密鑰。它爲命令請求和名字服務器的響應提供 TSIG類型的認
證。所有經由通道發送的命令都必須被一個服務器所知道的 key_id 簽名。
監聽端口:tcp:953
語法:
rndc [-b address] [-c config] [-s server] [-p port][-k key-file ] [-y key] [-V] command
command is one of the following:
reload Reload configuration file and zones. #重新加載配置文件和區域文件
reconfig Reload configuration file and new zones only. #重新加載配置文件和新的區域文件
freeze Suspend updates to all dynamic zones.
stats Write server statistics to the statistics file. #將服務器統計信息寫入統計文件中
stop Save pending updates to master files and stop the server.
halt Stop the server without saving pending updates.
flush Flushes all of the server's caches. #清空DNS緩存
status Display status of the server. #顯示bind服務器的工作狀態
rndc的調試和日誌:
調試:顯示程序運行中的詳細信息(會產生I/O,正常情況下建議關閉)
調試級別:0,1,2,3...
提升調試級別:
rndc trace
rndc trace LEVEL
rndc notrace
打開查詢日誌:記錄查詢動作(會增加磁盤I/O)
ndc querylog
[root@localhost named]
# rndc status
version: 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4
CPUs found: 1
worker threads: 1
number of zones: 21
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries
in
progress: 0
query logging is OFF
recursive clients: 0
/0/1000
tcp clients: 0
/100
server is up and running
輔助DNS配置:
新建一個虛擬機,這裏還是用CentOS6.6作爲輔助DNS
1. 同樣在輔助DNS服務器安裝bind服務並做相應的配置: 編輯/etc/named.rfc1912.zones,添加以下記錄:
zone "hong.com" IN {
type slave;
file "slaves/hong.com.zone";
masters{ 192.168.0.108; };
};
zone "0.168.192.in-addr.arpa" IN {
type slave;
file "slaves/0.168.192.zone";
masters{ 192.168.0.108; };
};
檢測一下語法是否有錯:
[root@localhost slaves]
# named-checkconf #沒有提示信息說明沒有錯誤
2. 編輯主DNS服務器所在的ns1主機上的區域文件/var/named/hong.com.zone 和/var/named/0.168.192.zone中添加相應記錄:
正向區域:
$TTL 86400
@ IN SOA ns1.hong.com. admin.hong.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS ns1
@ IN NS ns2 #添加NS記錄
@ IN MX 10 mail
ns1 IN A 192.168.0.108
ns2 IN A 192.168.0.106 #添加ns2的A記錄
mail IN A 192.168.0.108
www IN A 192.168.0.108
www IN A 192.168.0.106
ftp IN CNAME www
反向區域:
$TTL 86400
@ IN SOA ns1.hong.com. admin.hong.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS ns1.hong.com.
@ IN NS ns2.hong.com.#添加NS記錄
108 IN PTR ns1.hong.com.
106 IN PTR ns2.hong.com.#添加ns2PTR記錄
108 IN PTR www.hong.com.
106 IN PTR www.hong.com.#www記錄
108 IN PTR mail.hong.com.
添加完記錄同樣檢測一下語法:
[root@localhost named]
# named-checkconf
[root@localhost named]
# named-checkzone "hong.com.zone" /var/named/hong.com.zone
zone hong.com.zone
/IN
: loaded serial 0
OK
[root@localhost named]
# named-checkzone "0.168.192.zone" /var/named/0.168.192.zone
zone 0.168.192.zone
/IN
: loaded serial 0
OK
[root@localhost named]
#
沒有問題,在主DNS上測試一下是否有記錄
[root@localhost named]# dig -t NS hong.com @192.168.0.108
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 <<>> -t NS hong.com @192.168.0.108
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24224
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 2
;; QUESTION SECTION:
;hong.com. IN NS
;; ANSWER SECTION:
hong.com. 86400 IN NS ns1.hong.com.
hong.com. 86400 IN NS ns2.hong.com. #已經有ns2記錄
;; ADDITIONAL SECTION:
ns1.hong.com. 86400 IN A 192.168.0.108 #A記錄也已經存在
ns2.hong.com. 86400 IN A 192.168.0.106
;; Query time: 1 msec
;; SERVER: 192.168.0.108#53(192.168.0.108)
;; WHEN: Thu Sep 17 06:34:08 2015
;; MSG SIZE rcvd: 94
反向解析:
[root@localhost named]# dig -x 192.168.0.108 @192.168.0.108
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 <<>> -x 192.168.0.108 @192.168.0.108
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15453
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;108.0.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
108.0.168.192.in-addr.arpa. 86400 IN PTR ns1.hong.com.
108.0.168.192.in-addr.arpa. 86400 IN PTR www.hong.com.
108.0.168.192.in-addr.arpa. 86400 IN PTR mail.hong.com.
;; AUTHORITY SECTION:
0.168.192.in-addr.arpa. 86400 IN NS ns2.hong.com.#輔助ns2已經存在
0.168.192.in-addr.arpa. 86400 IN NS ns1.hong.com.
;; ADDITIONAL SECTION:
ns1.hong.com. 86400 IN A 192.168.0.108
ns2.hong.com. 86400 IN A 192.168.0.106 #對應的A記錄
;; Query time: 1 msec
;; SERVER: 192.168.0.108#53(192.168.0.108)
;; WHEN: Thu Sep 17 06:36:23 2015
;; MSG SIZE rcvd: 171
輔助DNS上查看一下是否同步
[root@localhost slaves]# dig -t axfr hong.com @192.168.0.108
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t axfr hong.com @192.168.0.108
;; global options: +cmd
hong.com. 86400 IN SOA ns1.hong.com. admin.hong.com. 0 86400 3600 604800 10800
hong.com. 86400 IN NS ns1.hong.com.
hong.com. 86400 IN NS ns2.hong.com.
hong.com. 86400 IN MX 10 mail.hong.com.
ftp.hong.com. 86400 IN CNAME www.hong.com.
mail.hong.com. 86400 IN A 192.168.0.108
ns1.hong.com. 86400 IN A 192.168.0.108
ns2.hong.com. 86400 IN A 192.168.0.106 #可以看到都已經同步過來
www.hong.com. 86400 IN A 192.168.0.108
www.hong.com. 86400 IN A 192.168.0.106
hong.com. 86400 IN SOA ns1.hong.com. admin.hong.com. 0 86400 3600 604800 10800
;; Query time: 1 msec
;; SERVER: 192.168.0.108#53(192.168.0.108)
;; WHEN: Wed Sep 16 18:42:44 2015
;; XFR size: 11 records (messages 1, bytes 263)
我們可以查看到輔助DNS服務器上是否有區域文件
[root@localhost slaves]
# ls
0.168.192.zone hong.com.zone
#正向反向區域文件已經存在
進入區域文件:
$ORIGIN .
$TTL 86400 ; 1 day
hong.com IN SOA ns1.hong.com. admin.hong.com. (
0 ; serial
86400 ; refresh (1 day)
3600 ; retry (1 hour)
604800 ; expire (1 week)
10800 ; minimum (3 hours)
)
NS ns1.hong.com.
NS ns2.hong.com.
MX 10 mail.hong.com.
$ORIGIN hong.com. #ORIGIN意思爲每個資源記錄末尾自動附加所定義的內容
ftp CNAME www
mail A 192.168.0.108
ns1 A 192.168.0.108
ns2 A 192.168.0.106
www A 192.168.0.108
A 192.168.0.106
#輔助DNS裏的區域文件是不能手動修改的。。由主DNS服務器同步而來。。
到此我們的服務配置完成。。。
DNS服務器的基本配置就這麼多哈,下面來簡單總結下:
1、每個DNS服務器必須要有一個對應的NS資源記錄;
2、創建slave的時候,其配置文件類型必須是type slve; 必須指定主服務器的 IP地址 ;
3、可以使用dig -t axfr test.com @server_IP 從主DNS服務器拉取所有解析庫資源記錄;
4、主輔同步完成後,將自動在slave服務器上的slaves/目錄下生成zone文件,這些區域文件是從主DNS同步過來的,一般爲只讀,不建議更改slave的zone文件;
5、在主DNS上修改區域文件時,必須將SOA記錄的serial加1 因爲slave是通過serial值來進行判斷更新的(windows系統上是自動完成的);
6、DNS的日誌默認全部保存在/var/log/messege 文件中;
7、DNS的解析依賴於解析庫,所以就算是所配置的內容是完全不存在的也可以解析(且正向解析和反向解析的解析庫是各自獨立的)。需要注意,正向解析裏沒有PTR記錄,而反向解析庫裏不需要A記錄、MX記錄和CNAME記錄