DNS域名系統 ,是一種協議, 工作在應用層
監聽 的端口:TCP 53 :輔助域名服務器往主域名服務器傳輸信息時,用TCP53 ,主從服務器通信
UDP 53
DNS的作用:提供域名和IP地址之間的一種相互轉換的機制,母的是爲了方便人們的記憶和管理
早期的DNS是通過ftp共享的/hosts文件實現的
/etc/hosts 實現檢索
DNS的設計理念是層次性和分佈式,就像我們的國家管理一樣,在DNS中DNS是一個倒樁的樹結構,1.根域 ,全球只有13臺根節點服務器,2.一級域名(.com,.org組織域和國家域,反向域是比較常用的。3.二級域,是爲某個組織所擁有的4.子域,最高可以劃分63個層級結構。
下級域是要被上級域授權的,而且上級域可以管理下級域和訪問下級域,但是下級域不知道上級域。
DNS解析的過程由兩種,遞歸和迭代。遞歸就是DNS客戶機只需向DNS服務器發出一次請求,DNS服務器通過向根域請求,根域向下級域查詢,把需求的結果返回給DNS服務器。迭代是DNS服務器向根域請求,根域返回的結果是參考答案,也就告訴它,哪個下級域知道,讓DNS服務器自己向那個域查詢。
解析順序;1是否爲本機 2 是否有DnS緩存 3 查找hosts文件 4. 查找DNS服務器
區域類型;
hint 根提示
master 主域名服務器
slave 從域名服務器
forward 轉發域
記錄類型:
子域要想讓別人知道要讓上級有你的記錄
SOA記錄 起始授權記錄(標識主域名服務器)
NS記錄 聲明本域的域名服務器
A記錄 主機名轉換成IP地址(正向解析)
PIR IP地址轉換爲主機名(反向解析)
MX記錄 標識郵件服務器 針對一個域中的那一臺是 mail服務器 必須具有反解 可以有多條 是具有優先級的,0-99,越大越高
CNAME 別名
SOA記錄只能有一個並且必須放在最前面
全局TTL配置項及SOA記錄
$TTL(Time To Live,生存時間)記錄
SOA(Start Of Authority,起始授權記錄)記錄
分號“;”開始的部分表示註釋信息
例子:
$TTL 86400 ; 有效地址解析記錄的默認緩存時間
@ IN SOA magedu.com.(該DNS區域的地址) admin.magedu.com. ( (該DNS區域管路員的郵箱地址)
2009021901 serial 更新序列號用於標記地址數據庫的變化,可以是10位以內的整數
3H refresh time 刷新時間從服務器到主服務器查看是否更新間隔時間
15M retry time 重試延時從域名服務器更新地址數據庫失敗以後,等待多長時間再次嘗試
1W(1周)expire time 失效時間 聯繫主服務器當聯繫了7天還是聯繫不到時,輔服務器則殉情!在這7天中輔服務器形式主服務器的職責,從新選取主輔服務器
1D negative answer ttl 否定答案的緩存時間 設置無效地址解析記錄(該數據庫中不存在的地址)的默認緩存時間
緩存域名服務器
也稱爲高速緩存服務器
通過向其他域名服務器查詢獲得域名->IP地址記錄
將域名查詢結果緩存到本地,提高重複查詢時的速度
主域名服務器
特定DNS區域的官方服務器,具有唯一性
負責維護該區域內所有域名->IP地址的映射記錄
從域名服務器
也稱爲 輔助域名服務器
其維護的 域名->IP地址記錄 來源於主域名服務器
區域傳送:主服務器和輔服務器同步
完全區域傳送: axfr 剛開始要完全傳送
增量區域傳送: ixfr 完全以後的同步
tcp 53 主從服務器的通信
主服務器做出改變的時候會主動的同步到輔服務器上
域名解析記錄
NS域名服務器(Name Server)記錄
MX郵件交換(Mail Exchange)記錄
A地址(Address)記錄,只用在正向解析的區域數據文件中
CNAME別名(Canonical Name)記錄
例子:
@ IN NS ns1.magedu.com.
IN MX 10 mail.magedu.com.
ns1 IN A 192.168.0.181
mail IN A 192.168.0.181
www IN A 192.168.0.181
ftp IN CNAME www
解析類型
域名-->IP 正向解析
IP-->域名 反向解析
一個正向或一個反向解析文件組成一個區域
區域:物理概念
域:邏輯概念
域可以劃分子域,正向解析,反向解析,
子域裏也有正向解析和反向解析
每一個正向解析,反向解析都要具有一個解析庫
每一個解析庫對應一個區域
BIND簡介
在Linux中,域名服務(DNS)是由柏克萊網間名域( Berkeley Internet Name Domain——BIND)軟件實現的。
BIND是一個客戶/服務系統,它的客戶方面稱爲轉換程序(resolver),它產生域名信息的查詢,將這類信息發送給服務器,DNS軟件回答轉換程序的查詢。BIND的服務方面是一個稱爲named的守護進程。
BIND(Berkeley Internet Name Daemon)
伯克利Internet域名服務
官方站點:https://www.isc.org/
相關軟件包
bind-9.3.3-7.el5.i386.rpm
caching-nameserver-9.3.3-7.el5.i386.rpm
爲配置BIND作爲緩存域名服務器提供必要的默認配置文件
可以在配置文件中稍作修改,讓它做爲主服務器用
BIND服務器端程序
主要執行程序:/usr/sbin/named
服務腳本:/etc/init.d/named
默認監聽端口:53
主配置文件:
/etc/named.conf
保存DNS解析記錄的數據文件位於:
/var/named/
裝DNS
配置BIND服務器
編輯“/etc/named.conf”文件
在“/var/named/”目錄下創建並編輯正向區域解析文件
在“/var/named/”目錄下創建並編輯反向區域解析文件
編輯客戶端文件“/etc/resolv.conf”文件
啓動BIND服務器
配置客戶端並進行測試
確定需配置成DNS服務器的IP是靜態分配,並且與客戶端具有IP的連通性
智能解析:一個主機名對應兩個ip地址叫負載均衡
www.dnspod.cn www.dns.la
CDN:把用戶要訪問的數據推送到用戶的家門口
下面將告訴大家怎樣手動做DNS
做主DNS服務器
1.rndc-confgen > /etc/rndc.conf
cat !$
把key "rndckey"{
algorithm hmac-md5;
secret "uAgAJYS+FB3xvAWoVxctGQ==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndckey"; };
};
複製到/etc/named.conf配置文件中
vim /etc/named.conf
編寫options {
directory "/var/named";
querylog yes;啓動日誌
version "hh";
};
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";
};
保存退出。
chmod o-r /etc/named.confd需要把它的權限改爲其他用戶沒有任何權限
chgrp named /etc/named.conf 把屬組改爲named
cd /var/named/
編寫區域文件named.ca localhost.zone named.local
dig -t NS . > /var/named/named.ca 獲取所有的記錄
編寫localhost.zone區域文件
vim localhost.zone
$TTL 43200
@ IN SOA localhost. root.localhost. (
2011112401
3H
15M
1W
1D)
IN NS localhost.
localhost. IN A 127.0.0.1
cp localhost.zone named.local
修改named.local
vim named.local
$TTL 43200
@ IN SOA localhost. root.localhost. (
2011112401
3H
15M
1W
1D)
IN NS localhost.
1 IN PTR localhost.
chown :named localhost.zone named.*
named-checkconf 檢查主配置文件
named-checkzone 檢查區域文件
named-checkzone "localhost" localhost.zone
service named start啓動服務
tail /var/log/messages,查看日誌看是否有錯誤
vim /etc/named.conf
編輯正向解析和反向解析
zone "ting.com" IN {
type master;
file "ting.com.zone";
};
zone "0.168.192.in-addr.arpa" IN {
type master;
file 192.168.0.local";
};
cd /var/named
vim ting.com.zone
$TTl 600
$ORIGIN ting.com.
@ IN SOA nsl.ting.com. admin.ting.com.(
2011112401
1H
10M
7D
1D)
IN NS nsl
IN NS ns2
IN MX 10 mail
IN MX 20 mail2
ns1 IN A 192.168.0.181
ns2 IN A 192.168.0.182
mail IN A 192.168.0.181
mail2 IN A 192.168.0.182
www IN A 192.168.0.181
ftp IN A 192.168.0.181
www2 IN CNAME www
cp ting.com.zone 192.168.0.local
vim 192.168.0.local 修改內容
$TTl 600
$ORIGIN ting.com.
@ IN SOA nsl.ting.com. admin.ting.com.(
2011112401
1H
10M
7D
1D)
IN NS nsl
IN NS ns2
IN MX 10 mail
IN MX 20 mail2
181 IN PTR ns1
182 IN PTR ns2
181 IN PTR mail
182 IN PTR mail2
181 IN PTR www
181 IN PTR ftp
chmod o-r ting.com.zone 192.168.0.local
chgrp named ting.com.zone 192.168.0.local
named-checkconf 檢查主配置文件
named-checkzone 檢查區域文件
service named restart
tail /var/log/messages
關閉selinux
setenforce 0
rndc是 dns遠程配置工具
rndc flush 清空linux的dns 緩存
rndc status 查看DNS的區域
rndc reload 重新讀取配置文件
rndc trace 2 調試第二個進程
rndc stop 停止服務
rndc notrace 停止調試
rndc freeze zone 讓某個區域不能工作
retransfer 重傳某個區域
配置從服務器
和創建主服務器一樣
rndc-confgen > /etc/rndc.conf
cat !$
把key "rndckey"{
algorithm hmac-md5;
secret "uAgAJYS+FB3xvAWoVxctGQ==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndckey"; };
};
複製到/etc/named.conf配置文件中
vim /etc/named.conf
編寫options {
directory "/var/named";
querylog yes;啓動日誌
version "hh";
};
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";
};
保存退出。
chmod o-r /etc/named.confd需要把它的權限改爲其他用戶沒有任何權限
chgrp named /etc/named.conf 把屬組改爲named
cd /var/named/
編寫區域文件named.ca localhost.zone named.local
dig -t NS . > /var/named/named.ca 獲取所有的記錄
編寫localhost.zone區域文件
vim localhost.zone
$TTL 43200
@ IN SOA localhost. root.localhost. (
2011112401
3H
15M
1W
1D)
IN NS localhost.
localhost. IN A 127.0.0.1
cp localhost.zone named.local
修改named.local
vim named.local
$TTL 43200
@ IN SOA localhost. root.localhost. (
2011112401
3H
15M
1W
1D)
IN NS localhost.
1 IN PTR localhost.
chown :named localhost.zone named.*
named-checkconf 檢查主配置文件
named-checkzone 檢查區域文件
named-checkzone "localhost" localhost.zone
service named start啓動服務
tail /var/log/messages,查看日誌看是否有錯誤
dig -t axfr ting.com
vim /etc/named.conf
zone "ting.com" IN {
type slaves;
file "slaves/ting.com.zone";
masters { 192.168.0.181; };
};
service named restart
tail /var/log/messages
關閉selinux
setenforce 0
測試:cd /var/named/slaves
cat ting.com.zone
看是否有主服務器的正向解析,如果有,就成功了。然後把主服務器的正向解析區域文件做一點修改,看是否可以同步。
子域授權:
在父域的正向解析配置文件中添加NS記錄和A記錄
有幾個NS服務器就要寫幾條NS記錄以及對應的A記錄
如果想要子域可以解析父域可以再
在子域的配置文件中添加
forward:
zone "gagedu.com" IN {
type forward;
forwarders { 192.168.0.181; };
forward only|first;
};
forward only 遞歸轉發
forward first 先嚐示遞歸,然後用迭代
也可以在全局使用forward,可以讓主機通過轉發主機訪問它所知道的域
options {
forward only |first;
forwarders {IP;};
}
爲了實現安全區域傳送需要加以限制
Allow-transfer {192.168.0.1}
Allow-transfer {none;}
在DNS中使用Acl 要先定義acl再使用
acl "name" {
主機列表;
};
在要限定的區域寫allow-transfer { name; };允許傳送
allow-query { name; }; 允許誰查詢
在全局中用 allow-recursion { none; }; 不允許遞歸
智能DNS:
根據客戶端來源IP地址,來爲某一個解析請求返回一個設定好的解析結果
每個view裏面都可以定義多個區域
只要我們使用了view,每一個區域都要在view裏面
用關鍵字match-clients 來匹配客戶端請求來源
view view-name{
match-clients { 191.168.0.0/24; };
zone
};
比較亂,大家多多包涵,有不足或錯誤的地方,大家一定要指出來。