當前位置:首頁 » 編程軟體 » 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 地址
};

熱點內容
phpmvc開發框架 發布:2024-11-24 02:57:44 瀏覽:944
編程腦子疼 發布:2024-11-24 02:31:23 瀏覽:169
c語言狀態機 發布:2024-11-24 02:26:56 瀏覽:281
用友加密狗破解 發布:2024-11-24 02:23:16 瀏覽:707
鴻蒙系統如何變回安卓桌面 發布:2024-11-24 02:18:26 瀏覽:412
c語言填充 發布:2024-11-24 02:10:48 瀏覽:822
命名空間存儲 發布:2024-11-24 02:10:45 瀏覽:472
java重載與重寫 發布:2024-11-24 01:59:05 瀏覽:699
通緝令2ftp 發布:2024-11-24 01:59:04 瀏覽:295
android賽車游戲 發布:2024-11-24 01:58:18 瀏覽:105