酷!學園

技術討論區 => Linux 討論版 => 主題作者是: ohmygod 於 2003-06-16 00:13

主題: [最佳][DNS]網域代管
作者: ohmygod2003-06-16 00:13
假設domain.com.tw為我在isp所註冊網域,登記的dns ip為
ns1.domain.com.tw 61.219.18.231
ns2.domain.com.tw 61.219.18.233
現有一公司的網域要我代管--company.com.tw
我想要這麼做:
1. 在isp登記company.com.tw的dns server
  ns1.domain.com.tw 61.219.18.231
  ns2.domain.com.tw 61.219.18.233
2.在我domain.com.tw的 /etc/named.conf裡設定:
zone "domain.com.tw" IN {
        type master;
        file "domain";
};

zone "company.com.tw" IN {
        type master;
        file "company";
};
之前有參考過大大的討論,至此應是沒錯。但底下就不知了。
#vi /var/named/company
$TTL 86400
$ORIGIN company.com.tw.
@  IN  SOA  ns1.domain.com.tw. root.ns1.domain.com.tw. (
    2003030101 28800 14400 604800 86400 )
   IN  NS  ns1.domain.com.tw.
   IN   NS  ns2.domain.com.tw.
$ORIGIN domain.com.tw.
ns1  IN  A  61.219.18.231
ns2  IN    A  61.219.18.233
$ORIGIN company.com.tw.
www  IN  A  218.19.38.25
ftp  IN    A  218.19.38.26
這樣設定完後,若client輸入http://www.company.com.tw/
ftp://ftp.company.com.tw不知是否ok?還是哪設定有誤呢?特別是
紅字部分。
主題: [最佳][DNS]網域代管
作者: ohmygod2003-06-16 19:36
請有經驗的大大能指導一下,因小弟這禮拜就要幫客戶做這件事,但怕會設定錯
誤,讓公司及客戶對我沒信心,所以比較急一些。
主題: [最佳][DNS]網域代管
作者: shengeih2003-06-16 19:38
引述: "ohmygod"
請有經驗的大大能指導一下,因小弟這禮拜就要幫客戶做這件事,但怕會設定錯
誤,讓公司及客戶對我沒信心,所以比較急一些。


您的OS應該是用Linux 的吧....!!

如果你很緊急的話,可以先用 Webmin 工具來做設定....!先給客戶交差,然後在慢慢的了解如何設定 DNS......!
主題: [最佳][DNS]網域代管
作者: ohmygod2003-06-16 19:42
dns 之前都已設定過,該學的也學了,不過幫客戶代管還是頭一遭,我上面寫的是我個人的認知,
不曉得有設定錯誤的地方嗎?
註:要就一次OK,這樣才顯得出專業啊(別人在看待你時)
主題: [最佳][DNS]網域代管
作者: duan2003-06-16 21:16
引述: "ohmygod"
dns 之前都已設定過,該學的也學了,不過幫客戶代管還是頭一遭,我上面寫的是我個人的認知,
不曉得有設定錯誤的地方嗎?
註:要就一次OK,這樣才顯得出專業啊(別人在看待你時)


DNS 查詢的兩個環節, 一個是讓別人知道這個 doamin 的 DNS 是那幾台,
另一個是設定 DNS 的機器對這個 domain 所回應的查詢正確.

第一個環節您還沒進行, 但是這個部份很簡單, 就如同您上面所述.
第二個環節比較麻煩, 但是可以先設好, 然後用工具來測試 (nslookup,dig,host)
設定是否正確.

如果您真的很在意且很希望能一次 ok, 那最好的方式就是先去申請一個
.idv.tw 的 domain (因為最便宜) , 然後設定看看. 這個從申請到設定生效,
兩天之內應該可以 ok .

供您參考   :)
主題: [最佳][DNS]網域代管
作者: ohmygod2003-06-16 21:28
時間急迫,來不及了,因周五前要ok,能通,所以大概明後天就一定要動工。
主題: [最佳][DNS]網域代管
作者: shengeih2003-06-16 22:41
引述: "ohmygod"
時間急迫,來不及了,因周五前要ok,能通,所以大概明後天就一定要動工。


既然您時間急迫,而又何必固守一方呢!?

你要換輪胎,不用千斤頂,而要用磚塊把車子頂起來......!那也是一種方法...!

使用工具不是一種罪惡好嗎!
主題: [最佳][DNS]網域代管
作者: abelyang2003-06-16 22:51
#vi /var/named/company
$ORIGIN domain.com.tw.
ns1 IN A 61.219.18.231
ns2 IN A 61.219.18.233


 
這個不用設,設了也沒有用因為不屬於這個  Zone (company.com.tw)
那你會想它怎麼知道 IP 呢 他自己會再用一次 Query 去查
其他的都沒有什麼問題了...
不過,你想想哦,今天你幫這家代管,明天你可能又要多代管三家,後天 company
又要自己管,這種 Custom 的變動問題你勢必得做一番處理
為了你以後或接手的人著想建議你可以開發一套 tools 來處理
我自己是以 C + mysql 的方式來做,代管的網域名稱高達數千筆
做得好每天誰進來代管誰退出代管我壓根都不關心
主題: [最佳][DNS]網域代管
作者: ohmygod2003-06-17 00:07
引述: "abelyang"
#
那你會想它怎麼知道 IP 呢 他自己會再用一次 Query 去查


什麼意思呢?不太懂。
主題: [最佳][DNS]網域代管
作者: netman2003-06-17 11:46
目前是卡在設定"內容"上,不管手動設還是用工具設(含語音操控方式),
若內容錯了,就都一定是錯。

光從上面的設定來看,還好,沒太大問題。但請留意:
1) /var/log/messages
2) cache 問題(存在別人 dns 的 ttl )
3) 修改注冊所需的更新時間(通常是 48 小時)
4) 將下面三行砍掉(在 /var/named/company ):
代碼: [選擇]
$ORIGIN domain.com.tw.
ns1 IN A 61.219.18.231
ns2 IN A 61.219.18.233

否則有 out of zone 的 error 。
主題: [最佳][DNS]網域代管
作者: abelyang2003-06-17 11:49
嗯~這本來就是容易混淆之處
你在 domain.com.tw. 裏面可以指定 ns1.company.com.tw. 的 IP 嗎 ?
那你也可以指定 phorum.study-area.org www.yahoo.com ....囉 ?!
想想看 domain/zone 的架構圖,兩個不同的 zone 你是不能這樣定的
你去看 log 就會發現 OutSide of zone 這樣的訊息了除非你有 com.tw. 的主控權,

當然,你會想,當你代管10個 xxxN.com.tw. 的網域名稱時,那我就把  zone 設成
com.tw ,那也是不行的,在 DNS 的術語中那叫做 bad refereral ,你可以去看
看 http://dnsrd.nctu.edu.tw (這個有些地方較深入 )或 http://dns-learning.twnic.net.tw (這個較淺)
主題: [最佳][DNS]網域代管
作者: ohmygod2003-06-17 12:32
引述: "shengeih"
既然您時間急迫,而又何必固守一方呢!?
你要換輪胎,不用千斤頂,而要用磚塊把車子頂起來......!那也是一種方法...!
使用工具不是一種罪惡好嗎!


這位仁兄的論調實在不太贊同,沒錯,解決問題有很多方式,但重點不是將這
問題解決就好了,而是要了解觀念的正確性,就如同我提的這個問題,或許執行
起來沒啥大礙,但無形中觀念已有了偏差,就像一個人不小心跌倒了,肌肉內部
組織已潰爛,但醫生僅將表面做簡單處理,而未將內部潰爛處做進一步處理,你
想這個人好得起來嗎?
學習任何系統最重要的就是觀念的正確性,這也是我一直急於找出問題的錯誤
所在,您沒發現到後來我都懶得回你了,因我要學的是更正確的觀念,對在那邊
與您一搭一唱,實沒多大興致。

最後感謝netman及abelyang幫我糾正我觀念上的偏差。
主題: [最佳][DNS]網域代管
作者: abelyang2003-06-17 12:51
既然 netman 兄給我置頂了, 我就來貢獻一下好了 ^^"
DNS 代管程式
/* DNS colocation sample code for c
Table: rr
CREATE TABLE rr (
  SN int(10) NOT NULL auto_increment,
  3LD varchar(64) NOT NULL default '',
  FQDN varchar(64) NOT NULL default '',
  IPADDR varchar(64) NOT NULL default '',
  TYPE varchar(10) NOT NULL default 'A',
  MODIFY timestamp(14) NOT NULL,
  PRIMARY KEY  (SN)
) TYPE=MyISAM;

gcc -o prog_name prog.c -Ipath_of_mysql_include -Lpath_of_mysql_lib -lmysqlclient
*/


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <mysql.h>
#include <time.h>

int main( void)
{
//SLD 為網域名稱, filename 為 zone file 名稱
char SLD[10000][64],filename[64];
FILE *in;
MYSQL mysql;
MYSQL_RES *result,*result1;
MYSQL_ROW row,row1;
time_t se;
struct tm *t;
//序號變數,看你需不需要囉,固定也可以
char serial[14]={""};
int i=0;
//SOA 處請注意 TAB 鍵的問題, Copy&Paste 可能會出錯
char *SOA1="$TTL 3600\n@ IN SOA MASTER_HERE EMAIL_HERE. (\n";
char *SOA2="    \t3600\n\t600\n\t864000\n\t38400\n)\n IN NS MASTER_HERE.\n IN NS SLAVE_HERE.\n";

//要知道有那些網域名稱代管
char *sql="select 3LD from rr group by 3LD order by 3LD";
//那些網域名稱設定的 Resource Record (RR)
char sql1[200]="select FQDN,TYPE,IPADDR from rr where 3LD='";
memset(SLD,0x00,sizeof(SLD));
memset(filename,0x00,sizeof(filename));
time(&se);
t=gmtime(&se);
//設定 SOA 中的序號
sprintf(serial,"\t%d%d%d%d\n",t->tm_year+1900,t->tm_mon,t->tm_mday,t->tm_hour);

// mysql function 的用法可查 http://www.mysql.com 上的文件
mysql_init(&mysql);
mysql_options(&mysql,MYSQL_OPT_COMPRESS,0);
mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"odbc");
mysql_real_connect(&mysql,"mysql_host","username","password","database",0,NULL,0);//建立與 MYSQL 的連線

if ( mysql_query(&mysql,sql)) {
    printf("Zone check error\n");
     exit(-1);
}

result = mysql_use_result(&mysql);
/*
# named.conf 的設定範例,簡略版,如果你做 DNS 代管,
# 建議你要加上 logging 的項目
options {
        directory "/var/named";
pid-file "/var/run/named/named.pid";
recursion no;
allow-transfer {
SLAVE_HERE;  //SLAVE_HERE 是你的 slave 主機,但是 zone 是變動的
                             // slave 要怎麼設呢 ?
                      // 建議你改用 FTP ,自己寫一個 FTP script 代替 Zone transfer

        };
};

zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
};

zone "." {
type hint;
file "named.ca";
};

# include 代管的 domain 設定檔
include "/etc/named.3ld.zone";

*/

// 這個檔多了一個 .1 哦,因為怕意外而故一些預防,沒有 .1 的才是被 include 的
if ((in=fopen("/etc/named.3ld.zone.1","w"))==NULL) {
    printf("3LD conf files open failure\n");
    exit(-1);
}

while((row = mysql_fetch_row(result))!=( MYSQL_ROW *)NULL) {
       fprintf(in,"zone \"%s\" {\n\ttype master;\n\tfile \"%s.3LD\";\n};\n\n",*row ,*row);

/*
會產生如下內容:
zone "xxx.com.tw" {
        type master;
        file "xxx.com.tw.3LD";
};

zone "yyy.com.tw" {
        type master;
        file "yyy.com.tw.3LD";
};
*/
// 將每一個網域名稱存起來.即使你代管一萬個,也不能設成 com.tw 的 zone 啦
strcpy(SLD[i++],*row);
}

fclose(in);

while ( --i >=0 ) {
     memset(sql1,0x00,sizeof(sql1));
     memset(filename,0x00,sizeof(filename));
     strcpy(sql1,"select FQDN,TYPE,IPADDR from rr where 3LD='");
     strcat(sql1,SLD);
     strcat(sql1,"'");
     strcpy(filename,"/var/named/");
     strcat(filename,SLD);
     // filename=xxx.com.tw.3LD
     strcat(filename,".3LD");
     if ( mysql_query(&mysql,sql1)) {
          printf("SQL error:%s",sql1);
          exit(-2);
     }
if ((in=fopen(filename,"w"))==NULL) {
     printf("3LD zone files open failure\n");
     exit(-1);
}
     result1 = mysql_use_result(&mysql);
//輸出 xxx.com.tw. 的 SOA 及 NS
     fprintf(in,"%s",SOA1);
     fprintf(in,"%s",serial);
     fprintf(in,"%s",SOA2);
//輸出 RR
     while((row1 = mysql_fetch_row(result1))!=( MYSQL_ROW *)NULL) {
          fprintf(in,"%s.\t3600\tIN\t",*row1);
          fprintf(in,"%s\t",*(row1+1));
//我只讓人家設一個 MX,如果客戶懂得設兩個 MX 且知道如何讓其資料同步的
//話,他的技術實在沒有代管的必要了
               if (strcmp(*(row1+1),"MX") == 0) {
                    fprintf(in,"10\t");
          }
          fprintf(in,"%s\n",*(row1+2));
     }
fclose(in);
}
mysql_close(&mysql);
}

下面是 cronjob 的部份:
#代管程式
/home/abel/DNS_colocation
#檢查 zone 的個數
master=`grep -c 'master' /etc/named.3ld.zone.1`
#至少要一個以上才是正確的.不正確 DNS daemon 不做更新
if [ "$master" -gt 1 ] ; then
        mv -f /etc/named.3ld.zone.1 /etc/named.3ld.zone
        cp /etc/named.3ld.zone /var/named
        killall named
        named
fi



SLAVE 主機的做法:
#就一個 cronjob 的 sh 程式
cd /var/named
rm -f *.3LD
ftp -n MASTER_HOST <<!
user username password
prompt
cd /var/named
mget *.3LD
get named.3ld.zone
bye
!
killall named
named

這樣兩邊的 DNS 的設定檔就一模一樣了,注意 SLAVE 中的 named.conf 的
include 路徑就可以了
就這樣囉~DNS 的資料同步除了 DNS 本身的 zone transfer 外,用什麼方法都
是可以的,你也可以在  Slave 主機上再跑 dns_colocation 的程式也可以
好了~這樣你以後就輕鬆了吧~
不一定要和 c , 我試過 php perl shell 都可以,只要你的功力夠就好了
看不懂 @@ , 再回去多磨練磨練
主題: [最佳][DNS]網域代管
作者: shengeih2003-06-17 13:02
建議解決方式而已....!大哥不用那麼誇張的回應吧...!!!

解決方式而已好嗎!!!

祇是提議最快解決方式而已....您的反應太大了吧!
主題: [最佳][DNS]網域代管
作者: netman2003-06-17 16:56
引述: "shengeih"
建議解決方式而已....!大哥不用那麼誇張的回應吧...!!!

解決方式而已好嗎!!!

祇是提議最快解決方式而已....您的反應太大了吧!

okay.... 點到為止....
我一直強調大家上來討論就好,別管別人的話是否中聽,
將精神放在"討論中學到了甚麼"吧。。。。

p.s.
事實上我的脾氣一點也不好,真感謝大夥的包容。感謝再感謝﹗
主題: [最佳][DNS]網域代管
作者: beethobear2003-06-18 17:29
ABEL兄借問一下
您是在TWNIC那個ABEL嗎?

呵呵 :lol:  :lol:
主題: [最佳][DNS]網域代管
作者: liber2003-06-18 17:56
小弟有去 TWNIC 上過他們開的 DNS 課程,讓我到今天還回味無窮

我很推薦大家去聽

不過,去年開始這項 DNS 教學服務交給像 "網路中文" "Hinet" 這些去辦

.........
主題: [最佳][DNS]網域代管
作者: abelyang2003-06-18 19:27
哦,想不到還有人知道我, 我並沒有常在公開場合露臉  ^^"
我現在在TWNIC 沒有錯
至於 TWNIC DNS 的訓練課程今年還有,
預計今年的七到十月會開課, 只是不是我講的
我們委由 台大師大台科大交大....(北新中高東都有)等學校辨理
主要講
DNS 設定
LOG/IPv6
BIND 9
DNS flow
DNS Security
常見錯誤
共兩天

預計花二佰萬免費提供給 .tw 網域名稱的擁有者
平均一個人約花我們一千元/天的成本
如果有報上名大概就值回繳 DN 的錢了
現在巳快準備完成了
至於 liber 所說的那些我想較著重 DN 的作用吧
我也沒有去聽過,沒法評論,畢竟人家是商業的公司

PS:因為我接觸的 User 太多,怒我無法記起兩位
主題: [最佳][DNS]網域代管
作者: beethobear2003-06-19 08:54
abel兄既然來了
以後可以常來逛STUDY-AREA呀
順便教教我們這些學員

或是到新站去貢獻一些可流傳久quote="abelyang"]

會不會ㄠ太兇呀 :oops:  :oops:
呵呵
 :lol:  :lol:  :lol:

引述: "abelyang"
哦,想不到還有人知道我, 我並沒有常在公開場合露臉  ^^"
我現在在TWNIC 沒有錯
至於 TWNIC DNS 的訓練課程今年還有,
預計今年的七到十月會開課, 只是不是我講的
我們委由 台大師大台科大交大....(北新中高東都有)等學校辨理
主要講
DNS 設定
LOG/IPv6
BIND 9
DNS flow
DNS Security
常見錯誤
共兩天

預計花二佰萬免費提供給 .tw 網域名稱的擁有者
平均一個人約花我們一千元/天的成本
如果有報上名大概就值回繳 DN 的錢了
現在巳快準備完成了
至於 liber 所說的那些我想較著重 DN 的作用吧
我也沒有去聽過,沒法評論,畢竟人家是商業的公司

PS:因為我接觸的 User 太多,怒我無法記起兩位
主題: [最佳][DNS]網域代管
作者: liber2003-06-19 10:09
好像之後都是委外舉辦了,記得當時好像 TWNIC 要去大陸辦一些交流還是活動所以之後就比較沒有消息了

我還是比較懷念 TWNIC 小小的會議室 ~~ ^_^
主題: [最佳][DNS]網域代管
作者: 小二黑2003-06-21 14:39
看了上面的討論有一點不解,像在被代管的網域company.com.tw正解區域檔內
不需設定他的ns的a紀錄,那若我在domain.com.tw的zone file內也沒設我自己
ns的a紀錄,這樣子可行嗎?若不行的話,那代管網域的zone file為何就可以不設
呢?到底是怎樣的查詢流程呢?
主題: [最佳][DNS]網域代管
作者: bowin2003-06-21 16:38
請教學長們一個關於"一個NS管多個Domain"的問題, 因我在實作時碰到下面的
error message:

---------/var/log/messages------------------------------------
Jun 20 18:33:32 www named[15096]: running
Jun 20 18:33:32 www named[15096]: dns_zone_load: zone bowin.biz/IN: loading master file named.bowin.biz: not at top of zone
Jun 20 18:33:32 www named[15096]: dns_master_load: named.bowin.biz:10: not at top of zone
Jun 20 18:33:32 www named[15096]: listening on IPv4 interface eth1, 192.168.1.1#53
Jun 20 18:33:32 www named[15096]: listening on IPv4 interface eth0, 202.129.xxx.236#53
Jun 20 18:33:32 www named[15096]: listening on IPv4 interface lo, 127.0.0.1#53
Jun 20 18:33:32 www named[15096]: no IPv6 interfaces found
Jun 20 18:33:32 www named[15096]: the default for the 'auth-nxdomain' option is now 'no'
Jun 20 18:33:32 www named[15096]: loading configuration from '/etc/named.conf'
Jun 20 18:33:32 www named[15092]: using 1 CPU
Jun 20 18:33:32 www named: named startup succeeded
Jun 20 18:33:32 www named[15092]: starting BIND 9.1.0 -u named

下面是我的設定內容:
------/etc/named.conf----------------
zone "bowin.com" IN {
        type master;
        file "named.bowin.com";
};

zone "bowin.biz" IN {
        type master;
        file "named.bowin.biz";
};

--------/var/named/named.bowin.com-----------------------
$TTL 86400
@       IN      SOA     www.bowin.com. root.bowin.com. (
                        99102706
                        10800
                        3600
                        604800
                        86400 )
www.bowin.com.  IN      A       202.129.xxx.236
bowin.com.          IN      A       202.129.xxx.236
                          IN      A       202.129.xxx.236
@                       IN      MX      10      www.bowin.com.
@                       IN      NS      www.bowin.com.
www                   IN      A       202.129.x.236
@                       IN      A       202.129.x.236
ftp                      IN      CNAME   www
proxy                 IN      CNAME   www
mail                   IN      CNAME   www

------/var/named/named.bowin.biz-------------------
$TTL 86400
$ORIGIN bowin.biz
@       IN      SOA     www.bowin.com. root.bowin.com. (
                        03060106
                        10800
                        3600
                        604800
                        86400 )
@         IN NS www.bowin.com.
www     IN A  61.56.x.37


有上列的error log是因為我SOA重複了嗎? 因為在netman大大的DNS一文中提到每一個記錄檔只能有一個 SOA,不得重複.那我該如何設定才是正確的?
Thank you!
主題: [最佳][DNS]網域代管
作者: 小二黑2003-06-21 17:44
看了上面的討論有一點不解,像在被代管的網域company.com.tw正解區域檔內
不需設定他的ns的a紀錄,那若我在domain.com.tw的zone file內也沒設我自己
ns的a紀錄,這樣子可行嗎?若不行的話,那代管網域的zone file為何就可以不設
呢?到底是怎樣的查詢流程呢?
主題: [最佳][DNS]網域代管
作者: abelyang2003-06-21 23:10
bowin 的問題:
   你的 $ORIGIN 最後忘了 "." , 所以 @ 變成 bowin.biz.bowin.biz.
   就會出現 no at top of zone (top of zone 是 bowin.biz.)的訊息 ()

    另外,就是你的 bwin.com 中的 NS 記錄習慣上我們會將他接在 SOA
    之後,你 NS 放那麼後面沒有問題嗎 (這我不敢確定) ? 如果有問題,那
    影響的可是兩個 zone 哦...所以主要的那一個一定不能犯錯...

引用
看了上面的討論有一點不解,像在被代管的網域company.com.tw正解區域檔內
不需設定他的ns的a紀錄,那若我在domain.com.tw的zone file內也沒設我自己
ns的a紀錄,這樣子可行嗎?若不行的話,那代管網域的zone file為何就可以不設
呢?到底是怎樣的查詢流程呢?


這個問題,分兩部份:
domain.com.tw. 中的 ns 沒 A 記錄是不可行的因為是權威主機的關係,你都不知
到 NS 在那裏了,別人更不會知道了...

代管的網域不設因為那個名稱不歸他管,所以如果向 DNS 查詢, 一開始沒有 Cache
的因素下,其流程會如下:
查: www.company.com.tw.
Client                    Resolver query www.company.com.tw

Client DNS             根據 "." 的設定向 named.ca 中的主機詢問,十三部 (擇一)

.Root Server          根據 "." 中的 tw. 記錄回應, 這個記錄登記在 IANA 中
                            (上層的 DNS 都是非遞迴的,只會給你 NS,. tw. com.tw. 皆是)

Client DNS             tw. 有六個   , 擇一

tw. DNS                 回應 com.tw. 有那些,有六部

Client DNS             擇一

com.tw.                 回應 ns1.domain.com.tw  
                            (這裏就是 TWNIC 的 DNS 指定)
                            在這裏的設定如果 company.com.tw.指定的 NS 是
                            ns1.domain.com.tw.  TWNIC 是不記 User 所指定的 IP 的
                            (ns1.domain.com.tw 是 com.tw. 下的名稱,但不是
                            company.com.tw. 的名稱,雖可在 com.tw. 中寫下 ns1 的 IP
                            但是會有許多問題..........(想想看為什麼 ?)

Client DNS            得到 ns1.domain.com.tw 後,因為此次巳有 Cache, 所以
                            詢問 com.tw. DNS

com.tw.                 查 domain.com.tw. 的 NS ,亦得到ns1.domain.com.tw.
                            並給予 位址

Client DNS             在這個時候就會有 NS/A RR,請注意,他問的是 NS RR
                            A 是附帶的,此時會有兩種情況
                            Client DNS 要 A RR , 直接到 ns1.domain.com.tw. IP
                                    問 www.company.com.tw. IP
                            Client DNS 不要 這個 NS 帶來的 A,到 ns1.domain.com.tw
                                    問 ns1.domain.com.tw. 的 A RR
                            你會問,到底要不要, 如果 named 中有設  
                             options {
                                         ................;
                                         fetch-glue no;
                             };
                            那就不會要 A ,為什麼不要 A,不是較快嗎 ?....
                            這樣好像解譯不完了..... (想想看, 安全性的問題哦)
                            一般的設定都是會要 A 的,但從國外來的(字尾沒有 tw.)
                            大多不會要 A  (....想想看)
...後面我想你應該可以判斷的,這個例子是因為  domain.com.tw. /
company.com.tw. 的 NS 都是 ns1.domain.com.tw. ,如果 company 的 NS
是 colocation.domain.com.tw. 你就可以體會的更深了 ....(仔細想想哦)
有時間大家多多討論
主題: [最佳][DNS]網域代管
作者: 小二黑2003-06-22 01:55
引述: "abelyang"


                            Client DNS            得到 ns1.domain.com.tw 後,因為此次巳有 Cache, 所以 詢問 com.tw. DNS

com.tw.                 查 domain.com.tw. 的 NS ,亦得到ns1.domain.com.tw. 並給予 位址


client dns的cache不是已經有ns1.domain.com.tw的ip了嗎?為何還要重新詢問
com.tw dns呢?難道cache裡所記載的ns1.domain.com.tw ip有指明是負責
company.com.tw的dns ip,所以cache裡沒有記載負責domain.com.tw網域的
dns ip,所以才要再query一次,我這樣解釋是對的嗎?
主題: [最佳][DNS]網域代管
作者: abelyang2003-06-22 14:53
引用
client dns的cache不是已經有ns1.domain.com.tw的ip了嗎?為何還要重新詢問 com.tw dns呢?

沒有錯, Cache 是巳經有 ns1.domain.com.tw 的 IP 了, 90% 以上的 DNS 都
會是這樣的處理的,但是少數對安全性要求較較高的 NameServer , 不會 Cache
NS 帶來的 A 記錄, 因為這可能會發生 DNS Spoofing 的問題
你可以用 Google 查一下 DNS Spoofing (有好幾種方式),
我想就可以了解一個大概了如果對其有不了解的地方,可以再貼上來討論

引用
難道cache裡所記載的ns1.domain.com.tw ip有指明是負責
company.com.tw的dns ip,所以cache裡沒有記載負責domain.com.tw網域的
dns ip,所以才要再query一次,我這樣解釋是對的嗎?

我沒記錯的話 Cache 是不會去分 domain 的,他只是本能的去記 Record 而以

不過有個問題可以考考大家...Root Server 有 13 部, 雖分散在全世界,
但是極為不平圴, 為什麼不每個國家擺個一部呢 ? 那不是很省事嗎 ?
不知道有沒有人知道答案 ?
主題: [最佳][DNS]網域代管
作者: netman2003-06-22 19:38
引述: "abelyang"
不過有個問題可以考考大家...Root Server 有 13 部, 雖分散在全世界,
但是極為不平圴, 為什麼不每個國家擺個一部呢 ? 那不是很省事嗎 ?
不知道有沒有人知道答案 ?

嗯,這個我真的不知道,
但我想問: resolver 能夠自己決定問哪台 root ns 嗎?(without forwarder)
若不能,那就算設在同一個 LAN 又如何?
主題: [最佳][DNS]網域代管
作者: abelyang2003-06-23 00:15
第一個問題 : . 有13 部 com. 也是十三部,好像最多就是 13 部外國人不是較不喜歡 13 嗎 ? 其實原因在於 UDP Payload Size, 如果有第 14 部,整個有關 . 的 DNS 封就要拆成二個了 ...一個 UDP 都不一定能保證了,更何況兩個
(註: DNS 封包有一定的格式..可見 RFC 1034/1035)


另外提供一個概念,以一般而言,一個 DNS Packet 大概在 80~100 bytes

另外就是 Root Server 的取用原則....
依 RFC 1033 所定它是 cycle 的方式,這也是大家普遍認為的方式
但是 ISC BIND 如何實作他呢 ? 其實他還是有一套除了 cycle 外的演算法
透過一定的計算再決定去問那一台,
我舉個實例, .tw 的 Root Server 近一年來每秒的平均查詢次數
並不一樣,六部中最高和最低約差了一倍,如果是 cycle ,以一年除下來的
每秒平均值來說,若差到 5% 就算多了...

所以若說是 cycle ( random) 的也對不是 cycle 的也對,完全看站在 Protocol
或 Sofeware 的角度...誰叫 ISC BIND 最大呢 ?
(這個演算法我並不清楚, 純粹從結果來反推,  . 或 com. 皆有這個狀況)

引用
resolver 能夠自己決定問哪台 root ns 嗎?(without forwarder)
若不能,那就算設在同一個 LAN 又如何?


Resolver 並不能決定...就連 BIND 從設定面也難以決定,
但是還是可以使用 named.conf 中的 rrset 來決定每次就用那一部
但是從實例來看沒有多少人知道如何設 (那就是沒有作用了)

Root Server 是一種 Internet 的資源,美國不想放手,
對於增進查詢的效率,從純粹 DNS 的方法可能沒有多大作用
但是像大陸這種國家對於其國內的 DNS Query 要轉到美國
(Root Server 約有半數在美國本土) 是蠻感冒的
Root Server 不是不能再加,技術面也不是不能解決我覺得是 ICANN
老大的心態問題 ...(離題了   :lol: )
主題: [最佳][DNS]網域代管
作者: bowin2003-06-23 11:28
謝謝abelyang大的回覆.
另外在請教您提到
引述: "abelyang"
bowin 的問題:
   
    另外,就是你的 bwin.com 中的 NS 記錄習慣上我們會將他接在 SOA
    之後,你 NS 放那麼後面沒有問題嗎 (這我不敢確定) ? 如果有問題,那
    影響的可是兩個 zone 哦...所以主要的那一個一定不能犯錯...


請問如果NS擺在較後面有可能會造成什麼影響嗎?

謝謝
主題: [最佳][DNS]網域代管
作者: abelyang2003-06-23 11:38
引用
請問如果NS擺在較後面有可能會造成什麼影響嗎?


我是看了你的設定, 所以實驗了一下,我發現放在太後面, 會出現
找不到 NS RR 的訊息, 如果沒有 NS RR,這個 Zone 就沒有效了
你可以試試看移 NS 的位置, 如放在最後面 ? 放在中間 ? 而後以
named -f -g -c /etc/named.conf 來啟動,他會將 log 顥示在畫面上
你就會知道了 ...
實驗看看  :D
主題: [最佳][DNS]網域代管
作者: abelyang2003-06-23 16:41
更正一下:
引用
所以若說是 cycle ( random) 的也對不是 cycle 的也對,完全看站在 Protocol
或 Sofeware 的角度...誰叫 ISC BIND 最大呢 ?
(這個演算法我並不清楚, 純粹從結果來反推, . 或 com. 皆有這個狀況)


這裏我想我錯了~~ :cry:
我將 BIND 9.2.2 的 source code trace 了一徧,
並沒有針對 Root Server 做特殊處理,確實就是 Cycle 查詢方式
我想可能的原因是和 DNS 和 . 間的網路距離有關,
就好比如果我用到放在歐洲的 Root Server , 以其 UDP
封包的特性, 失敗的可能性本就可能較高,
我想這樣解釋可能較合理吧 ~~
真理總是愈討論愈明

以下是今天的 tw. Root Server 的統計圖,可以看得出 Query 量是不太一致的
所以我才會這麼說(這張圖的 SOA 有問題,但不重要)
(http://211.72.210.199/pic/TLD-d.png)
PS:奮鬥了三天,終於學會了 RRDTOOL 了,真有成就感
主題: [最佳][DNS]網域代管
作者: netman2003-06-24 11:51
嗯,跟高手討論,是一種學習,也是一種享受﹗

給 abel 拍拍手~~~   ^_^
主題: [最佳][DNS]網域代管
作者: peterkim2003-07-06 19:02
就代管而言,我很推薦用 PowerDNS + PowerAdmin 來架設 DNS,
他把 record 丟到 mysql,
PowerAdmin 是 php 寫的 web GUI.