作者 主題: [DNS]用 DB 做 DNS 服務  (閱讀 19631 次)

0 會員 與 1 訪客 正在閱讀本文。

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
[DNS]用 DB 做 DNS 服務
« 於: 2003-06-30 13:32 »
http://www.powerdns.com/downloads/index.php
可以參考看看哦~~用 DB 做的 DNS Server
省去 Zone file 的很多問題, 且用 DB 做可以提供更大的彈性
網域名稱的相關管理更容易了

ozakipw

  • 憂鬱的高中生
  • ***
  • 文章數: 190
    • 檢視個人資料
[DNS]用 DB 做 DNS 服務
« 回覆 #1 於: 2003-06-30 22:46 »
有人裝過??
img]http://61.222.212.236/~test1/sing.jpg[/img]

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
[DNS]用 DB 做 DNS 服務
« 回覆 #2 於: 2003-07-01 10:11 »
雖然我貼了這篇文章, 但是我並沒有用過  ....
我用了一套用 自己  寫的 Perl DNS server
Perl 的程式只有 3百多行哦 ~~, 我用了這些 PM
use strict;
use vars qw(@ISA);
use Net::Server::PreFork;
use Net::DNS;
use DBI;

也是讀 DB 的方式, 完全沒有 Zone file,
只要 NS 指到我的機器, 就可以讀 DB 相關的 RR 設定
也不用定到 zone, 我想 PowerDNS 也是一樣的做法吧

ozakipw

  • 憂鬱的高中生
  • ***
  • 文章數: 190
    • 檢視個人資料
[DNS]用 DB 做 DNS 服務
« 回覆 #3 於: 2003-07-01 11:40 »
可否分享該程式??
感謝...^^
img]http://61.222.212.236/~test1/sing.jpg[/img]

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
[DNS]用 DB 做 DNS 服務
« 回覆 #4 於: 2003-07-01 11:49 »
請原諒我~~不行耶
因為和業務有關 , sorry
我想你還是試一下 PowerDNS 好了
我想原理都是一樣的
Sorry...

olderboy

  • 憂鬱的高中生
  • ***
  • 文章數: 100
    • 檢視個人資料
[DNS]用 DB 做 DNS 服務
« 回覆 #5 於: 2003-09-05 11:32 »
引述: "abelyang"
請原諒我~~不行耶
因為和業務有關 , sorry
我想你還是試一下 PowerDNS 好了
我想原理都是一樣的
Sorry...


大大你好~~小弟我將 powerdns 安裝起來了~~
但是現在反遇到一個問題,就是使用 MySQL 的話!!
似乎是無法使用 master / slave 的~~
那不知道大大使用的 perl 寫的程式,可以做到這點嗎??
因目前正在處理 中華電信的 Case ,需要將這個部份做出來~~
不知大大可以指點一下嗎??謝謝~~

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
[DNS]用 DB 做 DNS 服務
« 回覆 #6 於: 2003-09-05 12:08 »
引用
大大你好~~小弟我將 powerdns 安裝起來了~~
但是現在反遇到一個問題,就是使用 MySQL 的話!!
似乎是無法使用 master / slave 的~~
那不知道大大使用的 perl 寫的程式,可以做到這點嗎??
因目前正在處理 中華電信的 Case ,需要將這個部份做出來~~
不知大大可以指點一下嗎??謝謝~~


如果用 DB 做,不需要 master/slave 的觀念...
都是 master 就好,因為 master/slave 的觀念僅是 zone file 的同步
您只要能 "同步" ,都是 master 即可 , see ?

olderboy

  • 憂鬱的高中生
  • ***
  • 文章數: 100
    • 檢視個人資料
[DNS]用 DB 做 DNS 服務
« 回覆 #7 於: 2003-09-05 13:39 »
引述: "abelyang"
引用
大大你好~~小弟我將 powerdns 安裝起來了~~
但是現在反遇到一個問題,就是使用 MySQL 的話!!
似乎是無法使用 master / slave 的~~
那不知道大大使用的 perl 寫的程式,可以做到這點嗎??
因目前正在處理 中華電信的 Case ,需要將這個部份做出來~~
不知大大可以指點一下嗎??謝謝~~


如果用 DB 做,不需要 master/slave 的觀念...
都是 master 就好,因為 master/slave 的觀念僅是 zone file 的同步
您只要能 "同步" ,都是 master 即可 , see ?


感謝大大的解答~~
那小弟我現還有一個問題,剛剛忘了問了~~
就是在建立 DNS 時,會在 /etc/named.conf 內寫入~~
那如用 DB 來做的話!!這個檔案是否還是要寫入呢??
還是不需要呢??或者是也將 /etc/named.conf 也寫到 DB 內呢??

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
[DNS]用 DB 做 DNS 服務
« 回覆 #8 於: 2003-09-05 13:46 »
我不知道 PowerDNS 有沒有這個設定檔耶~~
我想是要有類似的設定檔吧~因為有些 DNS 的行為總得要"規範一下"
(如 ACL,allow-xxx,logging 等)

如果用 BIND 接 DB 則是要在 named.conf 設出來 zone
及該 zone 接 DB 的一些參數

olderboy

  • 憂鬱的高中生
  • ***
  • 文章數: 100
    • 檢視個人資料
[DNS]用 DB 做 DNS 服務
« 回覆 #9 於: 2003-11-03 15:54 »
引述: "abelyang"
我不知道 PowerDNS 有沒有這個設定檔耶~~
我想是要有類似的設定檔吧~因為有些 DNS 的行為總得要"規範一下"
(如 ACL,allow-xxx,logging 等)

如果用 BIND 接 DB 則是要在 named.conf 設出來 zone
及該 zone 接 DB 的一些參數


感謝大大的指點~~
那最近,我也測試了一下~~
又另外發現一個問題~~

一般,我們將 DNS 設定 OK 後~~
都會用 nslookup 來做 DNS 的查詢~~
那我也將 Default Server 指向 本機的 IP
當我查詢在 DB 內有記錄的 DNS 記錄都沒有問題
都可以查詢的出來~~

但是如我要去查詢像: www.hinet.net or www.google.com
反而都會查詢不到耶!!也就是說!!
只要是查外部的 DNS 記錄,就都會出現查詢不到的問題~~
不知道大大在用 Perl 寫的 DNS 程式也會這樣嗎??
還是,大大知道這是什麼原因呢??
因案子快結束了,要驗收了~~
還麻煩指點一下了~~

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
[DNS]用 DB 做 DNS 服務
« 回覆 #10 於: 2003-11-03 19:39 »
您的問題是用 PowerDNS 架的 DNS 不允許遷迴查嗎 ?
(如果有查詢的結果範例供大家是最好不過)
如果是這樣的話,您可能得再研究一下 PowerDNS 的設定方面有
沒有漏掉像 recursion 這樣的設定或了解一下預設值是什麼 ?
另外, named.ca (也就是 Root Server List ) 是否存在您的 PowerDNS 上

如果您的問題是您自己用 Perl 之類的程式寫的,這個地方您善用 gethostbyname, 並將本機的 nameserver 指向另外的 DNS 主機
有人問你 xxx.com.tw 在哪,而您自己又沒有答案的話就拿去 gethostbyname 囉, 再組回 DNS Packet ,回應給 user

我大概猜您的問題是第一個狀況,但是建議您提供必要的查詢結果,好方便大家判斷囉~

olderboy

  • 憂鬱的高中生
  • ***
  • 文章數: 100
    • 檢視個人資料
[DNS]用 DB 做 DNS 服務
« 回覆 #11 於: 2003-11-03 21:45 »
引述: "abelyang"
您的問題是用 PowerDNS 架的 DNS 不允許遷迴查嗎 ?
(如果有查詢的結果範例供大家是最好不過)
如果是這樣的話,您可能得再研究一下 PowerDNS 的設定方面有
沒有漏掉像 recursion 這樣的設定或了解一下預設值是什麼 ?
另外, named.ca (也就是 Root Server List ) 是否存在您的 PowerDNS 上

如果您的問題是您自己用 Perl 之類的程式寫的,這個地方您善用 gethostbyname, 並將本機的 nameserver 指向另外的 DNS 主機
有人問你 xxx.com.tw 在哪,而您自己又沒有答案的話就拿去 gethostbyname 囉, 再組回 DNS Packet ,回應給 user

我大概猜您的問題是第一個狀況,但是建議您提供必要的查詢結果,好方便大家判斷囉~


非常感謝大大的熱心指導~~

C:\>nslookup
Default Server:  dns.hinet.net
Address:  168.95.1.1

> server 203.160.250.1
Default Server:  [203.160.250.1]
Address:  203.160.250.1

> dns.net.net
Server:  [203.160.250.1]
Address:  203.160.250.1

*** [203.160.250.1] can't find dns.net.net: Server failed
> www.hinet.net
Server:  [203.160.250.1]
Address:  203.160.250.1

*** [203.160.250.1] can't find www.hinet.net: Server failed
> www.google.com
Server:  [203.160.250.1]
Address:  203.160.250.1

*** [203.160.250.1] can't find www.google.com: Server failed

> www.f109.com.tw
Server:  [203.160.250.1]
Address:  203.160.250.1

Name:    www.f109.com.tw
Address:  203.160.250.196

> www.diyart.com.tw
Server:  [203.160.250.1]
Address:  203.160.250.1

Name:    www.diyart.com.tw
Address:  203.160.250.196


這就是小弟我將 default server 指向 203.160.250.1 後出現的情形了~~
其中 www.diyart.com.twwww.f109.com.tw 這兩個網站~~是因為在 203.160.250.1 這 dns 上有他們的記錄,所以才查詢的到~~

另外, named.ca ,這個檔案當然是有存到 DB 內了~~
所以,我才會不解的,為什麼不會向上查詢呢??

那因現在 www.powerdns.com 網站掛點了~~
所以,無法上去查詢資料~~
還請大大指點一下了呢??

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
[DNS]用 DB 做 DNS 服務
« 回覆 #12 於: 2003-11-04 10:04 »
幾個狀況
1. 有沒有 Firewall 檔住了向外查詢 ? nslookup 加設 debug ,以顯示更多的資訊看看
2. 檢查 pdns.conf 中關於 recursion 的設定?
(allow-recursion= , lazy-recursion=,recursor= ...)

[root@pc071 SIP]# dig @203.160.250.1 . ns
.                       5w6d16h IN NS   A.ROOT-SERVERS.NET.
.                       5w6d16h IN NS   B.ROOT-SERVERS.NET.
;; ADDITIONAL SECTION:
A.ROOT-SERVERS.NET.     5w6d16h IN A    198.41.0.4
B.ROOT-SERVERS.NET.     5w6d16h IN A    128.9.0.107
(其他略)

可以發現您的 DNS 是有 work 的,也可以提供 Root List,
但是再查 .tw .com ,com.tw. 或其他非您網域名稱資料時
就會回 Server Failed, 我猜不是 (1) 就是 (2) 的狀況
您可再試試看

olderboy

  • 憂鬱的高中生
  • ***
  • 文章數: 100
    • 檢視個人資料
[DNS]用 DB 做 DNS 服務
« 回覆 #13 於: 2003-11-04 22:19 »
引述: "abelyang"
幾個狀況
1. 有沒有 Firewall 檔住了向外查詢 ? nslookup 加設 debug ,以顯示更多的資訊看看
2. 檢查 pdns.conf 中關於 recursion 的設定?
(allow-recursion= , lazy-recursion=,recursor= ...)

[root@pc071 SIP]# dig @203.160.250.1 . ns
.                       5w6d16h IN NS   A.ROOT-SERVERS.NET.
.                       5w6d16h IN NS   B.ROOT-SERVERS.NET.
;; ADDITIONAL SECTION:
A.ROOT-SERVERS.NET.     5w6d16h IN A    198.41.0.4
B.ROOT-SERVERS.NET.     5w6d16h IN A    128.9.0.107
(其他略)

可以發現您的 DNS 是有 work 的,也可以提供 Root List,
但是再查 .tw .com ,com.tw. 或其他非您網域名稱資料時
就會回 Server Failed, 我猜不是 (1) 就是 (2) 的狀況
您可再試試看


真的太感謝大大的指點了~~
問題終於解決了
只要在 pdns.conf 內,加上 recursor=168.95.1.1 就可以 work 了~~
只是小弟的英文較差,powerdns 的功能似乎還滿多的~
看來得在多花點時間來研究一下了呢!!

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
[DNS]用 DB 做 DNS 服務
« 回覆 #14 於: 2003-11-04 23:25 »
首先恭喜你,解決問題了
重點是您自己 study ,自己克服問題,我只是稍微點出而以
引用
只要在 pdns.conf 內,加上 recursor=168.95.1.1 就可以 work 了~~
只是小弟的英文較差,powerdns 的功能似乎還滿多的~


這樣的設定及您所發生的狀況,類似 bind
沒有 named.ca (Root server list)
而改用
forwaders { IP1;IP2;};
forward only;

當然是解決問題了因為這樣就可以完全不用 named.ca 了
不過建議您還是了解/研究一下,為什麼照 DNS 一般的查詢流程反而不行
我猜您可能有個關鍵地方沒有處理好,所以才無法往 root 查

另外,也建議您若有時間可做好文件化的工作,給您公司的後進參考(powerdns 好像沒有中文化的文件)
若狀況可以,也可貢獻給這裏的大家參考

mlhao

  • 可愛的小學生
  • *
  • 文章數: 1
    • 檢視個人資料
[DNS]用 DB 做 DNS 服務
« 回覆 #15 於: 2004-06-21 19:20 »
请问老兄,你的name.ca是怎么添加到powerdns的db中的?都添加写什么?能详细一些吗?