這里都以我本機的實驗為例
正向解析:就是從主機名到IP的解析過程
先在工作目錄/var/named/創建一個區域數據文件
以zcylinux.io域為例:vim
/var/named/zcylinux.io.zone
$TTL 600 #設置全局變量TTL的值為600s
zcylinux.io. IN SOA zcylinux.io. nsadmin.zcylinux.io. (
2017052801
1H
1M
1W
1D )
zcylinux.io. IN NS dns.zcylinux.io. 表示zcylinux.io域中的DNS服務器是哪個主機
dns.zcylinux.io. IN A 172.16.250.31 ns服務器的正向解析記錄
www.zcylinux.io. IN A 172.16.0.1 www.zcylinux.io.的正向解析記錄
web IN CNAME www 表示還有一個別名是web
每個完整的域名之后要加上點“.”,這個點表示完整的主機名FQDN,如果只寫了zcylinux.io,表示zcylinux.io.zcylinux.io.
保存后,修改文件的屬組:chown :named zcylinux.io.zone
權限:chmod o= zcylinux.io.zone
在主配置文件/etc/named.conf或配置文件輔助文件/etc/named.rfc1912.zones中添加:
zone “zcylinux.io ” {
type master {master|slave|hint|forward};
file “zcylinux.io”;
};
在/etc/named/目錄下:
檢查語法錯誤:named-checkconf
named-checkzone zcylinux.io zcylinux.io.zone
啟動named服務:systemctl start named
若是服務已經啟動:rndc reload 或 systemctl reload named.service 來重新加載配置文件和區域數據文件
反向解析:就是從IP到主機名的過程
以172.16這個網段的區域為例
在/etc/named/目錄下編輯區域數據文件
vim 172.16.zone
$TTL 600
@ IN SOA zcylinux.io. nsadmin.zcylinux.io. (
2017052801
1H
1M
1W
1D )
@ IN NS dns.zcylinux.io.
31.250 IN PTR dns.zcylinux.io.
1.0 IN PTR www.zcylinux.io.
@表示在zone中定義的zone_name
這里在左側只用添加ip地址的最后兩段,因為我們在之前已經定義好域了16.172.in-addr.arpa,因此在這里它會自動將其補全
定義區域:
在主配置文件或配置文件輔助文件中實現:
zone “16.172.in-addr.arpa ”{
type master {master|slave|hint|forward};
file “172.16.zone”;
};
注意:反向解析區域的名字—反寫的網段地址.in-addr.arpa
檢查語法錯誤(工作目錄/etc/named/):named-checkconf
named-checkzone 172.16.io 172.16.io.zone
啟動named服務:systemctl start named
若是服務已經啟動:rndc reload 或 systemctl reload named.service 來重新加載配置文件和區域數據文件
反向解析與正向解析是兩個獨立的邏輯,不會互相干擾
主/從:記得防火墻 iptables -F
在主服務器的bind的主配置文件/etc/named.conf的每個zone中可以定義設置哪些從服務器來同步信息;主服務器更改信息時,要修改序列號(遞增),這樣從服務器才會同步信息。
zone “zcylinux.io” IN {
type master;
file “zcylinux.io.zone”;
allow-transfer { 172.16.251.109; }; 多個ip地址時以分號隔開
};
在從服務器上只用修改bind主配置文件或輔助配置文件中的zone即可:
zone “zcylinux.io” IN {
type slave;
file “slaves/zcylinux.io.zone”; 將同步后的文件放置的位置,這里是相對路徑,實際路徑為/var/named/slaves/zcylinux.io.zone
masters { 172.16.250.31; }; 主服務器的地址
};
zone “16.172.in-addr.arpa” IN {
type slave;
file “slaves/172.16.io.zone”;
masters { 172.16.250.31; };
};
檢查語法錯誤(工作目錄/etc/named/):named-checkconf
重新加載:rndc reload
通過觀察日志文件 tail
/var/log/messages 查看是否同步成功,成功會在/var/named/slaves/目錄下生成相應的文件
子域:
當我們將DNS解析請求發給我們所指定的DNS服務器后,它會一級一級的去查找域名去解析,在這里每一級都是一個域,而且每個域都是上級的子域;每一級域只負責解析該域名,而對于下一級域名的解析只告訴所對應的DNS服務器地址,具體的解析交給下級來完成。
在上級域名加入一條記錄來指定子域
$TTL 600
zcylinux.io. IN SOA zcylinux.io. nsadmin.zcylinux.io. (
2017052702
1H
2M
3W
4D )
IN NS dns.zcylinux.io.
dns.zcylinux.io. IN A 172.16.250.31
www.zcylinux.io. IN A 172.16.0.1
web IN CNAME www
ops.zcylinux.io. IN NS dns.ops.zcylinux.io. //指定分割子域和負責人
dns.ops IN A 172.16.251.57 //負責人對應的識別信息
配置子域:在子域服務器上
vim /etc/named.rfc1912.zones
zone
“ops.zcylinux.io” IN {
type master;
file “ops.zcylinux.io.zone”;
編輯正向解析文件:
vim ops.zcylinux.io.zone
$TTL 1D
@ IN SOA ops.zcylinux.io. nsadmin.ops.zcylinux.io. (
2017052701
1H
1M
1W
1D)
@ IN NS dns.ops.zcylinux.io.
dns IN A 172.16.251.57
www IN A 172.16.253.69
區域轉發:
一般來說子域不知道父域的位置,無法解析父域。而要想能解析父域,我們需要用到轉發:
vim /etc/named.rfc1912.zones
zone
“zcylinux.io” IN {
type forward;
forward only|first; //前者代表只去詢問父域,不論能否解析;后者是先轉給父域,不行再去找根。
forwarders { 172.16.250.31;
172.16.251.109; };
};
全局轉發:
vim /etc/named.conf
options {
… …
forward {only|first};
forwarders { SERVER_IP; };
.. …
};
基本安全控制:
acl 訪問控制列表:把一個或多個地址歸并一個命名的集合,隨后通過此名稱即可對此集全內的所有主機實現統一調用;
vim /etc/named.conf
acl test {
172.16.0.200;
172.16.250.31;
};
設置區域查詢控制:
vim /etc/named.rfc1912.zones
zone “zcylinux.io” IN {
type master;
file “zcylinux.io.zone”;
allow-query { test; };
};
allow-transfer {}; 允許向哪些主機做區域傳送;默認為向所有主機;應該配置僅允許從服務器;
vim /etc/named.conf
acl slavesrvs {
172.16.251.109;
127.0.0.0/8;
};
vim /etc/named.rfc1912.zones
zone “zcylinux.io” IN {
type master;
file “zcylinux.io.zone”;
//allow-query { test; };
allow-transfer { slavesrvs; };
};
allow-recursion {}; 允許哪此主機向當前DNS服務器發起遞歸查詢請求;
vim /etc/named.conf
········
acl localnet {
172.16.0.0/16;
127.0.0.0/8;
};
········
allow-recursion { localnet; };
········
allow-update {}; DDNS,允許動態更新區域數據庫文件中內容
vim /etc/named.rfc1912.zones
zone
“zcylinux.io” IN {
type master;
file “zcylinux.io.zone”;
allow-update { none; };
};
測試工具:在測試時注意防火墻
dig, host, nslookup等
dig命令:
dig [-t RR_TYPE] name [@SERVER] [query options]
用于測試dns系統,因此其不會查詢hosts文件;
查詢選項:
+[no]trace 跟蹤解析過程;
+[no]recurse 進行遞歸解析;
注意:反向解析測試
dig -x IP
模擬完全區域傳送:
dig -t axfr DOMAIN [@server]
host命令:
host [-t RR_TYPE] name SERVER_IP
nslookup命令:
nslookup [-options] [name] [server]
交互式模式:
nslookup>
server IP 以指定的IP為DNS服務器進行查詢;
set q=RR_TYPE:要查詢的資源記錄類型;
name:要查詢的名稱;
rndc命令:named服務控制命令
rndc status
rndc flush
rndc reload
原創文章,作者:Immortals、zcy,如若轉載,請注明出處:http://www.www58058.com/77185