DNS 越�碓街匾�,尤其未�� IPv6 �@��需要 128bits 位址的玩意�骸R�槲���B IPv4 的 32bits 都背不起�砹耍� 128bits 要怎�N背? �@�r主�C名�Q自�咏馕�� IP 就很重要啦!那就是 DNS。但是 DNS 的架�O有�c麻��,重�c是原理的部分比�^不好理解。 因此在�@��小���中,�我��先�碚���c�W路主�C名�Q有�P的一些知�R,�@�蛹茉O DNS 才不��出���}。
19.1.1 用�W路主�C名�Q取得 IP 的�v史�Y源
目前的�W�H�W路世界使用的是所�^的 TCP/IP �f定,其中 IP �榈谒陌娴� IPv4 。不�^,�@�� IPv4 是由 32 位元所�M成,�榱巳四X已��D成四�M十�M位的�底至耍�例如 12.34.56.78 �@�拥母袷健.�我��利用 Internet �魉唾Y料的�r候,就需要�@�� IP ,否�t�Y料封包怎�N知道要被送到哪�e去?
然而人�X��於 IP �@�N�底值耐嬉�海����力��在是不怎�N�印5�是要上 Internet 又一定需要 IP,怎�N�k?�榱��付�@�����}, 早期的朋友想到一��方法,那就是利用某些特定的�n案�⒅�C名�Q�c IP 作一�����, 如此一�恚�我��就可以透�^主�C名�Q�砣〉迷�主�C的 IP 了!真是��好主意,因�槿祟���於名字的���力可就好多了! 那就是 /etc/hosts �@���n案的用途了。
可惜的是,�@��方法�是有缺憾的,那就是主�C名�Q�c IP 的����o法自�屿端�有的��X�雀�新, 且要�⒅�C名�Q加入��n案�H能向 INTERNIC �]�裕�若 IP �盗刻�多�r,��n案��大到不像�,也就更不利於其他主�C同步化了。 如下�D所示,用�舳穗��X每次都得要重新下�d一次�n案才能�利��W!
在第四章 4.2.1 �e面我���s略��^ /etc/hosts �@���n案的用法,基本上��n案�热菥褪恰�IP 主�C名�Q 主�C�e名一 主�C�e名二...』。在�e面最重要的就是 localhost ���到 127.0.0.1 �@��咚咚!你千�f不能�h除��P��的。�@�e也再次���{,在你的私有�W域�炔浚�最好�⑺�有的私有 IP �c主�C名�Q���都��入�@���n案中啦!
早期�W路尚未流行且��X�盗坎欢�r,/etc/hosts 倒是��蛴玫模�但自�� 90 年代�W路�衢T化後,�我�n案 /etc/hosts 的��W���}就�l生上面�v的��r啦!�榱私�Q�@��日益�乐氐���},柏克�R大�W�l展出另外一套�A�邮焦芾碇�C名�Q��� IP 的系�y, 我���Q它�� Berkeley Internet Name Domain, BIND ,�@��系�y可就��秀的多了~ 透�^�A�邮焦芾恚�可以�p�的�M行�S�o的工作~太棒了!�@也是目前全世界使用最�V泛的�I域名�Q系�y (Domain Name System, DNS) 哩~透�^ DNS ,我��不需要知道主�C的 IP ,只要知道�主�C的名�Q,就能�蜉p易的�B上�主�C了!
DNS 利用�似��钅夸�的架��,�⒅�C名�Q的管理分配在不同�蛹�的 DNS 伺服器��中,�由分�庸芾恚� 所以每一部 DNS 伺服器���的�Y�就不��很多,而且若有 IP ����r也相��容易修改!因�槟闳绻�已�申�到主�C名�Q解析的授�啵� 那�N在你自己的 DNS 伺服器中,就能�蛐薷娜�世界都可以查�到的主�C名�Q了!而不用透�^上�� ISP 的�S�o呢! 自己�邮之�然是最快的啦!
由於目前的 IPv4 已�接近�l送完��的�A段,因此未�砟�� 128bits 的 IPv6 ��逐�u�衢T起�怼D屈N你需要背 128bits 的 IP �砩暇W�幔肯氡厥遣豢赡艿模∫虼诉@��可以透�^主�C名�Q就解析到 IP 的 DNS 服�眨�可以想像的到,它��越�碓街匾�。此外,目前全世界的 WWW 主�C名�Q也都是透�^ DNS 系�y在�理 IP 的���,所以,�� DNS �禳c�r,我����o法透�^主�C名�Q�磉B�,那就�缀跸喈�於�]有 Internet 了!
因�� DNS 是�@�N的重要,所以即使我���]有架�O它的必要�r,�是得要熟悉一下它的原理才好。因此,跟 DNS 有�P的 FQDN、Hostname �c IP 的查�流程,正解�c反解、合法授�嗟� DNS 伺服器之意�x,以及 Zone 等等的知�R作一���J�R才行!
Tips: 在底下的�f明��中,我��有�r��提到 DNS 有�r��提到 BIND ,�@有什�N不同? 由上面的�f明�e面,你可以�t解到, DNS 是一�N�W�H�W路的通��f定名�Q, 至於 Bind �t是提供�@�� DNS 服�盏能��w~�@�幽悴t解了�幔浚� |
第一���c DNS 有�P的主�C名�Q概念,就是『主�C名�Q�c�I域名�Q (hostname and domain name)』的�^念,以及由�@�烧呓M成的完整主�C名�Q Fully Qualified Domain Name, FQDN 的意�x了。在���@��主�}之前,我���砹囊涣谋容^生活化的��}:
�B哥、北�^、台南 �B哥、中�^、台南 �B哥、台北 ...... |
有�]有一�c�c�t解�B哥想表�_的啦?我��上面�v到,DNS 是以��钅夸�分�A�拥姆绞�硖�理主�C名�Q,那我��知道��钅夸�中, 那��目�可以���n名。那�N DNS ��的哪��咚咚跟『目�』有�P?就是那���I域名�Q。�I域名�Q底下�可以��各��主�C名�Q, �M合起�聿攀峭暾�的主�C名�Q (FQDN)。
�e例�碚f,我��常常���l�F主�C名�Q都是 www 的�W站,例如 www.google.com.tw, www.seednet.net, www.hinet.net 等等,那�N我��怎�N知道�@些 www 名�Q的主�C在不同的地方呢?就需要�o他�I域名�Q�樱∫簿褪� .google.com.tw, .seednet.net, .hinet.net 等等的不同,所以即使你的主�C名�Q相同,但是只要不是在同一���I域�龋�那�N就可以被分辨出不同的位置�樱�
我��知道目��涞淖铐��邮歉�目� (/),那�N DNS 既然也是�A�邮降模�最��邮巧赌兀棵恳�拥� domain name �c hostname 又�怎�N分?我���e�B哥所在的��山科大的 WWW 伺服器�槔�好了 (www.ksu.edu.tw) :
在上面的例子��中,由上向下�档牡诙��友e面,那�� .tw 是 domain name ,而 com, edu, gov �t是主�C的名�Q,而在�@��主�C的名�Q之管理下,�有其他更小�W域的主�C,所以在第三�拥�r候,基本上,那�� edu.tw 就�成了 domain name 了!而��山科大�c成大的 ksu, ncku �t成�榱� hostname �樱�
以此�推,最後得到我��的主�C那�� www 是主�C名�Q,而 domain name 是由 ksu.edu.tw 那��名字所�Q定的!自然,我��的主�C就是�管理 ksu.edu.tw �@�� domain name 的 DNS 伺服器所管理的�樱∵@�邮欠癫t解了 domain name �c hostname 的不同了呢?
Tips: �K不是以小�迭c (.) �^分 domain name �c hostname 喔!某些�r刻 domain name 所管理的 hostname ��含有小�迭c。 �e例�碚f,�B哥所在的�Y��鞑ハ�K�]有�~外的 DNS 伺服器架�O,因此我��的主�C名�Q�� www.dic ,而 domain name �是 ksu.edu.tw ,因此全名�� www.dic.ksu.edu.tw 哩! |
19.1.2 DNS 的主�C名�Q��� IP 的查�流程
�s略�t解了 FQDN 的 domain name �c hostname 之後,接下�砦��要�一��@�� DNS 的: (1)�A�蛹��是怎�樱� (2)查�原理是怎�樱靠�是要先知道架��才能知道如何查�主�C名�Q的�龋∷�以底下我��先�斫榻B一下整�w的 DNS �A�蛹��。
我��依�f使用台��W�g�W路的 DNS 伺服器所管理的各 domain �槔�,�⒆钌�拥��山科大 (ksu) �r,之�g的各�永L�u如下�D:
在整�� DNS 系�y的最上方一定是 . (小�迭c) �@�� DNS 伺服器 (�Q�� root),最早以前它底下管理的就只有 (1)com, edu, gov, mil, org, .net �@�N特殊�I域以及 (2)以��家�榉诸�的第二�拥闹�C名�Q了!�@�烧叻Q�� Top Level Domains (TLDs) 喔!
先�碚��一般最上�宇I域 (gTLD) 好了,最早 root �H管理六大�I域名�Q,分�e如下:
名�Q | 代表意�x |
com | 公司、行�、企�I |
org | �M�、�C�� |
edu | 教育�挝� |
gov | 政府�挝� |
net | �W路、通� |
mil | �事�挝� |
但是�W�H�W路成�L的速度太快了,因此後�沓�了上述的六大��e之外,�有�T如 .asia, .info, .jobs (�]1) 等�I域名�Q的�_放。此外,�榱俗�某些��家也能�蛴凶约旱淖钌�宇I域名�Q,因此, 就有所�^的 ccTLD 了。�@�幼鲇惺颤N好�呢?因�樽约旱��家�扔凶钌�� ccTLD ,所以如果有 domain name 的需求,�t只要向自己的��家申�即可,不需要再到最上�尤ド暾��樱�
既然 TLD �@�N好,那�N是否我��可以自己�O定 TLD 呢?��然不行!因��我��得向上�� ISP 申��I域名�Q的授�嗖判�。例如台�车�^最上�拥念I域名�Q是以 .tw �殚_�^,管理�@���I域名�Q的�C器 IP 是在台�常�但是 .tw �@部伺服器必�向 root (.) �]�灶I域名�Q查�授�嗖判� (如上�D 19.1-3 所示)。
那�N每����家之下��的主要下�佑心男╊I域呢?基本上就是原先 root 管理的那六大�。 不�^,由於各�� DNS 都能管理自己�下的主�C名�Q或子�I域,因此,我��的 .tw 可以自行���自己的子�I域名�Q喔! 例如目前台�� ISP 常提供的 .idv.tw 的��人�W站就是一例啊!
再���{一次,DNS 系�y是以所�^的�A�邮降墓芾恚�所以,�注意喔!那�� .tw 只��底下那一�拥倪@���主要的 domain 的主�C而已!至於例如 edu.tw 底下�有�� ksu.edu.tw �@部�C器,那就直接授�嘟唤o edu.tw 那部�C器去管理了!也就是�f『 每��上一�拥� DNS 伺服器所��的�Y�,其��只有其下一�拥闹�C名�Q而已! 』至於再下一�樱��t直接『授�唷唤o下�拥哪巢恐�C�砉芾�樱『呛牵∷�以你就�����知道 DNS 到底是如何管理的吧!
���@�釉O定的原因不是�]有道理的!�@�釉O�的好�就是:每部�C器管理的只有下一�拥� hostname ��� IP 而已,所以�p少了管理上的困�_!而下�� Client 端如果有���},只要���上一�拥� DNS server 即可!不需要跨越上�樱�除�e上面也��比�^��文兀�
�����f�^ DNS 是以�似『��钅夸�』的型�B�磉M行主�C名�Q的管理的!所以每一部 DNS 伺服器都『�H管理自己的下一�又�C名�Q的�D�g』而已, 至於下�拥南�樱��t『授�唷唤o下�拥� DNS 主�C�砉芾砝玻∵@�诱f好像很�@口,好吧!我��就以下�D�碚f一�f原理�樱�
首先,��你在�g�[器的�W址列�入 http://www.ksu.edu.tw �r,你的��X就��依��相�P�O定 (在 Linux 底下就是利用 /etc/resolv.conf �@���n案) 所提供的 DNS 的 IP 去�M行�B�查�了。由於目前最常�的 DNS 伺服器就�� Hinet 的 168.95.1.1 �@�� DNS,所以我��就拿他�碜隼�子吧!嗯!�@���r候,hinet 的�@部伺服器���@�庸ぷ鳎�
整��分�硬樵�的流程就是�@�樱��是得要先��^ . �硐蛳乱�舆M行查�,最�K�是能得到答案的。�@�臃�拥暮锰�是:
好啦!既然 DNS �@�N棒,然後我��又需要架站,所以需要一��主�C的名�Q,那�N我��需要架�O DNS 了�幔慨�然不是,�槭颤N呢?�����B哥提到了很多次的『合法』的字眼,因�樗�就�可娴健菏�唷坏���}了! 我��在第十章��中也提到,只要主�C名�Q合法即可,不�得需要架�O DNS 的啦!
例�}:
透�^ dig ��作出本小��到的 . --> .tw --> .edu.tw --> .ksu.edu.tw --> www.ksu.edu.tw 的查�流程,�K分析每��查��A段的 DNS 伺服器有�撞浚�
答:
事��上,我��可以透�^ 第四章�s略��^的 dig �@��指令���作出喔!使用追�功能 (+trace) 就能�蜻_到�@��目的了。使用方式如下:
|
好了,既然 DNS 系�y使用的是�W路的查�,那�N自然需要有�O�的 port �樱�]�e!很合理!那�N DNS 使用的是那一�� port 呢?那就是 53 �@�� port 啦!你可以到你的 Linux 底下的 /etc/services �@���n案看看!搜�ひ幌� domain �@���P�I字,就可以查到 53 �@�� port 啦!
但是�@�e需要跟大家�蟾娴氖牵�通常 DNS 查�的�r候,是以 udp �@���^快速的�Y料�鬏��f定�聿樵�的, 但是�f一�]有�k法查�到完整的�Y��r,就��再次的以 tcp �@���f定�碇匦虏樵�的!所以��� DNS 的 daemon (就是 named 啦) �r,��同�r��� tcp 及 udp 的 port 53 喔!所以,�得防火��也要同�r放行 tcp, udp port 53 呢!
19.1.3 合法 DNS 的�P�I:申��I域查�授��
什�N?DNS 伺服器的架�O�有『合法』�c『不合法』之分喔?不是像其他的伺服器一�樱�架�O好之後人家就查的到�幔� 非也非也!�槭颤N呢?底下我��就�碚�一�。
我��在第十章也�v�^,申�一��合法的主�C名�Q就是需要�]�裕� �]�跃褪切枰�花�X啦!那�N�]�匀〉玫馁Y料有�煞N,一�N是第十章�到的 FQDN (主�C名�Q),一�N就是申��I域查��唷K��^的 FQDN 就是我��只需要主�C名,��的�O定�Y料就由 ISP �臀��搞定。例如�D 19.1-4 所示, 那部 www.ksu.edu.tw 的��主�C名�Q��� IP 的�Y料就是�管理 .ksu.edu.tw 那���I域的伺服器搞定的。
那什�N是�I域查�授�嗄兀客��佑��D 19.1-4 �斫忉�,我��的 .ksu.edu.tw 必�要向 .edu.tw 那部主�C�]�陨暾��I域授�啵�因此,未�碛腥魏� .ksu.edu.tw 的要求�r, .edu.tw 都���f:『我不知道! �情�去找 .ksu.edu.tw 吧!』此�r,我��就得要架�O DNS 伺服器�碓O定 .ksu.edu.tw 相�P的主�C名�Q���才行喔! 是否很像人�社��的『授�唷坏母拍睿�
也就是�f,��你老�充分的『授�唷唤o你某�工作的�r候,�拇耍�要�M行��工作的任何人, �睦祥�那�知道你才是真正『有�唷坏娜酥�後,都必�要向你�示一�樱�^_^!所以�樱�如果你要架�O DNS ,而且是可以�B上 Internet 上面的 DNS �r,你就必�要透�^『上�� DNS 伺服器的授��』才行!�@是很重要的�^念喔!
�我���w�{一下,要�你的主�C名�Q��� IP 且�其他��X都可以查�的到,你有�煞N方式:
很多朋友可能都有�^申� DNS �I域查�授�嗟慕��,在申��r,ISP 就��要你填�� (1)你的 DNS 伺服器名�Q以及 (2)�伺服器的 IP。既然已�在 ISP 就填��了主�C名�Q�c IP 的���,所以,即使我的 DNS 伺服器�禳c了,在 ISP 上面的主�C名�Q����是查到的 IP 吧?答案是:『�e!』查不到的!�槭颤N呢?
DNS 系�y��的�Y�非常的多,不�^重�c其��有���,一��是��伺服器所在的 NS (NameServer) �苏I,另一���t是��主�C名�Q���的 A (Address) �苏I。我��在�W路上面查�到的最�K�Y果,都是查� IP (IP Address) 的,因此最�K的�苏I要找的是 A �@����才�Γ∥��以�B哥�]�缘� .vbird.org �碚f明好了,�B哥去�]��r, ��在 ISP 的 DNS 伺服器名�Q�� dns.vbird.org,��P��其��就是 NS ,�K非 A ,如下�D所示:
上�D中,�m然在 godaddy 伺服器�扔杏��一�P『要查� .vbird.org �r,�到 dns.vbird.org (NS) 去查,�@��管理者的 IP 是 140.116...』,但是�@�P��只是告�V我��要去下一��伺服器找,�K不是最�K的 A (IP Address) 的答案,所以�得要�^�m往下找 (�S�r�得�D 19.1-4 的查�流程)。此�r,有�追N�Y果���е� dns.vbird.org 的 IP 找不到,或者是最�K的 IP �c godaddy ��的不同的�Y果喔!那就是:
�之,你在 ISP 上面填��的主�C名�Q只是一���⒖加玫模�最�K�是要在你自己 DNS 伺服器��中�O定好才行! �m然可以自己�焊阋幌拢�不�^,通常大家�是��� ISP 上面的 DNS 伺服器主�C名�c自己的�Y料�熘�C名一致, 亦即上�D中,中�g�c最下面方框�鹊� dns.vbird.org 的 NS 及 A 都���到同一�� IP 就是了。
正解的�O定�嘁约� DNS 正解 zone ��的�苏I
那�l可以申�正解的 DNS 伺服器架�O�嗄兀看鸢甘牵憾伎梢裕�只要��I域�]有人使用, 那你先��到了,就能�蚴褂昧�。不�^,因����H INTERNIC 已�定�x出 gTLD 以及 ccTLD 了,所以你不能自�例如 centos.vbird �@�N�W域的!�是得要符合上�� DNS 所�o予的�I域���才行。�e例�碚f,台���人�W站就常使用 *.idv.tw �@�拥念I域名�Q。
那正解�n的 zone �e面主要��了什�N�|西呢?因�檎�解的重�c在由主�C名�Q查�到 IP,而且每部 DNS 伺服器�是得要定�x清楚,同�r,你可能�需要架�O master/slave 架��的 DNS �h境,因此,正解 zone 通常具有底下�追N�苏I:
正解的�I域名�Q只要符合 INTERNIC 及你的 ISP ��即可,取得授�噍^�楹��� (自己取名字)。那反解呢?反解主要是由 IP 找到主�C名�Q,因此重�c是 IP 的所有人是�l啦!因�� IP 都是 INTERNIC �l放�o各家 ISP 的,而且我��也知道,IP 可不能�y�O定 (路由���})!所以�樱�能�蛟O定反解的就只有 IP 的�碛腥耍�亦即你的 ISP 才有�嗔υO定反解的。那你向 ISP 取得的 IP 能不能自己�O定反解呢?答案是不行!除非你取得的是整�� class C 以上等�的 IP �W段,那你的 ISP 才有可能�o你 IP 反解授�唷7�t,若有反解的需求,就得要向你的直�偕�� ISP 申�才行!
那�N反解的 zone 主要��的�Y�有哪些呢?除了伺服器必�涞� NS 以及 SOA 之外,最重要的就是:
�F在你知道一��正解或一��反解就可以�Q�橐�� zone 了!那�N有�]有那�� zone 是特�e重要的呢?有的,那就是 . 啊! ���D 19.1-4 �e面我��就知道,�� DNS 伺服器在自己的�Y料�煺也坏剿�需的�Y��r, 一定��去找 . ,那 . 在哪�e啊?所以就得要有�� . 在哪�e的�� zone 才行啊!�@���� . 的 zone 的�型,就被我���Q�� hint �型!�@�缀跏敲�� DNS 伺服器都得要知道的 zone 喔!
所以�f,一部��蔚恼�解 DNS 伺服器,基本上就要有��� zone 才行,一��是 hint ,一��是�P於自己�I域的正解 zone。�e�B哥�]�缘� vbird.org �槔�,在�B哥的 DNS 伺服器�龋�至少就要有�@��� zone:
你���l�F我�]有 vbird.org �@�� domain 所�� IP 的反解 zone ,�槭颤N呢?��⒖忌厦娴脑���f明吧! ��蔚恼f,就是因�榉唇庑枰�要求 IP �f定的上��碓O定才行!
好了,正反解需不需要成套�a生,在�@�e不用多�f明了吧?^_^!�注意喔,在很多的情�r下, 尤其是目前好多莫名其妙的�I域名�Q�a生出�恚�所以,常常��只有正解的�O定需求而已。不�^也不需要太�^��心啦, 因�橥ǔT诜床榈那�r中,如果你是使用目前台�车�^最流行的 ADSL 上�W的�,那�N ISP 早就已��湍阍O定好反解了!例如:211.74.253.91 �@�� seednet 的浮�邮� IP 反查的�Y果��得到 211-74-253-91.adsl.dynamic.seed.net.tw. �@�拥闹�C名�Q!所以在一般我��自行申��I域名�Q的�r候,你只要��心正解的�O定即可! 不然的�,反正反解的授�喔�本也不���_放�o你,你自己�O定得很高�d也�]有用呀! ^_^
事��上,需要正反解成�π枨蟮拇蟾�H有 mail server 才需要吧!由於目前�W路�l��老是被垃圾、�V告�]件�坠猓� 所以 Internet 的社����於合法的 mail server �定也就越�碓�栏瘛H绻�你想要架�O mail server �r, 最好具有固定 IP ,�@�硬拍芟蚰愕� ISP 要求�O定反解喔!以 hinet �槔�的反解申�:
19.1.6 DNS �Y料�斓念�型:hint, master/slave 架��
你知道的,DNS 越�碓街匾�,所以,如果你有�]�赃^�I域名�Q的�,就可以�l�F,�F在 ISP 都要你填���刹� DNS 伺服器的 IP 哩!因�橐�作��湓�之用嘛!�不能一部 DNS �禳c後,害你的所有主�C名�Q都不能被找到~那真麻��~
但是,如果有�刹恳陨系� DNS 伺服器,那�N�W路上��搜�さ侥囊徊磕兀看鸢甘牵�不知道!因�槭请S�C的~ 所以,如果你的�I域有�刹� DNS 伺服器的�,那�@�刹� DNS 伺服器的�热菥偷猛耆�一模一�樱�否�t,由於是�S�C找到 DNS �碓���,因此若�Y料不同步,很可能造成其他用��o法取得正�_�Y料的���}。
�榱私�Q�@�����},因此在 . (root) �@�� hint �型的�Y料��n案外,�有�煞N基本�型,分�e是 Master (主人、主要) �Y料�炫c Slave (奴�`、次要) �Y料�祛�型。�@�� Master/Slave 就是要用�斫�Q不同 DNS 伺服器上面的�Y料同步���}的。 所以底下�我���砹牧� Master/Slave 吧!
�@�N�型的 DNS �Y料�熘校��e面所有的主�C名�Q相�P�Y�等,通通要管理�T自己手�尤バ薷呐c�O定, �O定完���得要重新��� DNS 服�杖プx取正�_的�Y料��热荩�才算完成�Y料�旄�新。一般�碚f,我���f的 DNS 架�O,就是指�O定�@�N�Y料�斓念�型。同�r,�@�N�型的�Y料�欤��能�蛱峁┵Y料��热萁o slave 的 DNS 伺服器喔!
如前所述,通常你不��只有一部 DNS 伺服器,例如我��前面的例�}查�到的 .ksu.edu.tw 就有 3 部 DNS 伺服器�砉芾碜约旱念I域。那如果每部 DNS 我��都是使用 Master �Y料�祛�型,��有用�粝蛭乙�求要修改或者新增、�h除�Y料�r, 一�P�Y料我就得要做三次,�可能��不小心手滑�е履�撞砍霈F�e�`,此�r可就���X筋了~因此,�@�r使用 Slave �型的�Y料�烊〉梅绞骄秃苡杏茫�
Slave 必�要�c Master 相互搭配,若以 .ksu.edu.tw 的例子�碚f,如果我必�要有三部主�C提供 DNS 服�眨�且三部�热菹嗤�, 那�N我只要指定一部伺服器�� Master ,其他�刹�樵� Master 的 Slave 伺服器,那�N��要修改一�P名�Q����r,我只要手�痈�改 Master 那部�C器的�O定�n,然後,重新��� BIND �@��服�蔗幔�呵呵!其他�刹� Slave 就��自�拥谋煌ㄖ�更新了!�@�右�恚�在�S�o上面可就�p���意的多了~
Tips: 如果你�O定 Master/Slave 架���r,你的 Master 主�C必�要限制 只有某些特定 IP 的主�C能�蛉〉媚� Master 主�C的正反解�Y料��嘞薏藕茫� 所以,上面才��提到 Master/Slave 必�要互相搭配才行! |
另外,既然我的所有 DNS 伺服器是需要同�r提供 internet 上面的�I域名�Q解析的服�眨� 所以不�是 Master �是 Slave 伺服器,他都必�要可以同�r提供 DNS 的服�詹藕茫� 因�樵� DNS 系�y��中,�I域名�Q的查�是『先��先�A』的��B,我��不���缘媚囊徊恐�C的�Y料��先被查�到的! �榱颂峁┝己玫� DNS 服�眨�每部 DNS 主�C都要能正常工作才好啊!而且,每一部 DNS 伺服器的�Y料��热菪枰�完全一致,否�t就��造成用�舳苏业降� IP 是�e�`的!
那�N Master/Slave 的�Y料更新到底是如何�幼鞯哪兀空�注意,Slave 是需要更新�碜� Master 的�Y料啊!所以��然 Slave 在�O定之初就需要存在 Master 才行喔!基本上,不� Master �是 Slave 的�Y料�欤�都��有一��代表��Y料�煨屡f的『序�』,�@��序��抵档拇笮。�是��影�是否要更新的�幼鬣。� 至於更新的方式主要有�煞N:
由上面的�f明�砜矗�其���O��Y料�斓男蛱�最重要的目的就是� master/slave �Y料的同步化。那我��也知道 slave ��向 master 提出�Y料�旄�新的需求,���}是,多久提出一次更新,如果�次更新�r由於�W路���},所以�]有查�到 master 的序� (亦即更新失��),那隔多久��重新更新一次?�@���c SOA 的�苏I有�P,後�m�到正、反解�Y料�灬幔� 再�碓���f明吧!
如果你想要架�O Master/Slave 的 DNS 架���r,�刹恐�C (Master/Slave) 都需要你能�蛘瓶夭判�!�W路上很多的文件在�@��地方都有�c『�W失』,�特�e的留意啊!因�轼B哥的 DNS 伺服器常常���到某些其他 DNS 的�Y料�焱�步化需求,真�X得��龋�
19.3 DNS 伺服器的��w、�N��c cache only DNS 伺服器�O定
�完了一些基�A概念後,接下�碜�我���砹囊涣模�那如何�O定好 DNS 伺服器啊?�@��然就得由��w安�b�起啦! 在�@��小�,我��先不要� DNS ��的正反解咚咚,只�v到 hint �@�� . (root) 的 zone,�一�最��蔚�H有快取的 DNS 伺服器 (Caching only DNS server) 吧!
�K於�U�都�f完了!相信你大概也有�c累的吧?�B哥是�U累的啦,因�槭直邸⒓珙i酸痛的毛病�H�乐�....咦!�v�@���致铮� @_@ 好啦,我���K於要�戆惭b DNS 所需要的��w了!��得前面提�^的,我��要使用的 DNS ��w就是使用柏克�R大�W�l展出�淼� BIND (Berkeley Internet Name Domain, BIND) �@��啦!那�N怎�N知道你安�b了�]?不就是 rpm �c yum �幔孔约翰椴榭础�
[root@www ~]# rpm -qa | grep '^bind' bind-libs-9.7.0-5.P2.el6_0.1.x86_64 <==�o bind �c相�P指令使用的函式�� bind-utils-9.7.0-5.P2.el6_0.1.x86_64 <==�@��是用�舳怂�ぶ�C名�Q的相�P指令 bind-9.7.0-5.P2.el6_0.1.x86_64 <==就是 bind 主程式所需��w bind-chroot-9.7.0-5.P2.el6_0.1.x86_64 <==�� bind 主程式�P在家�e面! |
上面比�^重要的是那��『 bind-chroot 』啦!所�^的 chroot 代表的是『 change to root(根目�) 』的意思,root 代表的是根目�。早期的 bind �A�O�⒊绦��釉� /var/named ��中,但是�程序可以在根目�下的其他目�到��D移,因此若 bind 的程式有���}�r,�t�程序��造成整��系�y的危害。�楸苊膺@�����}, 所以我���⒛��目�指定�� bind 程式的根目�,由於已�是根目�,所以 bind 便不能�x�_�目�!所以若�程序被攻�簦�了不起也是在某��特定目�底下搞破�亩�已。 CentOS 6.x �A�O�� bind �i在 /var/named/chroot 目�中喔!
我��主程式是由 bind, bind-chroot 所提供,那前一小�提到的,每部 DNS 伺服器都要有的 . (root) �@�� zone file 在哪�e?它也是由 bind 所提供的喔! (CentOS 4.x, 5.x 所提供的 caching-nameserver ��w�K不存在 CentOS 6.x ��中了喔!已�被涵�w於 bind ��w�龋�)
要架�O好 BIND 需要什�N�O定�Y料呢?基本上有���主要的�Y料要�理:
BIND 的�O定�n�� /etc/named.conf,在�@���n案�e面可以�� zone file 的完整�n名喔! 也就是�f,你的 zone file 其��是由 /etc/named.conf 所指定的,所以 zone file �n名可以�S便取啦! 只要 /etc/named.conf �纫���檎��_即可。一般�碚f, CentOS 6.x 的�A�O目�是�@�拥模�
不�^,�榱讼到y的安全性考量,一般�碚f目前各主要 distributions 都已�自�拥�⒛愕� bind 相�P程式�o他 chroot 了! 那你如何知道你 chroot 所指定的目�在哪�e呢?其��是��在 /etc/sysconfig/named �e面啦!你可以先查�一下:
[root@www ~]# cat /etc/sysconfig/named
ROOTDIR=/var/named/chroot
|
事��上��n案�容^有意�x的就只有上面�@一行,意思是�f:『我要�� named �o他 chroot ,�K且�更的根目��� /var/named/chroot 』喔!由於根目�已�被�更到 /var/named/chroot 了,但 bind 的相�P程式是需要 /etc, /var/named, /var/run ...等目�的,所以���H上咱�� bind 的相�P程式所需要的所有�Y料��是在:
哇!真是好麻��~不�^,不要太��心!因�樾掳姹镜� CentOS 6.x 已��� chroot 所需要使用到的目�,透�^ mount --bind 的功能�M行目��B�Y了 (�⒖� /etc/init.d/named �热�),�e例�碚f,我��需要的 /var/named 在��幽_本中透�^ mount --bind /var/named /var/named/chroot/var/named �M行目��定�樱∷�以在 CentOS 6.x ��中,你根本�o�切�Q至 /var/named/chroot/ 了!使用正�的目�即可喔!就是�@�雍��危�^_^
Tips: 事��上, /etc/sysconfig/named 是由 /etc/init.d/named ���r所�x入的,所以你也可以直接修改 /etc/init.d/named �@�� script 哩! |
在下一小��_始介�B正、反解 zone 的�Y料�O定之前,在�@��小���中,我��先�碚�一���渭�修改�O定�n,而不必�O� zone file 的�h境,那就是不具有自己正反解 zone 的�H�M行快取的 DNS 伺服器。
有��只需要 . �@�� zone file 的��� DNS 伺服器,我���Q�@�N�]有自己公�_的 DNS �Y料�斓乃欧�器�� cache-only (�H快取) DNS server!�名思�x,�@�� DNS server 只有快取搜�そY果的功能,也就是�f,他本身�K�]有主�C名�Q�c IP 正反解的�O定�n,完全是由�ν獾牟樵��硖峁┧�的�Y料�碓矗�
那如果�B . 都不想要呢?那就得要指定一��上�� DNS 伺服器作�槟愕� forwarding (�D�f) 目�耍��⒃�本自己要往 . 查�的任�眨��G�o上�� DNS 伺服器去��兰纯�。 如此一�恚�我���@部具有 forwarding 功能的 DNS 伺服器,甚至�B . 都不需要了!因�� . 有��在上�� DNS 上�^了嘛!
如同����提到的,cache only 的 DNS �K不存在�Y料�� (其���是存在 . �@�� root �I域的 zone file), 因此不�是�l�聿樵��Y料,�@部 DNS 一律�_始�淖约旱目烊∫约� . 找起,整��流程�c�D 19.1-4 相同。那如果具有 forwarding 功能呢?果真如此,那即使你的 DNS 具有 . �@�� zone file,�@部 DNS �是���⒉樵��唷何��』上�� DNS 查�的,�@部 DNS 伺服器���鲎�成用�舳死玻〔樵�流程����@�余福�
�^察上�D的查�方向,你���l�F到,具有 forwarding �C制�r,查����委�上�� DNS 伺服器�硖�理,所以根本也不需要 . �@��位置所在的 zone 啦。一般�碚f,如果你的�h境需要架�O一�� cache-only 的 DNS 伺服器�r,其��可以直接加上 forwarding 的�C制,�查��嘀赶蛏�踊蛘呤橇髁枯^大的上�� DNS 伺服器即可。那既然 cache only 的伺服器�K�]有�Y料�欤� forwarding �C制甚至不需要 . 的 zone ,那�致镞�得要架�O�@�拥� DNS 呢?是有理由的啦!
在某些公司行��e�^,�榱祟A防�T工利用公司的�W路�Y源作自己的事情,所以都����� Internet 的�B�作比�^�栏竦南拗啤.�然啦,�B port 53 �@�� DNS ��用到的 port 也可能��被�踉诜阑��之外的~�@���r候, 你可以在『防火��的那部�C器上面,加�b一�� cache-only 的 DNS 服�眨�』
�@是什�N意思呢?很��伟。【褪悄阕约豪�用自己的防火��主�C上的 DNS 服�杖�湍愕� Client 端解�g hostname <--> IP �樱∫�榉阑��主�C可以�O定放行自己的 DNS 功能,而 Client 端就�O定�防火�� IP �� DNS 伺服器的 IP 即可!哈哈!�@�泳涂梢匀〉弥�C名�Q�c IP 的�D�g啦!所以,通常架�O cache only DNS 伺服器大都是�榱讼到y安全�印�
那如何在你的 Linux 主�C上架�O一�� cache-only 的 DNS 伺服器呢?其��真的很��蔚睦玻∫�椴恍枰��O定正反解的 zone (只需要 . 的 zone 支援即可),所以只要�O定一���n案 (就是 named.conf 主�O定�n) 即可!真是快�返貌坏昧�龋� 另外,cache-only 只要加上�� forwarders 的�O定即可指定 forwarding 的�Y料,所以底下我���⒃O定具有 forwarding 的 cache-only DNS 伺服器吧!
[root@www ~]# cp /etc/named.conf /etc/named.conf.raw [root@www ~]# vim /etc/named.conf // 在�A�O的情�r下,�@���n案��去�x取 /etc/named.rfc1912.zones �@���I域定�x�n // 所以��得要修改成底下的�邮桨。� options { listen-on port 53 { any; }; //可不�O定,代表全部接受 directory "/var/named"; //�Y料�祛A�O放置的目�所在 dump-file "/var/named/data/cache_dump.db"; //一些�y��Y� statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { any; }; //可不�O定,代表全部接受 recursion yes; //�⒆约阂��橛�舳说囊环N查�模式 forward only; //可��r不�O定 forwarders { //是重�c! 168.95.1.1; //先用中�A�信的 DNS ��上�� 139.175.10.20; //再用 seednet ��上�� }; }; //最�K�得要�Y尾符�! |
# 1. ��右幌� DNS �@玩意�海� [root@www ~]# /etc/init.d/named start Starting named: [ OK ] [root@www ~]# chkconfig named on # 2. 到底用了多少埠口呢? [root@www ~]# netstat -utlnp | grep named Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 192.168.100.254:53 0.0.0.0:* LISTEN 3140/named tcp 0 0 192.168.1.100:53 0.0.0.0:* LISTEN 3140/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 3140/named tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 3140/named tcp 0 0 ::1:953 :::* LISTEN 3140/named udp 0 0 192.168.100.254:53 0.0.0.0:* 3140/named udp 0 0 192.168.1.100:53 0.0.0.0:* 3140/named udp 0 0 127.0.0.1:53 0.0.0.0:* 3140/named |
[root@www ~]# tail -n 30 /var/log/messages | grep named Aug 4 14:57:09 www named[3140]: starting BIND 9.7.0-P2-RedHat-9.7.0-5.P2.el6_0.1 -u named -t /var/named/chroot <==�f明的是 chroot 在哪��目�下! Aug 4 14:57:09 www named[3140]: adjusted limit on open files from 1024 to 1048576 Aug 4 14:57:09 www named[3140]: found 1 CPU, using 1 worker thread Aug 4 14:57:09 www named[3140]: using up to 4096 sockets Aug 4 14:57:09 www named[3140]: loading configuration from '/etc/named.conf' Aug 4 14:57:09 www named[3140]: using default UDP/IPv4 port range: [1024, 65535] Aug 4 14:57:09 www named[3140]: using default UDP/IPv6 port range: [1024, 65535] Aug 4 14:57:09 www named[3140]: listening on IPv4 interface lo, 127.0.0.1#53 Aug 4 14:57:09 www named[3140]: listening on IPv4 interface eth0, 192.168.1.100#53 Aug 4 14:57:09 www named[3140]: listening on IPv4 interface eth1, 192.168.100.254#53 Aug 4 14:57:09 www named[3140]: generating session key for dynamic DNS Aug 4 14:57:09 www named[3140]: command channel listening on 127.0.0.1#953 Aug 4 14:57:09 www named[3140]: command channel listening on ::1#953 Aug 4 14:57:09 www named[3140]: the working directory is not writable Aug 4 14:57:09 www named[3140]: running |
Tips: 如果你在 /var/log/messages �e面一直看到�@�拥腻e�`�Y�: couldn't add command channel 127.0.0.1#953: not found 那表示你�必需要加入 rndc key ,��⒖急菊箩崦娴� 利用 RNDC 指令管理 DNS 伺服器 的介�B,�⑺�加入你的 named.conf 中! |