當前位置:首頁 » 編程軟體 » dns編程

dns編程

發布時間: 2024-10-20 15:53:18

A. 如何搭建dns伺服器 bind

一,簡介
相對於存儲和大數據領域,CDN是一個相對小的領域,但行行出狀元,BIND就是CDN領域的蟬聯N屆的狀元郎。BIND是一款非常常用的DNS開源伺服器,全球有90%的DNS用BIND實現。值得一提的是,BIND9.8.1用C語言實現,代碼量巨大,其設計實現幾乎涵蓋了伺服器編程的所有細節。
本文簡要介紹一下BIND9.8.1最簡單配置,其中穿插介紹BIND中的最基本概念,不涉及BIND的安裝部署,不涉及BIND架構等話題。
二,Zone文件和資源記錄Resource Record
介紹最簡配置前需要明確兩個配置中的概念:zone和RR。
BIND的配置文件描述了一個域名伺服器的所有屬性,這些屬性BIND的行為和功能。其中的zone文件描述了域名伺服器中包含的主機,所提供的服務類型等信息,BIND通過將zone文件中的信息載入到內存數據結構中並有效組織起來,然後對外部的DNS請求提供驗證和查詢請求。需要注意的是,zone文件的格式不是由BIND制定的,而是DNS標准文檔制定的(見RFC1035)。
通常情況下,一個zone文件描述該DNS伺服器服務的一個授權伺服器域。例如我有一個DNS伺服器可以解析taobao.com的域名和.com的域名,那麼我的DNS伺服器的配置文件中就可以設置兩個zone標簽,一個描述taobao.com的域名信息,另一個描述.com的域名信息。
資源記錄resource Record記錄了一個域(domain)的屬性和特性,注意,屬性是指共有的特徵,特性指特有的特徵。例如中國特色社會主義就是一個特性。
三,named.conf文件配置
named.conf是BIND的唯一的主配置文件,當然你也可以自己編寫主配置文件,但是需要在BIND主進程named啟動的時候用-c選項指定主配置文件的路徑。named.conf由一個個子句組成,每個子句都有一個頭跟一對大括弧組成,大括弧裡面是該子句中的因子和值(具體見下面的例子)。
下面的代碼是named.conf的一個最簡配置。其中假設named.conf只負責解析授權域名cobb.com。
其中的key是由rndc-confgen生成的。

1

B. linux上的dns如何實現動態更新

BIND 動態更新
在很多大的網路中為了簡化維護量,都使用了DHCP來動態分配IP地址。這樣就要求DNS也能夠動態的添加和刪除記錄。BIND 8和9就支持DNS動態更新機制。
主DNS和輔DNS在處理收到的動態更新記錄是有區別的,輔DNS在收到更新消息的時候,由於它不是該區的主DNS,它就會將這個更新消息轉發給它的主DNS,這稱作「更新轉發」。而主DNS當然就簡單地做更新而已。
如何來創建動態更新消息呢?第一種是用軟體編程方式,採用ns_update()解析器常式來創建。第二種則是用命令行程序nsupdate命令手工創建。這里主要講一下第二種,命令格式如下:
prereq yxrrset domain name type
prereq nxrrset domain name type
prereq yxdomain domain name
prereq nxdomain domain name
update delete domain name [type] [rdata]
update add domain name ttl [class] type rdata

看起來似乎挺復雜,其實很容易。prereq 表示預先必須符合的條件,yxrrset表示存在記錄,nxrrset表示不存在記錄,而yxdomain則表示存在域名了。例如:

# nsupdate
> prereq nxdomain www.xmgd.com.
> update add www.xmgd.com. 600 A 210.52.83.228
>
這個例子告訴伺服器只有在域名不存在時才對域名 www.xmgd.com 添加一個地址。注意最後一個空行表示nsupdate發送這個更新消息。

# nsupdate
> prereq yxrrset xmgd.com. MX
> update delete xmgd.com. MX
> update add xmgd.com. 600 MX 10 mail.xmgd.com.
> update add xmgd.com. 600 MX 50 pop.xmgd.com.
>
這個例子告訴伺服器檢查伺服器是否有xmgd.com.的MX記錄,如果有的話就刪除原有的MX記錄,重新添加兩個。

如何來限制動態更新呢?我們可以使用allow-update參數來限制動態更新,如:
zone 「xmgd.com」 {
type master;
file "zone.xmgd.com";
allow-update { x.x.x.x; }; // IP 地址
};

不過,要注意的是如果我們允許從輔DNS向主DNS進行地址更新,那麼任何人只要向輔DNS發送更新消息,經過轉發更新也能進行原本不能進行的動態更新,如何防止這一點呢?可以在輔DNS上使用allow-update-forwarding參數來做轉發更新的限制,如:

zone 「xmgd.com」 {
type slave;
file "zone.xmgd.com";
allow-update-forwarding { x.x.x.x; }; // IP 地址
};

熱點內容
c語言一般 發布:2024-10-20 20:31:42 瀏覽:977
Sand編譯器舊版 發布:2024-10-20 20:30:26 瀏覽:441
return在c語言中的用法 發布:2024-10-20 20:00:37 瀏覽:988
浩順考勤機怎伺服器ip 發布:2024-10-20 19:52:41 瀏覽:295
以文本格式存儲的數字 發布:2024-10-20 19:35:04 瀏覽:669
網易雲音樂聽完歌自動緩存怎麼辦 發布:2024-10-20 19:30:54 瀏覽:175
將dll緩存到內存中 發布:2024-10-20 19:30:43 瀏覽:624
編程課件樂高 發布:2024-10-20 18:56:04 瀏覽:691
股軟加密 發布:2024-10-20 18:48:00 瀏覽:242
android夜間模式 發布:2024-10-20 18:41:50 瀏覽:968