/////////////////////////////目錄//////////////////////////////////////
1、DNS原理相關
2、使用bind搭建最簡單的DNS服務器
3、使用bind搭建能夠解析本身添加的域名的DNS服務器
4、配置DNS轉發
5、配置主從配置主從
6、測試主從同步html
拓展學習:
DNS and BIND配置指南
http://anyisalin.blog.51cto.com/10917514/1753638
bind配置視圖(view)
http://wubinary.blog.51cto.com/8570032/1378363
使用myDNS搭建DNS服務器
http://www.aminglinux.com/bbs/thread-186-1-1.html
使用dnsmasq配置DNS緩存
http://www.aminglinux.com/bbs/thread-5284-1-1.html
理解DNS遞歸和迭代查詢
http://jeffyyko.blog.51cto.com/28563/215293
http://jeffyyko.blog.51cto.com/28563/216962
///////////////////////////////////////////////////////////////////////linux
1、DNS原理相關
DNS爲域名解析系統的縮寫,它是一種將IP地址轉換成對應的主機名或者將主機名轉換成與之相對應的IP地址的一種服務機制。
其中經過域名解析出IP地址的叫作正向解析,經過IP地址解析出域名的叫作反向解析。DNS使用TCP和UDP,端口號都是53,可是它主要是使用UDP,服務器之間的備份使用TCP【主從】。
全世界只有13臺「根」服務器,1個主服務器放在米國,其餘12臺爲輔根服務器,DNS服務器根據角色能夠分爲:主DNS,從DNS,緩存DNS服務器,DNS轉發服務器。數據庫
解析過程:
/etc/hosts <——————客戶端,若是有,就返回客戶端,若是沒有
客戶端——————> DNS server ,若是知道,直接返回給你,若是不知道,本身變成DNS客戶端vim
2、使用bind搭建最簡單的DNS服務器
yum install -y bind bind-utils (開源的用來實現DNS服務的服務器,還有mydns也能夠實現,只不過依賴MySQL)
#dig工具的安裝須要bind-utils支持
讓咱們看看他生成了什麼關鍵文件,這裏咱們主要列舉出來:緩存
/etc/named.conf #bind主配置文件 /etc/named.rfc1912.zones #定義zone的文件 /usr/sbin/named-checkconf #檢測/etc/named.conf文件語法 /usr/sbin/named-checkzone #檢測zone和對應zone文件的語法 ... /var/named/named.ca #根解析庫 /var/named/named.localhost #本地主機解析庫 /var/named/slaves #從文件夾
安裝完畢後配置主配置文件:
若是不熟練請作好備份服務器
vi /etc/name.conf 全局配置段: options{ directory "/var/named"; #解析庫目錄路徑 }; 區域配置段: zone "." IN { type hint; file "named.ca"; }; zone "localhost" IN { type master; file "localhost.zone"; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.local"; }; #|————————————————————————————————————| #|至少有三個區域:根、localhost、127.0.0.1| #|—————————————————-——————————————————| 日誌配置段: logging { ... ; #這裏各位須要的請本身補充 };
配置完畢後:網絡
chown named /etc/named.conf cd /var/named/ dig -t NS . >named.ca
而後添加在主配置文件指定的解析庫目錄中的文件:負載均衡
cd /var/named/
vim localhost.zone //正向解析文件: @ IN SOA localhost. admin.localhost. ( 2013081601 1H 10M 7D 1D ) @ IN NS localhost. localhost. IN A 127.0.0.1
vim named.local //反向解析文件:
$TTL 86400
@ IN SOA localhost. admin.localhost. (
2013081601(這個是序列號,主從有用)
1H
10M
7D
1D
)
@ IN NS localhost.
1 IN PTR localhost dom
保存完畢後:工具
檢測配置是否有問題:named-checkconf 檢測正解析:named-checkzone "localhost" /var/named/localhost.zone 檢測反解析:named-checkzone "0.0.127.in-addr.arpa" /var/named/named.local
檢查無誤後:
systemctl start named.service netstat -lnp |grep named //查看一下named進程是否監聽了53端口 首先測試正向解析:dig @127.0.0.1 localhost 接着測試反解析: dig @127.0.0.1 -x 127.0.0.1 @後面跟的是DNS服務器的ip,能夠8.8.8.8 -x 反解析 PTR是反解析的意思
3、使用bind搭建能夠解析本身添加的域名的DNS服務器
要解析本身添加的域名,須要在上述實驗成功前提下進行
不過先針對下面配置的一些參數進行說明:
DNS資源記錄類型: SOA:起始受權記錄,一個區域的解析庫中有且只能有一條SOA記錄,必須爲解析庫中的第一條記錄,定義主DNS服務器地址和相關事件時間定義。 A:實現FQDN ==> IPv4 MX:標明提供郵件服務的主機 NS:標明當前域內的DNS服務器 AAAA:FQDN ==> IPv6 CNAME:Canonical Name,別名記錄 PTR:IP ==> FQDN
DNS資源記錄定義方法: A記錄:IP IN A Value ; 示例:192.168.1.1 IN A www.anyisalin.com. NS記錄:domain IN NS Value; 示例:anyisalin.com. IN NS ns1.anyisalin.com. #一條NS記錄必需要有一條與之對應的A記錄 MX記錄:domain IN NS priority Value; 示例:anyisalin.com. IN MX 10 mail1.anyisalin.com. #一條MX記錄必需要有與之對應的A記錄, 優先級0-99,越低優先級越高 PTR記錄:IP.in-addr.arpa. IN PTR Value; 示例:1.1.168.192.in-addr.arpa. IN PTR www.anyisalin.com. #PTR記錄的寫法比較詭異,爲逆向網絡地址加.in-addr.arpa.後綴組成 AAAA記錄:和A記錄類似,只是將IPv4地址換爲IPv6
配置解析一個區域的步驟:
1.定義一個區域(在主配置文件操做)
正向區域: zone "zone_name" { type hint|master|slave|forward; #根 |主 |從 |轉發 file "TheFileName"; #master|slave {MASTER|SLAVE_IP ip;}; #這個是主從配置要用到的參數 };
反向區域:
區域名稱以逆向的網絡地址,並以.in-addr.arpa爲後綴,譬如:
zone "132.75.168.192.in-addr.arpa" IN { type hint|master|slave|forward;
file "132.75.168.192.local";
};
2.定義區域對應的數據庫文件(在解析區域數據庫目錄操做) 文件名須要和上面的 TheFileName相同 區域數據庫文件的一些寫法: (假如這裏的區域名稱是a.com,主機名dns.a.com): a.com. IN NS dns.a.com. @ IN NS dns IN NS dns 這三種寫法是同樣的 例如上面第二條dns後面不加. 會自動在後面補上區域自身名字,等於dns.a.com 若是要寫全,必須把最後一個.寫上,例www.a.com. SOA記錄(第一條記錄): name: 只能是區域名稱,例:a.com. 一般能夠用@簡寫 value: 必須是主DNS服務器的FQDN SOA必須是區域數據庫文件的第一條記錄 例子以下: $TTL 600(開頭的TTL做用於全局,咋開頭使用後下面就不須要寫了) @(引用區域名稱) IN(關鍵字) SOA (類型) ns.a.com. (主DNS名字) dnsadmin.a.com. (郵箱地址,其中不用用@,用.代替) ( serial number ; 序列號,這裏;爲註釋,十進制數字,不能超過10位,一般使用日期,例如2014031001 refresh time ;刷新時間,每隔多久到主服務器檢查一次 retry time ;重試時間,應該小於refresh time expire time ;過時時間 negative answer ttl ;否認答案的ttl,客戶端緩存的時間,設定過長會致使沒法當即生效,設定太短致使客戶端頻繁請求 ) 以後的記錄寫法以下: name [ttl] IN RRtype Value NS記錄格式說明: @ 600(TTL) IN NS ns.dx.com. ns.dx.com. IN A 192.168.1.201 任何一個NS記錄,必須有一條對應的A記錄 A記錄格式說明: name:FQDN(可使用相對名稱) value IP www 600 IN A 1.2.3.5 www.a.com 600 IN A 1.2.3.4 這裏同一個主機IP不一樣用於負載均衡 MX記錄格式說明: 能夠有多個 必須給一個A記錄 name:區域名稱,用於表示smtp服務器 value:包含優先級和FQDN 優先級:0-99,數字越小,級別越高 例:(若是第一個沒響應就找第二個) @ 600 IN MX 10 mail(注意沒加. 會自動補上區域名稱 ) @ 600 IN MX 20 mail PTR記錄格式說明: 反向解析,IP -> FQDN,只能定義在反向區域數據庫文件中 反向區域名稱爲逆向網絡地址加.in-addr.arpa.後綴組成 name:IP,主機地址反過來寫,例:172.16.100.7的name爲7.100.16.172.in-addr.arpa. value:FQDN 例子以下: 201.1.168.192.in-addr.arpa. 600 IN PTR www.a.com. 這裏的1.168.192.in-addr.arpa爲區域名稱 或簡寫成 201 600 IN PTR www.a.com. 會自動補上區域名稱1.168.192.in-addr.arpa
3.正向/反向的區別 反向解析區域數據庫文件可用正向文件直接修改,SOA和NS同樣的,只是不須要MX記錄和A記錄
回到正題,若是個人網站的域名是abc.com,步驟以下:
vi /etc/named.conf //添加以下內容 zone "abc.com" IN { type master; file "abc.com.zone"; }; zone "137.168.192.in-addr.arpa" IN { type master; file "192.168.zone"; };
在解析庫目錄下建立文件:
vi /var/named/abc.com.zone //增長以下內容: $TTL 600(開頭的TTL做用於全局) @ IN SOA abc.com. root.abc.com.( 2013081601 1H 10M 7D 1D ) IN NS ns.abc.com. IN MX 10 mail.abc.com. ns IN A 192.168.137.11 www IN A 192.168.137.73 mail IN A 192.168.137.10 bbs IN CNAME www.abc.com. 編輯反解析文件: vi /var/named/192.168.zone //增長以下內容 $TTL 600 @ IN SOA ns.abc.com. root.abc.com.( 2013081601 1H 10M 7D 1D ) @ IN NS ns.abc.com. 10 IN PTR ns.abc.com. 11 IN PTR mail.abc.com. 73 IN PTR www.abc.com.
保存完畢後:
分別檢測兩個配置文件是否有問題:
named-checkconf named-checkzone "abc.com" /var/named/abc.com.zone named-checkzone "137.168.192.in-addr.arpa" 192.168.zone
沒問題,就重啓named
/etc/init.d/named restart 並使用dig命令檢查 dig @127.0.0.1 www.abc.com dig @127.0.0.1 -x 192.168.137.11
四.配置DNS轉發
咱們配置的DNS是隻能解析咱們定義的zone的,咱們沒有定義的DNS是不能解析的
配置DNS轉發就能夠解析其餘互聯網上的域名,前提是這個域名在互聯網中的確使用,也就是說這個域名已經被某個DNS服務器解析了
/etc/named.conf /var/named/localhost.zone /var/named/named.local
這兩行就是用來配置轉發的,該DNS服務器不能解析的域名會轉發到8.8.8.8這個DNS服務器上去解析
五.配置主從
在從服務器上:
yum install -y bind
拷貝主上配置文件到從上,包括:
/etc/named.conf /var/named/localhost.zone /var/named/named.local
拷貝完畢後:
修改從的/etc/named.conf //內容參考以下:
options{ directory "/var/named"; }; zone "." IN { type hint; file "named.ca"; }; zone "localhost" IN { type master; #若是這裏寫成slave,須要寫masters {...},由於咱們不須要同步localhost,因此能夠master file "localhost.zone"; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.local"; }; zone "abc.com" IN { type slave; file "slaves/abc.com.zone"; masters { 192.168.0.11; }; }; zone "137.168.192.in-addr.arpa" IN { type slave; file "slaves/192.168.zone"; masters { 192.168.0.11; }; };
在從上啓動named
啓動成功後會在 /var/named/下生成一個slaves目錄,這個目錄下會有192.168.zone,abc.com.zone這兩個文件,內容是和主上一行的
在從上測試: dig@127.0.0.1 www.abc.com
六.測試主從同步
在主DNS上更改文件 /var/named/abc.com.zone //在最後增長一行:
123 IN A 1.1.1.1
另外須要修改一下第三行的那個數字串,這個是用來作標記的,只有這個數字變化了,纔可讓從自動跟着變化,數字只能是變大,不能變小,2013081601 -> 2013081602
重啓named服務
經測試咱們發現一個問題,就是從常常會同步得比較慢,這是很要命的,因此須要咱們作一個特殊的操做,在主上的/etc/named.conf中,abc.com中增長兩行:
notify yes; also-notify{
192.168.0.12(指定從的IP);};