DNS轉發功能
1.
options {
forwarders {
192.168.1.110;
192.168.1.112;
};
forward first;
};
forwarders
forwarders {
DNS_IP_1;
DNS_IP_2;
};
forwarders指令用於設置將DNS請求轉發到哪個服務器,可以指定多個服務器的IP地址。
forward
forward first | only;
forward指令用於設置DNS轉發的工作方式:
forward first設置優先使用forwarders DNS服務器做域名解析,如果查詢不到再使用本地DNS服務器做域名解析。
forward only設置只使用forwarders DNS服務器做域名解析,如果查詢不到則返回DNS客戶端查詢失敗。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1、 DNS系統的作用
1.
2.
2、 DNS的解析方式
1.
–
2.
–
3、 DNS服務器的類型(角色)
1.
–
–
–
2.
–
–
3.
–
–
4、 DNS的域名空間
?
5、 DNS服務器基礎
1、
–
–
–
–
–
–
2、
–
–
–
3、
–
4、
–
6、 DNS服務器的安裝及配置
1、
a)
rpm –ivh bind-9.3.4-10.P1.el5
rpm –ivh bind-chroot-9.3.4-10.P1.el5
rpm –ivh caching-nameserver-9.3.4-10.P1.el5 //將DNS配置文件放到/var/named目錄
b)
1、
vi /var/named/chroot/etc/named.conf
options {
};
zone "." IN {
};
zone "zx.com" IN {
};
zone "2.168.192.in-addr.arpa" IN {
};
2、
vi /var/named/chroot/var/named/zx.com.zx
$TTL
@
ns1
www
3、
vi /var/named/chroot/var/named/zx.com.fx
$TTL
@
100
101
4、
service named start
service iptables stop
setenforce 0
2、
vi /var/named/chroot/etc/named.conf
options {
};
zone "." IN {
};
zone "zx.com" IN {
allow-transfer { 192.168.2.101; };
file "zx.com.zx";
};
zone "2.168.192.in-addr.arpa" IN {
allow-transfer { 192.168.2.101; };
};
3)編輯解析記錄文件
正向解析記錄:
vi /var/named/chroot/var/named/zx.com.zx
$TTL
@
ns1
ns2
www
ftp
mail
反向解析記錄:
vi /var/named/chroot/var/named/zx.com.fx
$TTL
@
100
101
101
100
100
2、從域名服務器
1、
vi /var/named/chroot/etc/named.conf
options {
};
zone "." IN {
};
zone "zx.com" IN {
};
zone "2.168.192.in-addr.arpa" IN {
};
2、
vi /var/named/chroot/var/named/slaves/zx.com.zx
$TTL
@
3、
vi /var/named/chroot/var/named/zx.com.fx
$TTL
@
分離解析域名服務器
針對來自局域網客戶機的區域數據文件
view “視圖1” {
};
針對來自其他任意地址客戶機的區域數據文件
view “視圖2” {
};
配置實例:
view "LAN" {
};
view "WAN" {
};
DNS轉發功能
1.
options {
forwarders {
192.168.1.110;
192.168.1.112;
};
forward first;
};
forwarders
forwarders {
DNS_IP_1;
DNS_IP_2;
};
forwarders指令用於設置將DNS請求轉發到哪個服務器,可以指定多個服務器的IP地址。
forward
forward first | only;
forward指令用於設置DNS轉發的工作方式:
forward first設置優先使用forwarders DNS服務器做域名解析,如果查詢不到再使用本地DNS服務器做域名解析。
forward only設置只使用forwarders DNS服務器做域名解析,如果查詢不到則返回DNS客戶端查詢失敗。
7、 檢測配置文件命令
1、
–
[root@localhost etc]# named-checkconf named.conf
named-checkzone zx.com zx.com.zone
zone zx.com/IN: loaded serial 2009
OK
2、
Nslookup
DNS:domain name system
遞歸查詢:進行一次查詢就能得到最終結果
迭代查詢:需要進行多次查詢,才能得到最終結果
互聯網上的應用方式一般是:本地遞歸,互聯網部分迭代。
所有DNS都不知道其他DNS在哪裏,但都知道根在哪裏,本地主機向本地DNS遞歸,本地DNS出去迭代查詢後向本地返回最終結果。
DNS常見的記錄類型:
A記錄: 由主機名解析IP地址
PTR記錄:由IP地址解析主機名
NS記錄: 用來指定本地的域名服務器(有主,有輔)
MX記錄: 用來指定本地的郵件服務器
CNAME: 用來指定一個主機的別名
SOA: 起始授權記錄,用來說明本域的主域名服務器
輔助域名服務器每隔一段時間要去主(或者其他輔助)域名服務器上面查詢更新,以保證數據的一致性,
這個過程叫做區域傳送,這個過程使用TCP協議,53號端口。爲了保證數據的一致性,如果主服務器有更
新,也會及時告知從服務器過來同步。
區域傳送有兩種類型:
增量區域傳送
完全區域傳送
DNS服務器類型:1.主<-->從 2.緩存服務器 3.轉發器
關於查詢優先級:查找本地hosts文件->本地DNS緩存->本地DNS緩存->本地DNS區域文件->.....
$TTL 86400
@ IN SOA localhost. root.localhost. (在DNS配置文件中@代表本域有特殊意義,所以這裏管理員郵箱以“.”代替並且後面跟一個“.”,固定格式。
1997022700 ; Serial 每次更新後服務器都將此號碼更改,從服務器若查詢到該號碼改變就想服務器請求更新。
28800 ; Refresh 從服務器的更新時間
14400 ; Retry 從服務器若更新失敗後的重試時間
3600000 ; Expire 重試多久後就宣告失敗不再更新
86400 ) ; Minimum 若主服務器找不到對應的請求,允許客戶端再次查詢的時間
DNS轉發:默認DNS服務器會爲1000個client端做遞歸解析。
在配置文件中聲明 recursion no完全關閉遞歸轉發功能
聲明爲某個網段或者某個IP做遞歸 allow-recursion {IP/Net;}
在主配置文件中聲明版本號 vsersion " ",防止別人通過dig命令來獲取bind的版本信息搞破壞
完全轉發:當DNS服務器收到查詢請求的時候會先看看是不是查詢本域的信息,本地緩存是否有數據,如果不能使用本地數據解析DNS會將查詢請求發送給轉發器,
此時是以遞歸查詢的方式發送給轉發器的,而在標準的DNS解析中,DNS服務器將以迭代查詢的形式發送給另一個DNS服務器。
options {
forward only|first;
forwardsers {IP;};
}
only:僅僅依靠轉發器來遞歸解析,如果轉發器出現問題,就不解析了
first:先請求轉發器,讓其代爲轉發(請轉發器做遞歸),如果轉發器無響應就自己找根,此時開始標準的DNS解析也就是迭代查詢。
部分轉發(只轉發解析某個域的DNS):假設有兩個域,a.com和b.com,a.com這個域是經過授權(向上級註冊,也就是.com知道他的存在)的,而b.com這個域沒有經過授權,此時如果a.com中的一臺主機要訪問www.b.com就會出現訪問不了,但是如果a.com知道b.com這個域的DNS主機是誰,即便b.com沒有經過授權,這時a.com的DNS可以設一個部分轉發,將本域所有要求解析b.com域的請求全部都發給b.com這個域的DNS主機就可以了。
部分轉發一般用於訪問未經授權的DNS域。配置格式
zone “b.com” IN {
type forward;
forwarders {IP;};
}
子域授權:
在父域的區域配置文件中以NS記錄聲明子域以及管理這個子域的DNS服務器(主和輔都聲明瞭)
這裏假設a.com這個域下面有一個子域net.a.com
配置很簡單只需要在父域的區域配置文件中添加一條
net.a.com IN NS ns1.net.a.com
ns1.net.a.com IN A 1.1.1.1
設置允許進行DNS查詢的主機
1、直接定義
在主配置文件中allow-query { 192.168.1.0/24; }; 定義允許192.168.1.0這個網段的主機進行DNS查詢
2、使用acl
在options上面定義一個acl
acl clients {172.16.0.0/16;192.168.1.0/24;};
allow-query { clients; }; 這樣就可以了同時允許這兩個網段進行查詢
智能DNS(DNS View):
我們知道網通和電信之間進行訪問速度比較慢,現在架設服務器一般都是雙線的,我們經過DNS的設置,讓DNS自
動識別客戶端IP是網通的還是電信的,網通就訪問網通的服務器電信就訪問電信的服務器。
這裏我們假設網通屬於192.168.1.0/24這個網段,電信屬於172.16.0.0/16這個網段的
首先定義訪問控制
acl telecom { 172.16.0.0/24; };
acl unicom { 192.168.0.0/24; };
接下來針對兩種不同的客戶IP範圍定義兩個DNS視圖
view TELNET {
match-clients { telecom; };
match-destinations { any; };
recursion no;
include "/etc/named.telecom.zones";
};
view UNINET {
match-clients { unicom; };
match-destinations { any; };
recursion no;
include "/etc/named.unicom.zones";
};
這裏假設我的DNS域爲test.com,以下配置文件分別爲:
vi named.telecom.zones(此文件由named.rfc1912.zones複製而來,以下是在原文件基礎之上添加,)
zone "test.com" IN {
type master;
file "test.com.zone.tele";
allow-update { none; };
};
zone "0.16.172.in-addr.arpa" IN {
type master;
file "172.16.0.rev";
allow-update { none; };
};
vi named.unicom.zones(此文件同上,如果手動新建務必保證文件中有根域以及localhost域)
zone "test.com" IN {
type master;
file "test.com.zone.uni";
allow-update { none; };
};
zone "0.168.192.in-addr.arpa" IN {
type master;
file "192.168.0.rev";
allow-update { none; };
};
做完之後進行語法檢查named-checkconf,named-checkzone
重啓測試(我本機配置兩個IP 192.168.0.162和172.16.0.162)
dig -t A www.test.com @172.16.0.162使用172.16.0.162作爲DNS服務器來解析
dig -t A www.test.com @192.168.0.162使用192.168.0.162作爲DNS服務器來解析
---------------------------------------------------------
轉發服務器:
轉發服務器接受查詢請求,但並不直接提供DNS解析,而是將所有查詢請求發送至另外的DNS服務器,查詢結果返回後保存至緩存。
轉發服務器可以分爲一下兩種類型:
1.完全轉發服務器:
DNS服務器配置爲完全轉發,會將所有區域的DNS查詢請求發送至其他DNS服務器。修改named.conf文件的options字段實現其功能。
options {
};
僅僅是本機DNS中不存在的域名才轉發!
所謂的 forwarder,就是當某一臺 NS 主機遇到非本機負責的 zone ( slave zone 也屬於本機負責的範圍) 查詢請求的時候,將不直接向 "." zone 查詢,而把請求轉交給指定的 forwarder (一臺或多臺) 主機代爲查詢。我們知道,當DNS服務器接到客戶端主機的查詢請求時,首先會檢查這個查詢是否屬於本機管轄,否則將轉向 "." zone 再逐級的查詢下去,最後再把查詢結果告訴客戶端。在這個過程之中,DNS服務器還會將查詢到的結果存放到緩存中。只要緩存中的 TTL 沒過期,在下次遇到同樣查詢的時候,就可以直接將結果響應給客戶端,而無需再重複上次的查詢流程。如果DNS服務器上指定了forwarder,那這個DNS發現緩存中沒有記錄時,將不向 "." 查詢,而是向 forwarder 送出同樣的請求(轉發),然後等待查詢結果,即把逐級往下查詢這個耗費精力的動作,交給 forwarder 負責。但無論這個結果是自己直接查詢得來的,還是 forwarder 送回來的,DNS服務器都會保存一份數據在緩存中。這樣,以後的相同查詢就快多了,這對於DNS所服務的客戶端而言查詢效率會提高很多。
當forwarder沒有返回答案時,奔DNS會自己去遠端請求。但是如果配置了forward only;
2.條件轉發服務器:
該服務器類型只轉髮指定域的DNS查詢請求,修改named.conf文件,添加轉發區域的設置實現其功能。
zone "test.com" {
};
注意:
1.轉發服務器的查詢模式必須允許遞歸查詢,否則無法正確完成轉發
2.轉發服務器列表如果是多個DNS服務器,則會依次嘗試,直到獲得查詢信息爲止
3.配置區域委派時,如果使用轉發服務器,有可能會產生區域引用的錯誤
#作爲轉發服務器,千萬不要出現轉發循環。
配置轉發服務器技巧:
1).轉發列表配置精簡
對於配置有轉發器的DNS服務器,可將查詢發送至多個不同的位置,如果配置轉發服務器配置過多,則會增加查詢的時間,應根據需要使用轉發器,例如:將本地無法解析的DNS信息轉發至其他域名服務器。
2).避免鏈接轉發器
如果配置了DNS服務器server1將查詢請求轉發給DNS服務器server2,則不要在爲server2配置其他轉發服務器。如果其他轉發服務器進行了錯誤的配置,將查詢轉發給server1,那麼可能導致錯誤。
3).減少轉發器負荷
如果大量的DNS服務器使用這些轉發器進行域名信息查詢,則會增加轉發器的工作量,降低解析的效率,所以建議使用一個以上的轉發器實現負載。
4).避免轉發器配置錯誤
DNS服務器會按照轉發器配置文件設置的順序來轉發域名,如果國內的域名服務器,錯誤的將第一個轉發器配置爲美國的DNS服務器地址,則所有本地無法解析的查詢均會發送至指定美國的DNS服務器,這會降低網絡上名稱解析的效率
緩存服務器:
緩存服務器本地並不設置DNS信息,僅執行查詢和緩存操作。客戶端發送查詢請求,緩存服務器如果有該查詢的信息,則直接返回結果。如果沒有,則發送至根服務器,通過迭代查詢獲得相應的DNS信息,然後將結果保存至緩存,保存信息TTL值過期後將會清空。
緩存服務器不需要建立獨立的區域,可以直接對named.conf文件進行設置:
options {
};
或:
options {
directory “/var/named”;
forward only;
forwarders {
192.168.1.1;
192.168.1.2;
};
};
解釋:datasize(默認不需要設置)
max-cache-size number;
限制服務器可以用於緩存查詢答案的內存量。如果緩存增長的太大,就要在記錄的TTL到期之前將他們從緩存中刪除,從而確保內存的用量保持在穩定的限度內。
recursive-clients number;
限制服務器處理的併發遞歸查詢的數量,內存有限的服務器需要把這個限制降到比默認值還低。如果設置了不運行遞歸查詢(recursion no;),就不需要設置這個了。
zone "." {
};
參考自《linux服務攻略》