鸟哥-LINUX--(DNS架设)1

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 才不��出���}。

 

小�祟}的�D示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去?

 

  • �我�n案�理上�W的年代: /etc/hosts

然而人�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!

早期透�^�我�n案�M行�W路�B�的示意�D
�D 19.1-1、早期透�^�我�n案�M行�W路�B�的示意�D

在第四章 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案中啦!

 

  • 分散式、�A�邮街�C名�Q管理架��: DNS 系�y

早期�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解了�幔浚�
�B哥的�D示
  • 完整主�C名�Q: Fully Qualified Domain Name (FQDN)

第一���c DNS 有�P的主�C名�Q概念,就是『主�C名�Q�c�I域名�Q (hostname and domain name)』的�^念,以及由�@�烧呓M成的完整主�C名�Q Fully Qualified Domain Name, FQDN 的意�x了。在���@��主�}之前,我���砹囊涣谋容^生活化的��}:

  • 以�^域��^分同名同姓者的差��: �W路世界其��有很多人自�Q�椤壶B哥』的,包括敝人在下小生我啦!那�N你怎�N知道此�B哥非彼�B哥呢? �@���r候你可以利用每���B哥的所在地�碜��^分啊,比如�f台南的�B哥�c台北的�B哥等。 那�f一台南�有���人自�Q�B哥怎�N�k?�]�P�S,你�可以依照�l���^分呢!比如�f台南北�^的�B哥及台南中�^的�B哥。 如果�⑦@��咚咚列出�恚�就有�c像�@�樱�
    �B哥、北�^、台南
    �B哥、中�^、台南
    �B哥、台北
    ......
    是否就可以分辨每���B哥的不同�c了呢?呵呵!�]�e!就是�@�樱∧��地�^就是『�I域 (domain) 』,而�B哥就是主�C名啦!

     
  • 以�^域��a��^分相同的����a: 另外一��例子可以使用����a�砜矗�假如高雄有�� 1234567 而台南也有�� 1234567,那�N(1)你在高雄直接�芙� 1234567 �r,他��直接�烊敫咝鄣� 1234567 ��中,(2)但如果你要�艿教�南去,就得加入 (06) �@���^�a才行!我��就是使用�^�a�碜�楸孀R之用的!此�r那�� 06 �^�a就是 domain name,而����a就是主�C名�Q啦!

有�]有一�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) :

分�A�拥� DNS 架��,以��山科大�槔�
�D 19.1-2、分�A�拥� DNS 架��,以��山科大�槔� (hostname & domain name)

在上面的例子��中,由上向下�档牡诙��友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 哩!
�B哥的�D示

19.1.2 DNS 的主�C名�Q��� IP 的查�流程

�s略�t解了 FQDN 的 domain name �c hostname 之後,接下�砦��要�一��@�� DNS 的: (1)�A�蛹��是怎�樱� (2)查�原理是怎�樱靠�是要先知道架��才能知道如何查�主�C名�Q的�龋∷�以底下我��先�斫榻B一下整�w的 DNS �A�蛹��。

 

  • DNS 的�A�蛹���c TLD

我��依�f使用台��W�g�W路的 DNS 伺服器所管理的各 domain �槔�,�⒆钌�拥��山科大 (ksu) �r,之�g的各�永L�u如下�D:

�淖钌�拥��山科大之�g的 DNS �A�邮疽�D
�D 19.1-3、�淖钌�拥��山科大之�g的 DNS �A�邮疽�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域名�Q (Generic TLDs, gTLD):例如 .com, .org, .gov 等等
  • ���a最上�宇I域名�Q (Country code TLDs, ccTLD):例如 .tw, .uk, .jp, .cn 等

先�碚��一般最上�宇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只要向自己的��家申�即可,不需要再到最上�尤ド暾��樱�

 

  • 授�嗯c分�迂��

既然 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上面也��比�^��文兀�

 

  • 透�^ DNS 查�主�C名�Q IP 的流程

�����f�^ DNS 是以�似『��钅夸�』的型�B�磉M行主�C名�Q的管理的!所以每一部 DNS 伺服器都『�H管理自己的下一�又�C名�Q的�D�g』而已, 至於下�拥南�樱��t『授�唷唤o下�拥� DNS 主�C�砉芾砝玻∵@�诱f好像很�@口,好吧!我��就以下�D�碚f一�f原理�樱�

透�^ DNS 系�y查�主�C名�Q解�g的流程
�D 19.1-4、透�^ DNS 系�y查�主�C名�Q解�g的流程

首先,��你在�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 的�@部伺服器���@�庸ぷ鳎�

  1. 收到用�舻牟樵�要求,先查看本身有�]有�o�,若�o�t向 . 查�
    由於 DNS 是�A�邮降募��,每部主�C都��管理自己�下的主�C名�Q解�g而已。因�� hinet �K�]有管理台��W�g�W路的�嗔Γ� 因此就�o法直接回�蠼o用�舳恕4�r 168.95.1.1 就��向最��樱�也就是 . (root) 的伺服器查�相�P IP �Y�。

     
  2. 向最��拥� . (root) 查�
    168.95.1.1 ��主�拥南� . ��� www.ksu.edu.tw 在哪�e呢?但是由於 . 只��了 .tw 的�Y� (因�樘�持挥� .tw 向 . �]�远�已),此�r . ��告知『我是不知道�@部主�C的 IP 啦,不�^,你���向 .tw 去���才�Γ�我�@�e不管! 我跟你�f .tw 在哪�e吧!』

     
  3. 向第二�拥� .tw 伺服器查�
    168.95.1.1 接著又到 .tw 去查�,而�部�C器管理的又�H有 .edu.tw, .com.tw, gov.tw... 那�撞恐�C,��^比��後�l�F我��要的是 .edu.tw 的�W域,所以�@���r候 .tw 又告�V 168.95.1.1 �f:『你要去管理 .edu.tw �@���W域的主�C那�e查�,我有他的 IP !』

     
  4. 向第三�拥� .edu.tw 伺服器查�
    同理可�C, .edu.tw 只��告�V 168.95.1.1 ,���要去 .ksu.edu.tw �M行查�,�@�e只能告知 .ksu.edu.tw 的 IP 而已。

     
  5. 向第四�拥� .ksu.edu.tw 伺服器查�
    等到 168.95.1.1 找到 .ksu.edu.tw 之後, Bingo !.ksu.edu.tw �f:『�]�e!�@部主�C名�Q是我管理的~ 我跟你�f他的 IP 是...所以此�r 168.95.1.1 就能�虿榈� www.ksu.edu.tw 的 IP �樱�

     
  6. ���捍嬗����w�K回�笥��
    查到了正�_的 IP 後,168.95.1.1 的 DNS �C器�不��在下次有人查� www.ksu.edu.tw 的�r候再跑一次�@�拥牧鞒贪桑� 粉�h粉累的�龋《�且也很耗系�y的�Y源�c�W路的�l��,所以呢,168.95.1.1 �@�� DNS ��很�明的先��一份查�的�Y果在自己的�捍嬗����w��中,以方便回��下一次的相同要求啊! 最後�t�⒔Y果回�蠼o client 端!��然啦,那�����在 cache ��中的�Y料,其��是有�r�g性的,���^了 DNS �O定���的�r�g (通常可能是 24 小�r),那�N���就��被�放喔!

整��分�硬樵�的流程就是�@�樱��是得要先��^ . �硐蛳乱�舆M行查�,最�K�是能得到答案的。�@�臃�拥暮锰�是:

  • 主�C名�Q修改的�H需自己的 DNS 更�蛹纯桑�不需通知其他人:
    ��一��『合法』的 DNS 伺服器�e面的�O定修改了之後,�碜允澜绺鞯厝魏我�� DNS 的要求,都��正�_�o�`的�@示正�_的主�C名�Q��� IP 的�Y�,因�樗�����一�右�拥�ふ蚁�怼K�以,要找你的主�C名�Q���的 IP 就一定得要透�^你的上�� DNS 伺服器的�o�才行!因此,只要你的主�C名字是��^上�印汉戏ǖ� DNS』伺服器�O定的,那�N就可以在 Internet 上面被查�到啦!呵呵!很��尉S�o吧,�C�有砸埠芨摺�

     
  • DNS 伺服器�χ�C名�Q解析�Y果的快取�r�g:
    由於每次查�到的�Y果都���Υ嬖� DNS 伺服器的快取����w中,以方便若下次有相同需求的解析�r,能�蚩焖俚幕��。 不�^,查��Y果已�被快取了,但是原始 DNS 的主�C名�Q�c IP ����s修改了,此�r若有人再次查�, 系�y可能��回�笈f的 IP 喔!所以,在快取�鹊拇鸢甘怯�r�g性的!通常是�凳�分�到三天之�取� �@也是�槭颤N我��常�f��你修改了一�� domain name 之後,可能要 2 ~ 3 天後才能全面的�⒂玫木�故啦!

     
  • 可持�m向下授�� (子�I域名�Q授��):
    每一部可以��主�C名�Q�c IP ���的 DNS 伺服器都可以�S意更�铀�自己的�Y料����, 因此主�C名�Q�c�W域名�Q在各��主�C底下都不相同。�e例�碚f, idv.tw 是�H有台�巢庞羞@�� idv 的�W域~ 因�檫@�� idv 是由 .tw 所管理的,所以只要台�� .tw �S�o小�M同意,就能�蚪�立��W域喔!

好啦!既然 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) 就能�蜻_到�@��目的了。使用方式如下:
[root@www ~]# dig +trace www.ksu.edu.tw
; <<>> DiG 9.3.6-P1-RedHat-9.3.6-16.P1.el5 <<>>+trace www.ksu.edu.tw
;; global options:  printcmd
.                       486278  IN      NS      a.root-servers.net.
.                       486278  IN      NS      b.root-servers.net.
....(底下省略).... # 上面的部分在追� . 的伺服器,可�� a ~ m.root-servers.net.
;; Received 500 bytes from 168.95.1.1#53(168.95.1.1) in 22 ms

tw.                     172800  IN      NS      ns.twnic.net.
tw.                     172800  IN      NS      a.dns.tw.
tw.                     172800  IN      NS      b.dns.tw.
....(底下省略).... # 上面的部分在追� .tw. 的伺服器,可�� a ~ h.dns.tw. 包括 ns.twnic.net.
;; Received 474 bytes from 192.33.4.12#53(c.root-servers.net) in 168 ms

edu.tw.                 86400   IN      NS      a.twnic.net.tw.
edu.tw.                 86400   IN      NS      b.twnic.net.tw.
# 追� .edu.tw. 的�t有 7 部伺服器
;; Received 395 bytes from 192.83.166.11#53(ns.twnic.net) in 22 ms

ksu.edu.tw.             86400   IN      NS      dns2.ksu.edu.tw.
ksu.edu.tw.             86400   IN      NS      dns3.twaren.net.
ksu.edu.tw.             86400   IN      NS      dns1.ksu.edu.tw.
;; Received 131 bytes from 192.83.166.9#53(a.twnic.net.tw) in 22 ms

www.ksu.edu.tw.         3600    IN      A       120.114.100.101
ksu.edu.tw.             3600    IN      NS      dns2.ksu.edu.tw.
ksu.edu.tw.             3600    IN      NS      dns1.ksu.edu.tw.
ksu.edu.tw.             3600    IN      NS      dns3.twaren.net.
;; Received 147 bytes from 120.114.150.1#53(dns2.ksu.edu.tw) in 14 ms
最�K的�Y果有找到 A (Address) 是 120.114.100.101,不�^�@��例�}的重�c是,要�大家瞧瞧整�� DNS 的搜�み^程!在 dig 加上 +trace 的�x�後,就能�蜻_到�@��目的。至於其他的都是伺服器 (NS) 的�O定值�c追��^程喔!有�]有很清楚啊?^_^。至於 A �c NS 等相�P的�Y料,我��在後�m的 DNS �Y料�旖榻B中,再分�e介�B�印�

  • DNS 使用的 port number

好了,既然 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 呢!

小�祟}的�D示19.1.3 合法 DNS 的�P�I:申��I域查�授��

什�N?DNS 伺服器的架�O�有『合法』�c『不合法』之分喔?不是像其他的伺服器一�樱�架�O好之後人家就查的到�幔� 非也非也!�槭颤N呢?底下我��就�碚�一�。

 

  • 向上�宇I域�]�匀〉煤戏ǖ念I域查�授��

我��在第十章也�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方式:

  1. 上�� DNS 授�囝I域查��啵��你自己�O定 DNS 伺服器,或者是;
  2. 直接�上�� DNS 伺服器��湍阍O定主�C名�Q���!

     
  • �碛蓄I域查��噌幔�所有的主�C名�Y�都以自己��剩��c上��o�P

很多朋友可能都有�^申� 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所示:

��的授�嘀�C名�Q�c���H A ��的差��
�D 19.1-5、��的授�嘀�C名�Q�c���H A ��的差��

上�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果喔!那就是:

  • dns.vbird.org 伺服器�禳c�r: 如果 dns.vbird.org �@部主�C�禳c,那�N在上�D�@示『查�』箭�^的步�E��被中�啵�因此就��出�F『�B�不到 dns.vbird.org 的 IP』的�Y果。因��o�如何,DNS 系�y都��去找到最後一��含有 A 位址的��啊!

     
  • dns.vbird.org 伺服器�鹊馁Y料�焱���a上�Y料�r: 如果�B哥在自己的伺服器�Y料�熘校�忘�加上 dns.vbird.org 的���r,最�K的�Y果�是���@示『找不到�伺服器的 IP』;

     
  • dns.vbird.org 伺服器�鹊馁Y料�熨Y料���不一致�r: 如果是在�B哥自己伺服器的�Y料��鹊� dns.vbird.org 所��的 IP �c godaddy 的不同,最�K的�Y果��以�B哥��的��省�

�之,你在 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:

  • SOA:就是�_始��C (Start of Authority) 的�s��,相�P�Y料本章後�m小��f明;
  • NS:就是名�Q伺服器 (NameServer) 的�s��,後面��的�Y料是 DNS 伺服器的意思;
  • A:就是位址 (Address) 的�s��,後面��的是 IP 的��� (最重要);

     
  • 反解的�O定�嘁约� DNS 反解 zone ��的�苏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 之外,最重要的就是:

  • PTR:就是指向 (PoinTeR) 的�s��,後面��的�Y料就是反解到主�C名�Q�樱�

     
  • 每部 DNS 都需要的正解 zone: hint

�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:

  • hint (root):�� . 的 zone;
  • vbird.org:�� .vbird.org �@��正解的 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 �槔�的反解申�:

  • http://hidomain.hinet.net/top1.html

 

小�祟}的�D示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 吧!

 

  • Master:

�@�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 伺服器喔!

 

  • Slave:

如前所述,通常你不��只有一部 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 必�要互相搭配才行!
�B哥的�D示
  • 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�`的!

  • Master / Slave �Y料的同步化�^程

那�N Master/Slave 的�Y料更新到底是如何�幼鞯哪兀空�注意,Slave 是需要更新�碜� Master 的�Y料啊!所以��然 Slave 在�O定之初就需要存在 Master 才行喔!基本上,不� Master �是 Slave 的�Y料�欤�都��有一��代表��Y料�煨屡f的『序�』,�@��序��抵档拇笮。�是��影�是否要更新的�幼鬣。� 至於更新的方式主要有�煞N:

  • Master 主�痈嬷�:例如在 Master 在修改了�Y料��热荩��K且加大�Y料�煨蛱�後, 重新��� DNS 服�眨�那 master ��主�痈嬷� slave �砀�新�Y料�欤�此�r就能�蜻_成�Y料同步;

     
  • 由 Slave 主�犹岢鲆�求:基本上, Slave ��定�r的向 Master 察看�Y料�斓男蛱�, ���l�F Master �Y料�斓男蛱�比 Slave 自己的序��要大 (代表比�^新),那�N Slave 就���_始更新。如果序�不�, 那�N就判�噘Y料��]有更�樱�因此不���M行同步更新。

由上面的�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得��龋�

  • /etc/hosts :�@��是最早的 hostname ��� IP 的�n案;
  • /etc/resolv.conf :�@��重要!就是 ISP 的 DNS 伺服器 IP ���;
  • /etc/nsswitch.conf:�@���n案�t是在『�Q定』先要使用 /etc/hosts �是 /etc/resolv.conf 的�O定!

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) 吧!

 

小�祟}的�D示 19.3.1 架�O DNS 所需要的��w

�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�龋�)

小�祟}的�D示 19.3.2 BIND 的�A�O路�皆O定�c chroot

要架�O好 BIND 需要什�N�O定�Y料呢?基本上有���主要的�Y料要�理:

  • BIND 本身的�O定�n:主要��主�C的�O定、zone file 的所在、�嘞薜脑O定等;
  • 正反解�Y料��n案 (zone file):��主�C名�Q�c IP ���的等。

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目�是�@�拥模�

  • /etc/named.conf :�@就是我��的主�O定�n啦!
  • /etc/sysconfig/named :是否��� chroot 及�~外的��担�就由�@���n案控制;
  • /var/named/ :�Y料��n案�A�O放置在�@��目�
  • /var/run/named :named �@支程式�绦�r�A�O放置 pid-file 在此目��取�

     
  • /etc/sysconfig/named �c chroot �h境

不�^,�榱讼到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料��是在:

  • /var/named/chroot/etc/named.conf
  • /var/named/chroot/var/named/zone_file1
  • /var/named/chroot/var/named/zone_file.....
  • /var/named/chroot/var/run/named/...

哇!真是好麻��~不�^,不要太��心!因�樾掳姹镜� 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哥的�D示
小�祟}的�D示 19.3.3 �渭�的 cache-only DNS 伺服器�c forwarding 功能

在下一小��_始介�B正、反解 zone 的�Y料�O定之前,在�@��小���中,我��先�碚�一���渭�修改�O定�n,而不必�O� zone file 的�h境,那就是不具有自己正反解 zone 的�H�M行快取的 DNS 伺服器。

 

  • 什�N是 cache-only �c forwarding 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 伺服器���鲎�成用�舳死玻〔樵�流程����@�余福�

具有 forwarding 功能的 DNS 伺服器查�方式
�D 19.3-1、具有 forwarding 功能的 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 呢?是有理由的啦!

 

  • 什�N�r候有架�O cache-only 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安全�印�

 

  • ���H�O定 cache-only DNS server

那如何在你的 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 伺服器吧!

 

  1. ��主要�O定�n: /etc/named.conf

    �m然我��具有 chroot 的�h境,不�^由於 CentOS 6.x 已�透�^��幽_本�臀���M行�n案�c目�的�燧d�B�Y,所以�你直接修改 /etc/named.conf 即可呦!不要再去 /var/named/chroot/etc/named.conf 修改啦! 在�@���n案中,主要是定�x跟伺服器�h境有�P的�O定,以及各�� zone 的�I域及�Y料�焖�在�n名。 在�B哥的�@��案例��中,因�槭褂昧� forwarding 的�C制,所以�@�� cache-only DNS 伺服器�K�]有 zone (�B . 都�]有),所以我��只要�O定好跟伺服器有�P的�O定即可。�O定�@���n案的�r候�注意:

    • �]解�Y料是放置在��l斜�『 // 』後面接的�Y料
    • 每��段落之後都需要以分�『 ; 』�碜�榻Y尾!

    �B哥�⑦@���n案再�化如下的�邮剑�
    [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尾符�!
    
    �B哥�⒋蟛糠值馁Y料都予以�h除,只�⑸俨糠直A舻馁Y料加以小部分的修�而已。在 named.conf 的�Y��中,�c伺服器�h境有�P的是由 options �@���目�热菰O定的,因�� options �e面�有很多子��担� 所以就以大括� { } 包起��印V领� options �鹊淖��翟谏厦嫣岬降妮^重要的�目���⑹鋈缦拢�

    • listen-on port 53 { any; };
      �O�在�@部主�C系�y上面的哪���W路介面。�A�O是�O�在 localhost,亦即只有本�C可以�� DNS 服�者M行查�,那��然是很不合理啊! 所以�@�e要�⒋罄ㄌ��鹊馁Y料改��成 any。�得,因�榭梢员O�多��介面,因此 any 後面得要加上分�才算�Y束喔! 另外,�@���目如果忘���也�]有�P�S,因�轭A�O是�φ���主�C系�y的所有介面�M行�O�的。

       
    • directory "/var/named";
      意思是�f,如果此�n案底下有��到正、反解的 zone file �n名�r,��n名�A�O���放置在哪��目�底下的意思。�A�O放置到 /var/named/ 底下。由於 chroot 的�P�S,最�K�@些�Y料��n案��被主�舆B�Y到 /var/named/chroot/var/named/ �@��目�。

       
    • dump-file, statistics-file, memstatistics-file
      �c named �@��服�沼嘘P的�S多�y��Y�,如果想要�出成��n案的�,�A�O的�n名就如上所述。�B哥自己很少看�@些�y��Y料, 所以,�@三���O定值��不�����都是�]有�P�S的。

       
    • allow-query { any; };
      �@��是��τ�舳说脑O定,到底�l可以�ξ业� DNS 服�仗岢霾樵��求的意思。原本的�n案�热蓊A�O是��� localhost �_放而已, 我���@�e改成�λ�有的用�糸_放 (��然啦,防火��也得放行才行)。不�^,�A�O DNS 就是�λ�有用�舴判校�所以�@���O定值也可以不用��。

       
    • forward only ;
      �@���O定可以�你的 DNS 伺服器�H�M行 forward,即使有 . �@�� zone file 的�O定,也不��使用 . 的�Y料, 只���⒉樵��嘟唤o上�� DNS 伺服器而已,是 cache only DNS 最常�的�O定了!

       
    • forwarders { 168.95.1.1; 139.175.10.20; } ;
      既然有 forward only,那�N到底要�δ牟可�� DNS 伺服器�M行�D�f呢?那就是 forwarders (不要忘�那�� s) �O定值的重要性了!由於��心上�� DNS 伺服器也可能���禳c,因此可以�O定多部上�� DNS 伺服器喔!每一�� forwarder 伺服器的 IP 都需要有『 ; 』�碜�榻Y尾!

    很��伟桑≈领陡�多的��滴����在後�m篇幅��中慢慢介�B的。�@�泳鸵呀��O定完成了最��蔚� cache only DNS server 了!

     
  2. ��� named �K�^察服�盏牟嚎�

    ��涌�不��忘�吧?�s快去��右幌掳桑⊥��r��油戤�之後,�^察一下由 named 所�_�⒌牟嚎冢�看看到底哪些埠口��被 DNS 用到的!
    # 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
    
    我��知道 DNS ��同�r�⒂� UDP/TCP 的 port 53,而且是��λ�有介面,因此上面的�Y料�K�]有什�N特��的部分。不�^,怎�N��有 port 953 且�H��Ρ�C�肀O�呢?其��那是 named 的�h端控制功能,�Q�檫h端名�Q解析服�湛刂乒δ� (remote name daemon control, rndc)。�A�O的情�r下,�H有本�C可以��� rndc �砜刂啤N����在後�m的章�再�硖接��@�� rndc 啦,目前我��只要知道 UDP/TCP port 53 有��蛹纯伞�

     
  3. �z查 /var/log/messages 的�热萦�息 (�O重要!)

    named �@��服�盏挠���n就直接�o他放置在 /var/log/messages �e面啦,所以�砜纯囱e面的�仔械卿��Y�吧!
    [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
    
    上面最重要的是第一行出�F的『-t ...』那���目指出你的 chroot 目��印A硗猓�上面表格中特殊字�w的部分,有��到�x取 /etc/named.conf,代表可以�利的�d入 /var/named/etc/named.conf 的意思。如果上面有出�F冒�後面接�底� (:10), 那就代表某���n案�鹊牡谑�行有���}的意思,��r再�M入�理即可。要注意的是,即使 port 53 有��樱�但有可能 DNS 服�帐清e�`的,此�r�@��登��n就�@的非常重要!每次重新��� DNS 後,��毡夭殚�一下�@���n案的�热�!!

    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 中!
    �B哥的�D示
  4. �y�:

    如果你的 DNS 伺服器具有�B上�W�H�W路的功能,那�N透�^『 dig www.google.com @127.0.0.1 』�@��基本指令�绦锌纯矗� 如果有找到 google 的 IP ,�K且�出�Y料的最底下�@示『 SERVER: 127.0.0.1#53(127.0.0.1) 』的字�樱� 那就代表���是成功啦!其他更��的�y���⒖迹�19.2 小�的�热�

     

你可能感兴趣的:(linux,职场,休闲)