系統環境:CentOS Linux release 7.4.1708 (Core) 3.10.0-693.el7.x86_64
軟件版本:bind-chroot-9.9.4-51.el7_4.1.x86_64
服務器規划:1台主服務器、1台從服務器,主從服務器都作為DNS緩存服務器,啟用DNS轉發
主DNS服務器:10.20.20.2
從DNS服務器:10.20.20.3
一、安裝與主配置文件
1、安裝bind-chroot
CentOS7不同於6,只需要安裝bind-chroot,就會自動安裝主程序包bind和庫bind-libs。同時安裝bind-utils(包含host和dig程序的包)
# yum install bind-chroot bind-utils # systemctl start named-chroot.service # systemctl enable named-chroot.service
CentOS7下安裝了bind-chroot之后,若要使用named-chroot.service,則需要關閉named.service。兩者只能運行一個。
2、主配置文件named.conf
acl trusted { 192.168.10.0/24; #定義一個acl列表 }; options { listen-on port 53 { 10.20.20.2; }; #指定監聽端口和ip,可以指定多個ip listen-on-v6 port 53 { none; }; 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 { trusted; }; #允許查詢的客戶端列表 allow-recursion { trusted; }; #運行通過本服務器遞歸查詢的客戶端列表 forward first; #轉發模式,first選項代表首先查詢forwarders中的DNS服務器,如果查詢失敗,則從根服務器開始遞歸查詢(需要定義zone "."區域),only選項代表只查詢forwarders中的服務器,如果查詢失敗也不會繼續從根服務器進行遞歸查詢 forwarders { #轉發DNS查詢的權威DNS服務器列表 202.103.24.68; 202.103.44.150; 223.5.5.5; 223.6.6.6; 114.114.114.114; 8.8.8.8; }; recursion yes; #允許遞歸查詢 dnssec-enable no; #DNSSEC相關選項,國內的DNS服務器基本沒有配置DNSSEC,因此關閉 dnssec-validation no; bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; }; logging { channel default_debug { severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; #正向解析 zone "st.local" IN { #本地區域配置 type master; #主服務器 file "st.local.zone"; #區域解析文件,位於CHROOT-PATH/var/named/ allow-update { none; }; allow-transfer { 10.20.20.3; }; #允許同步區域的從服務器列表 notify yes; #定時通知從服務器刷新區域信息,時間間隔為區域解析文件中的refresh值 }; #反向解析 zone "20.20.20.in-addr.arpa" IN { type master; file "10.20.20.zone"; allow-update { none; }; allow-transfer { 10.20.20.3; }; notify yes; };
這里直接在named.conf里面寫zone的配置,也可以單獨寫到其他文件里,用include包含進來。zone里定義的區域解析文件位於CHROOT-PATH/var/named中,新建或cp的時候注意zone文件的權限,應定義為named用戶或歸屬named組。
二、區域解析文件
1、正向解析
$TTL 1D $ORIGIN st.local. @ IN SOA ns1.st.local. admin.st.local. ( 2017121106 ; serial 1D ; refresh #服務器刷新時間 1H ; retry #重新刷新的時間 1W ; expire #宣告失效的時間 3H ) ; minimum #緩存保留時間 NS ns1.st.local. NS ns2.st.local. IN MX 10 mail.st.local. ns1 IN A 10.20.20.2 ns2 IN A 10.20.20.3 mail IN A 10.20.20.2
如果修改區域解析文件后不能同步至從服務器,則需要更改serial值大於當前值。從服務器在同步主服務器時,會比對serial值,如果發現大於當前值,則立即同步。
2、反向解析
$TTL 1D $ORIGIN 20.20.10.in-addr.arpa. @ IN SOA ns1.st.local. admin.st.local. ( 2017121107 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS ns1.st.local. NS ns2.st.local. IN MX 10 mail.st.local. 2 IN PTR ns1.st.local. 3 IN PTR ns2.st.local. 2 IN PTR mail.st.local.
三、測試配置文件
# named-checkconf -z zone st.local/IN: loaded serial 2017121106 zone 20.20.10.in-addr.arpa/IN: loaded serial 2017121107 # named-checkzone st.local var/named/st.local.zone zone st.local/IN: loaded serial 2017121106 OK # named-checkzone 20.20.10.in-addr.arpa var/named/10.20.20.zone zone 20.20.10.in-addr.arpa/IN: 20.20.10.in-addr.arpa/MX 'mail.st.local' (out of zone) has no addresses records (A or AAAA) zone 20.20.10.in-addr.arpa/IN: loaded serial 2017121107 OK
四、rndc管理工具
配置完成后,可直接使用rndc flush;rndc reload刷新並重載配置
rndc可用選項:
reload 重新裝入配置文件和區域
reload zone [class [view]] 重新裝入單個區域
refresh zone [class [view]] 安排區域的立即維護
reconfig 僅重新裝入配置文件和新區域
stats 將服務器統計信息寫入統計文件中
querylog 切換查詢日志
dumpdb 將高速緩存轉儲到轉儲文件 (named_dump.db)
stop 將暫掛更新保存到主文件並停止服務器
halt 停止服務器,但不保存暫掛更新
trace 將調試級別增加一級
trace level 更改調試級別
notrace 將調試級別設置為 0
flush 刷新服務器的所有高速緩存
flush [view] 為某一視圖刷新服務器的高速緩存
status 顯示服務器的狀態
五、防火牆
# iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT # iptables -I INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT # iptables-save >/etc/sysconfig/iptables
六、從服務器配置
1、安裝bind-chroot
# yum install bind-chroot bind-utils # systemctl start named-chroot.service # systemctl enable named-chroot.service
2、主配置文件
acl trusted { 192.168.10.0/24; }; options { listen-on port 53 { 10.20.20.3; }; listen-on-v6 port 53 { none; }; 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 { trusted; }; allow-recursion { trusted; }; forward first; forwarders { 202.103.24.68; 202.103.44.150; 223.5.5.5; 223.6.6.6; 114.114.114.114; 8.8.8.8; }; recursion yes; dnssec-enable no; dnssec-validation no; bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; }; logging { channel default_debug { severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; #正向解析 zone "st.local" IN { type slave; #類型為slave masters { 10.20.20.2; }; #主服務器ip file "slaves/st.local.zone"; }; #反向解析 zone "20.20.10.in-addr.arpa" IN { type slave; masters { 10.20.20.2; }; file "slaves/10.20.20.zone"; };
注意/var/named/slaves文件夾的權限
3、重載配置
分別重載主從服務器配置。
# rndc flush;rndc reload
4、防火牆
# iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT # iptables -I INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT # iptables-save >/etc/sysconfig/iptables
參考
http://www.361way.com/bind-dnscache/4802.html
http://www.361way.com/bind-dns/4807.html