PowerDNS - Realtime Update 的 DNS 伺服器介紹
来源:互联网 发布:手机变砖刷机软件 编辑:程序博客网 时间:2024/05/18 05:03
转载自:http://tianenwang.blog.163.com/blog/static/490801192008911101937585/
一般来说,最常用的DNS服务器,无非是Windows Server操作系统自带的DNS服务器,和Linux,Unix平台下的Bind组件。
如果网络中同时存在Windows和Linux Bind两种DNS服务器,这个同步的工作,可是会要掉管理人员的 姓名的。
现在来说说跨平台的开源DNS服务组件-PowerDNS,PowerDNS同时有Win32和Linux/Unix的版本。PowerDNS在Win32下使用Access的mdb文件记录DNS信息,而在Linux/Unix下则使用MySQL来记录DNS信息。无论是mdb亦或MySQL,备份是非常方便的事情。
PowerDNS的主配置文件是pdns.conf,形如:
# PowerDNS configuration file.
# Use NT logging when running as a service:
use-ntlog=yes
# Backends to launch at startup:
launch=godbc
godbc-datasource=PowerDNS
godbc-username=PowerDNS
godbc-password=PowerDNS
# Point to the recursor:
recursor=202.96.134.133
# Launch a statistical webserver:
webserver=yes
webserver-port=8081
# EOF
只有 recursor= 需要修改一下,改成正确的DNS转发地址就可以了,等同Bind中的forward。
数据库记录的表结构形如:
20example.comNSns1.example.com1200
30example.comNSns2.example.com1200
40example.comMXsmtp-servers.example.com12010
50example.comMXsmtp-servers.test.com12015
60ns1.example.comA192.168.1.11200
70ns2.example.comA192.168.1.21200
80localhost.example.comA127.0.0.11200
90www.example.comCNAMEoutpost.example.com1200
很简单,添加相应的 A记录 SOA记录 NS记录和CNAME记录就好了。
要实现DNS轮询,只需要将同一个Host Name对应多条A记录,这样就可以了。
Power的缺点,最重要的就是查询的速度。大概只有Bind的25%,极限速度是每秒2K次左右。 若您使用過一般的 DNS 軟體,想必您一定知道,當您在 DNS 中添加一筆 FQDN 資料時,通常都得要重新執行 DNS 服務的功能,若您尚有其他主機,通常會設為 master/slave 之狀況,而這種狀況更有資料同步的設定問題.但相信很多人都會有一個疑問,就是難到不能 DNS 在接到查詢請求時,才到資料庫中去查,然再回應給使用者,如此即可以做到即時的更新,且以資料庫型式來處理網域名稱相關係料,可以有更多的加值空間.
其實答案是可以的,且方法完全不難,並支援多數的 OS 平台(Windows,Linux,Unix, BSD, Mac OS 等) ,網路上,最有名即 PowerDNS,可從 www.powerdns.com 處下載到,以下就簡單的介紹這套軟體的安裝及設定步驟
$>wget http://downloads.powerdns.com/releases/pdns-2.9.13.tar.gz$>tar -zxvf pdns-2.9.13.tar.gz
$>cd pdns-2.9.13
$>ls -la
$>./configure --help | more
$>which mysql
$>./configure --prefix=/usr --with-mysql=/usr
$>make
$>make install
除了支援 mysql 外,也支援 pgsql ( 詳細的編譯條件您可使用 –help 取得 ),裝好後設定檔在 /usr/local/etc/pdns.conf 中,詳細的設定檔內容您可以在http://downloads.powerdns.com/documentation/html/ 取得,以上僅例一個最簡單的例子供參考:
launch=gmysql#使用 mysql 資料庫 gmysql-host=localhost# 主機位址或 hostname gmysql-user=username# mysql 的使用者名稱 gmysql-password=passwd# 該使用者之密碼 gmysql-dbname=DNS# 資料庫名稱 logfile=/var/log/pdns.log# 系統記錄檔 query-logging=yes# DNS查詢的資料是否記錄 webserver=yes# 使用 Web 功能監測系統 webserver-address=211.76.247.2# IP 位址 webserver-password=http_passwd# Web 監測系統登入密碼 webserver-port=8081# Web Server 的port recursor=168.95.1.1# 轉送查詢之主機 CREATE TABLE domains (id int(11) NOT NULL auto_increment,
name varchar(255) NOT NULL default '',
master varchar(20) default NULL,
last_check int(11) default NULL,
type varchar(6) NOT NULL default '',
notified_serial int(11) default NULL,
account varchar(40) default NULL,
PRIMARY KEY (id),
UNIQUE KEY name_index (name)
) TYPE=MyISAM;
CREATE TABLE records (
id int(11) NOT NULL auto_increment,
domain_id int(11) default NULL,
name varchar(255) default NULL,
type varchar(6) default NULL,
content varchar(255) default NULL,
ttl int(11) default NULL,
prio int(11) default NULL,
change_date int(11) default NULL,
PRIMARY KEY (id),
KEY rec_name_index (name),
KEY nametype_index (name,type),
KEY domain_id (domain_id),
FULLTEXT KEY content (content),
FULLTEXT KEY content_2 (content)
) TYPE=MyISAM;
上面所指的資料庫名稱(DNS) 之表格共兩個,其內容如下:
以下為範資料及查詢例子:
依上面表格及表格之內容(請記得填寫 SOA 及 NS 內容,prio 欄位為 MX 之優先權欄位),我們查詢 xxx.com.tw 之 NS 記錄,可以正確顯示出來
[root@CSPS20 admin]# dig @localhost xxx.com.tw. ns;; QUESTION SECTION:
;xxx.com.tw. IN NS
;; ANSWER SECTION:
xxx.com.tw. 15 IN NS ns1.xxx.com.tw.
;; ADDITIONAL SECTION:
ns1.xxx.com.tw. 86400 IN A 1.2.3.4
;; Query time: 3 msec
;; SERVER: 127.0.0.1#53(localhost)
;; WHEN: Sat Jan 17 02:52:06 2004
;; MSG SIZE rcvd: 62
上述之內容若您對一般的 DNS 設定夠了解,相信表格中的欄位意義您亦可以了解,若您原來對 DNS 不甚了解,建議您可至 http://rs.twnic.net.tw/DNS92/ 下載教學檔案.
但以一般的 DNS 而言,TWNIC DNS指定最少兩部的要求,若您架了兩部的 PDNS,要如何做 master 與 slave 的區別呢? PDNS 沒有轄區傳送之問題,而是您需要從資料庫層層著手,使兩個資料庫可以同步,以 mysql 而言,可參考http://www.mysql.com/doc/en/Replication.html 中詳細的說明.
pdns.conf 中的 Web 該段,您可設定好啟動後,以 http://webserver-address:webserver-port 連線即可看到 PDNS 運作狀況:
上面的之畫面尚不到監測項目的五分之一,基本上 PDNS server 的狀況都可以從這個畫面了解.
Pdns.conf 中的最後一個部份recursor=168.95.1.1 ,類似一般 DNS 設定中之 forward 功能,若您沒有此行設定,您的 PDNS 屬於非遞迴主機(non-recursion).因為大多數以資料庫為主的 DNS (如 mydns,twnic dyndns) 在實作,考慮速度及安全的因素下,皆會為非遞迴主機,若您一定要 PDNS 幫您查出來它所沒有的資料的答案,就需要指定此一參數,方能如同一般的 DNS 功能.
相信經此一介紹,您可以了解了解更多 DNS 軟體. 資料庫型式故有其優點,但相對的其查詢速度就比非資料庫的來得慢,以我們測試的狀況 PDNS 的查詢每秒最多僅能查詢近千次,而 ISC BIND(named) 則可上萬次,然每秒千次之查詢對 99% 的公司而言亦巳相當足夠.至於您若要讓您的使用者或客戶使用 PDNS 的資料庫功能,基本上您可能需開發適檔的網頁功能,不過網路上亦有人針對 PDNS 做了一套網頁,下一期我們將為大家介紹這套東西,及如何轉案現在 Zone File 的格式到 PDNS
- PowerDNS - Realtime Update 的 DNS 伺服器介紹
- 主機名稱控制者: DNS 伺服器
- PowerDNS安装
- DataGrid Web 伺服器控制項的常見問題
- 侦测伺服器性能的一个脚本
- 转帖:鳥哥的 Linux 私房菜之第十五章、時間伺服器: NTP 伺服器
- SignalR简介- 建立realtime 的网站
- splunk设置realtime search的配置
- [RealTime]Java即时编译技术的了解
- 無法將工作階段狀態要求送至工作階段狀態伺服器。請確定 ASP.NET 狀態服務已經啟動且用戶端與伺服器的通訊埠都相同。如果伺服器是在遠端電腦上,請檢查 HKEY_LOCAL_MACHINE\SYSTE
- powerdns 安装部署备忘
- powerdns 常见维护备忘
- powerdns 架构更新说明
- 如何提高IIS 5.0网站伺服器的执行效率呢?
- 如何提高IIS 5.0网站伺服器的执行效率呢?
- 回收您Domino伺服器硬碟空間的吸金魔法
- NFS 伺服器
- Proxy 伺服器
- PHP __get()和__set()的使用方法(存取或者调用未定义的属性变量)
- griview 序号设置
- 库函数调用和系统功能调用/文件句柄和文件指针/指针和引用/C runtime lib和虚拟机
- PowerDesigner 需求分析模型RQM入门
- jQuery对Selec,radio,checkbox的相关操作
- PowerDNS - Realtime Update 的 DNS 伺服器介紹
- web.config的加密和解密
- Oracle按位运算符
- ZPPR31
- 左手坐标系和右手坐标系
- 如何发布一个ASP.NET网站
- BSS段、数据段、代码段、堆与栈
- flex的number formatter示例
- 归并算法