DNS and BIND

DNS and BIND

名稱解析:把一種代號轉換成為另一種代號的功能
是應用程序基于某個搜索鍵在指定的數據庫查詢,查詢到對應的鍵以后,對應鍵被找出來的過程!
passwd —《nsswith》/etc/nsswith.conf

注意:查詢的時候用到的是UDP的53,主從復制走的是tcp(但是也用到udp)

DNS: Domain Name Service,協議(C/S, 53/udp, 53/tcp);應用層協議;
BIND:Bekerley Internat Name Domain, ISC (www.isc.org)

TCP: 面向連接的協議;
UDP: User Datagram Protocol,無連接協議

本地名稱解析配置文件:hosts

/etc/hosts
%WINDOWS%/system32/drivers/etc/hosts
    1.1.1.1 www.magedu.com
    1.2.2.2 www.apple.com

這個就導致,一個機器要想知道地址會要很大的一個文件!為了解決這個問題,就把這種集中起來做成一個集中的存儲!就有了DNS!

DNS域名分類

1、 根域
2、 一級域名:Top Level Domain: tld
com, edu, mil, gov, net, org, int,
三類:組織域、國家域(.cn, .ca, .hk, .tw)、反向域 .in-addr.arpa

3、二級域名  (magedu)

4、 三級域名   (www、ftp等)
最多127級域名

 ICANN(The Internet Corporation for Assigned Names and Numbers)互聯網名稱與數字地址分配機構,負責在全球范圍內對互聯網通用頂級域名(gTLD)以及國家和地區頂級域名(ccTLD)系統的管理、以及根服務器系統的管理

5.DNS域名結構
DNS and BIND

DNS解析

DNS查詢類型:
遞歸查詢

 遞歸查詢:只發起一次請求,最終能得到答案

迭代查詢

迭代:發起一次請求,不一定得到答案

DNS and BIND

名稱服務器:域內負責解析本域內的名稱的主機;
       根服務器:13組服務器

解析類型:
       Name –> IP
       IP –> Name

注意:正反向解析是兩個不同的名稱空間,是兩棵不同的解析樹;

DNS服務器的類型:

  • 主DNS服務器

  • 輔助DNS服務器

  • 緩存DNS服務器(一般企業里用為了轉發)

  • 轉發器

兩種同步方式push(主服務器向從服務器推送)、pull(從服務器定期從主中拉出數據)

主DNS服務器:維護所負責解析的域內解析庫服務器;解析庫由管理維護;
從DNS服務器:從主DNS服務器或其它的從DNS服務器那里“復制”(區域傳遞)一份解析庫;
        序列號:解析庫的版本號;前提:主服務器解析庫內容發生變化,其序列遞增;
        刷新時間間隔:從服務器從主服務器請求同步解析庫的時間間隔;
        重試時間間隔:從服務器從主服務器請求同步解析庫失敗時,再次嘗試的時間間隔;
        過期時長:從服務器始終聯系不到主服務器時,多久多后放棄從服務器角度,停止提供服務;

“通知”機制:主服務器解析庫發生變化時,會主動通知從服務器

注意主的能更改 從的只能復制 當備份,改了主 的以后要同步數據庫(該版本號)  要不從不能同步

區域傳輸

區域傳輸:

完全傳輸:傳送整個解析庫
增量傳輸:傳遞解析庫變化的那部分內容

Domain: Fully Qualified Domain Name

正向:FQDN –> IP
反向: IP –> FQDN

負責本地域名的正向和反向解析庫:

正向區域
反向區域

DNS解析

一次完整的查詢請求經過的流程:

  Client -->hosts文件 -->DNS Service Local Cache --> DNS Server (recursion) --> Server Cache --> iteration(迭代) --> 根--> 頂級域名DNS-->二級域名DNS…

解析答案:

  • 肯定答案:

  • 否定答案:請求的條目不存在等原因導致無法返回結果

  • 權威答案:查到的最后記錄的確有的

  • 非權威答案:別的記錄中轉發的


資源記錄

區域解析庫:由眾多RR組成:

數據庫每一個條叫一個資源記錄(Resource Record),資源記錄有類型 ,用于表示資源的功能

資源記錄:Resource Record, RR
記錄類型:A, AAAA, PTR, SOA, NS, CNAME, MX

  • SOA:Start Of Authority,起始授權

  • NS:Name Server,域名服務器

  • MX:mail eXchanger:郵件交換器

  • A:Address,(FQDN–>IP)

  • PTR: PoiTeR,(IP–>FQDN)

  • AAAA:Address,FQDN–>IPv6

  • CNAME:Canonical Name,正式名稱(別名記錄)

DNS:FQDN –> IP

資源記錄定義的格式:

語法:name [TTL] IN  rr_type  value
注意:
(1) TTL可從全局繼承
(2) @可用于引用當前區域的名字
(3) 同一個名字可以通過多條記錄定義多個不同的值;此時DNS服務器會以輪詢方式響應
(4) 同一個值也可能有多個不同的定義名字;通過多個不同的名字指向同一個值進行定義;此僅表示通過多個不同的名字可以找到同一個主機

SOA:

name: 當前區域的名字,例如“magedu.com.”;
value: 有多部分組成
    (1) 當前區域的主DNS服務器的FQDN,也可以使用當前區域的名字;
    (2) 錄前區域管理員的郵箱地址;但地址中不能使用@符號,一般用.替換,例如linuxedu.magedu.com;
    (3) (主從服務協調屬性的定義以及否定的答案的統一的TTL)

例如:
    magedu.com.     86400     IN     SOA     ns.magedu.com.(這里是主dns)     nsadmin.magedu.com.     (
                2015042201  ;序列號
                2H          ;刷新時間
                10M            ;重試時間
                1W            ;過期時間
                1D            ;否定答案的TTL值
        )

NS:

name: 當前區域的名字
value: 當前區域的某DNS服務器的名字,例如ns.magedu.com.;
注意:一個區域可以有多個NS記錄;

例如:
magedu.com.        IN         NS      ns1.magedu.com.
magedu.com.        IN         NS      ns2.magedu.com.

注意:
(1) 相鄰的兩個資源記錄的name相同時,后續的可省略;
(2) 對NS記錄而言,任何一個ns記錄后面的服務器名字,都應該在后續有一個A記錄;

MX:

name: 當前區域的名字
value: 當前區域的某郵件服務器(smtp服務器)的主機名;
一個區域內,MX記錄可有多個;但每個記錄的value之前應該有一個數字(0-99),表示此服務器的優先級;數字越小優先級越高;

例如:
magedu.com.        IN      MX  10  mx1.magedu.com.
                IN         MX  20 mx2.magedu.com.

注意:
    (1) 對MX記錄而言,任何一個MX記錄后面的服務器名字,都應該在后續有一個A記錄;

A:

name: 某主機的FQDN,例如www.magedu.com.
value: 主機名對應主機的IP地址;

例如:
www.magedu.com.        IN      A     1.1.1.1
www.magedu.com.        IN      A      1.1.1.2
mx1.magedu.com.        IN      A   1.1.1.3
mx2.magedu.com.        IN      A   1.1.1.3

$GENERATE 1-254 HOST$(這個可以改成想要的) A 1.2.3.$
(一次定義多個A記錄 ---- HOST1-254)

*.magedu.com.  IN  A  5.5.5.5
(解決了 wwww.mageedu.com 三級域名多寫的只能解析)
magedu.com. IN  A 6.6.6.6
(解決了不寫 www 也能訪問)



注意后邊三個:
$GENERATE
*.magedu.com.          IN     A      1.1.1.4
magedu.com.            IN     A   1.1.1.4

避免用戶寫錯名稱時給錯誤答案,可通過泛域名解析進行解析至某特定地址;

AAAA:

name: FQDN
value: IPv6

PTR:

name: IP,有特定格式,把IP地址反過來寫,1.2.3.4,要寫作4.3.2.1;而有特定后綴:in-addr.arpa.,所以完整寫法為:4.3.2.1.in-addra.arpa.
            value: FQDN

例如:
4.3.2.1.in-addr.arpa.     IN     PTR     www.magedu.com.
簡寫成:
4      IN  PTR     www.magedu.com.

注意:網絡地址及后綴可省略;主機地址依然需要反著寫

CNAME(別名記錄):

    name: 別名的FQDN
    value: 正工名字的FQDN;

例如:
web.magedu.com.     IN      CNAME      www.magedu.com.

互聯網域名

域名注冊:
代理商:萬網, 新網;godaddy

注冊完成以后,想自己用專用服務來解析
管理后臺:把NS記錄指向的服務器名稱,和A記錄指向
的服務器地址


BIND的安裝配置:

dns服務,程序包名bind,程序名named

程序包:
    bind:提供服務
    bind-libs:提供庫文件    
    bind-utils:測試服務

    bind-chroot: /var/named/chroot/

    /var/named 放的是區域數據庫文件

服務腳本和名稱:/etc/rc.d/init.d/named,unbound.service

主配置文件:

  • /etc/named.conf,

  • /etc/named.rfc1912.zones,

  • /etc/rndc.key

  • /etc/unbound/unbound.conf

解析庫文件:/var/named/ZONE_NAME.ZONE

注意:

(1) 一臺物理服務器可同時為多個區域提供解析;
(2) 必須要有根區域文件;named.ca
(3) 應該有兩個(如果包括ipv6的,應該更多)實現localhost
和本地回環地址的解析庫

rndc: remote name domain controller,
默認與bind安裝在同一主機,且只能通過127.0.0.1連接
named進程
提供輔助性的管理功能;953/tcp

DNS配置與安裝

  1. 安裝bind

  2. 設置為開機啟動 chkconfig named on(centos 6)、systemctl enable named (centos 7)并啟動試試

  3. 配置區域數據庫及相關文件!
    /etc/named.conf (此文件是全局配置文件)

主配置文件:/etc/named.conf

全局配置:options {};
日志子系統配置:logging {};
區域定義:本機能夠為哪些zone進行解析,就要定義哪些zone;

zone "ZONE_NAME" IN {};

注意:任何服務程序如果期望其能夠通過網絡被其它主機訪問,至少應該監聽在一個能與外部主機通信的IP地址上

緩存名稱服務器的配置:
監聽外部地址即可;
dnssec: 建議關閉dnssec,設為no


例:

套路:

主DNS名稱服務器:
(1) 在主配置文件中定義區域
    zone "ZONE_NAME" IN {
        type {master|slave|hint|forward};
        file "ZONE_NAME.zone";
        };
(2) 定義區域解析庫文件
    出現的內容:
    宏定義;
    資源記錄;
主配置文件語法檢查:
    named-checkconf
 解析庫文件語法檢查:
    named-checkzone "magedu.com" /var/named/magedu.com.zone
加載配置文件
 rndc status|reload ;service named reload

一、主DNS名稱服務器 正向區域:

1、安裝bind包,啟動服務
2、創建zone信息
vi /etc/named.conf

 listen-on port 53 { localhost; };
 allow-query {any;};

3、在主配置文件中定義區域(vim named.rfc1912.zones或者在主配置文件中加)

zone "ZONE_NAME" IN {
        type {master|slave|hint|forward};
        file "ZONE_NAME.zone";
};

zone "magedu.com" IN {
        type master;
        file "magedu.com.zone";
};

4.配置區域數據庫文件(vim /var/named/magedu.com.zone)

$TTL 86400
magedu.com.   IN  SOA ns1.magedu.com.  admin.magedu.com. (2016092601   1D  10M 1W 1H )
magedu.com.   IN  NS ns1
magedu.com.   IN  NS ns2
ns1     IN      A   10.1.252.213
ns2     IN      A   10.1.252.210
websrv   IN    A  10.1.252.213
websrv  IN   A 10.1.252.210
www  IN CNAME  websrv
@       IN  MX 10 mailsrv
mailsrv IN  A 10.1.252.210
$GENERATE 1-9  server$ IN A   1.1.1.6$
*       IN  A 10.1.252.213
@       IN A 10.1.252.213

5、更改數據庫文件的權限

chgrp named magedu.com.zone
chmod 640 magedu.com.zone

6、主配置文件語法檢查:

named-checkconf

解析庫文件語法檢查:

named-checkzone "magedu.com   /var/named/magedu.com.zone

7、重新加載配置文件

rndc status|reload
service named reload


二、從服務器配置

1、應該為一臺獨立的名稱服務器
2、主服務器的區域解析庫文件中必須有一條NS記錄指向從服務器
3、從服務器只需要定義區域,而無須提供解析庫文件;解析庫文件應該放置于/var/named/slaves/目錄中
4、主服務器得允許從服務器作區域傳送
5、主從服務器時間應該同步,可通過ntp進行;
6、bind程序的版本應該保持一致;否則,應該從高,主低

從服務器配置步驟

1、裝包,啟服務
2、更改配置文件 vim /etc/named.conf
listen-on port 53 { localhost; };
allow-query {any;};
allow-transfer {從IP;}; 主服務器
allow-transfer {none;}; 從服務器
(000)更改主的配置文件,使之加上從服務器的記錄

@    IN    NS  ns2
ns2    IN    A    10.1.252.21

3、改vim /etc/named.rfc1912.zones  注意這里建的空間要與主空間的名字要一致

格式

zone "ZONE_NAME" IN {
    type slave;
    masters { MASTER_IP; };//這里寫的是主DNS服務器的地址
    file "slaves/ZONE_NAME.zone";//從服務器的文件單獨保存在 /var/named/slave 目錄內,/后邊隨便起個名就行沒要求
};

例:

zone "qzx.com" IN {
        type slave;
        masters {10.1.253.73;};
        file "slaves/qzx.com.slave";
};

rndc reload

傳送成功;也可以看日志/var/log/messages;走的是TCP端口但是也需要UDP協議                            
DNS and BIND

4、權限限制 named.conf

訪問控制的指令:
allow-query {}: 允許查詢的主機;白名單;
allow-transfer {}:允許區域傳送的主機;白名單
allow-recursion {}: 允許遞歸的主機,建議全局使用
allow-update {}: 允許更新區域數據庫中的內容

例:為了安全起見只讓固定的從主機能同步,從主機不允許讓別的主機同步

在主的DNS配置文件中加上

     allow-transfer {10.1.253.73;};//允許區域傳送的主機;白名單 括號內寫上IP地址

在從的DNS配置文件中加上

    allow-transfer {none;};

三、反向區域:

區域名稱:網絡地址反寫.in-addr.arpa. 172.16.100. –> 100.16.172.in-addr.arpa.

(1) 定義區域

zone "ZONE_NAME" IN {
            type {master|slave|forward};
            file "網絡地址.zone"
        };

例
zone "1.10.in-addr.arpa" IN {
            type    master;
            file    "10.1.zone";
        };

(2) 區域解析庫文件
注意:不需要MX和A,以及AAAA記錄;以PTR記錄為主;

示例:

$TTL 86400
@  IN   SOA   ns1.qzx.com.  admin.magedu.com. (
                    2016092901
                     1H
                     5M
                     7D
                     1D )
        IN      NS      ns1.qzx.com.
73.253  IN      PTR     ns1.qzx.com.
73.253  IN      PTR     www.qzx.com.
1.100   IN      PTR     ftp.qzx.com.

(3)、語法檢查

[root@localhost named]# named-checkconf 
[root@localhost named]# named-checkzone "1.10.in-addr.arpa" 10.1.zone

(4)重讀配置文件

[root@localhost named]# rndc reload
server reload successful

測試命令講解

測試命令dig

dig [-t type] name [@SERVER] [query options]
dig只用于測試dns系統,不會查詢hosts文件進行解析

查詢選項:
+[no]trace:跟蹤解析過程 : dig +trace magedu.com
+[no]recurse:進行遞歸解析

測試反向解析:
dig -x IP = dig –t ptr reverseip.in-addr.arpa

模擬區域傳送:
dig -t axfr ZONE_NAME @SERVER
dig -t axfr magedu.com @10.10.10.11
dig –t axfr 100.1.10.in-addr.arpa @172.16.1.1
dig -t NS . @114.114.114.114
dig  -t NS . @a.root-servers.net

host

host [-t type] name [SERVER]
host –t NS magedu.com @172.16.0.1
host –t soa magedu.com
host –t mx magedu.com
host –t axfr magedu.com
host  1.2.3.4

nslookup命令:

nslookup [-option] [name | -] [server]

? 交互式模式:
nslookup>
server IP: 指明使用哪個DNS server進行查詢
set q=RR_TYPE: 指明查詢的資源記錄類型
NAME: 要查詢的名稱

測試:改客戶端主機 vim  /etc/resolv.conf

配置文件的重新加載

rndc命令

rndc:
rndc –> rndc (953/tcp)
rndc COMMAND

COMMAND:

  • reload: 重載主配置文件和區域解析庫文件

  • reload zone: 重載區域解析庫文件

  • retransfer zone: 手動啟動區域傳送過程,而不管序列號是增加

  • notify zone: 重新對區域傳送發通知

  • reconfig: 重載主配置文件

  • querylog: 開啟或關閉查詢日志文件/var/log/message(默認不記錄查詢,打開后每查詢一次就記錄一次)

  • trace: 遞增debug一個級別

  • trace LEVEL: 指定使用的級別

  • notrace:將調試級別設置為 0

  • flush:清空DNS服務器的所有緩存記錄

  • status :查詢狀態


bind中ACL

bind中基礎的安全相關的配置:

acl: 把一個或多個地址歸并為一個集合,并通過一個統一的名
稱調用
格式:

acl acl_name {
        ip;
        net/prelen;
        ……
    };

示例:

acl mynet {
        172.16.0.0/16;
        10.10.10.10;
        };

bind有四個內置的acl:

  • none: 沒有一個主機

  • any: 任意主機

  • localhost: 本機

  • localnet: 本機的IP同掩碼運算后得到的網絡地址

注意:只能先定義,后使用;因此一般定義在配置文件中,處于options的前面

訪問控制

訪問控制的指令:

allow-query {}: 允許查詢的主機;白名單;
allow-transfer {}:允許區域傳送的主機;白名單
allow-recursion {}: 允許遞歸的主機,建議全局使用
allow-update {}: 允許更新區域數據庫中的內容

子域

子域授權:分布式數據庫
正向解析區域子域方法:
定義一個子區域:

實現了在mgedu.com這個DNS中查找他的子域study.magedu.com的DNS

即在主DNS中添加子域的名稱及地址

例想要添加子域study.mage.com

study    IN    NS    ns1.study.magedu.com.
ns1.study    IN    A    10.1.0.111
例2,在magedu.com中添加子域 ops、fin
ops.magedu.com.  IN  NS  ns1.ops.magedu.com.
ops.magedu.com.  IN  NS ns2.ops.magedu.com.
ns1.ops.magedu.com.  IN  A  1.1.1.1
ns2.ops.magedu.com.  IN  A  1.1.1.2
fin.magedu.com.  IN  NS  ns1.fin.magedu.com.
fin.magedu.com.  IN  NS  ns2.fin.magedu.com.
ns1.fin.magedu.com.  IN  A  3.1.1.1
ns2.fin.magedu.com.  IN  A  3.1.1.2

注意:關閉dnssec功能:
dnssec-enable no;
dnssec-validation no
這兩項是DNS安全的功能要 no掉 注釋也不行,默認yes

原創文章,作者:qzx,如若轉載,請注明出處:http://www.www58058.com/53407

(0)
qzxqzx
上一篇 2016-10-21
下一篇 2016-10-21

相關推薦

  • 馬哥教育網絡班N22期+第4周課程練習

    馬哥教育網絡班N22期+第4周課程練習 1. 復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 cp -rf /etc/skel /home/tuser1  chmod -R go= tuser1/ 2. 編…

    Linux干貨 2016-09-19
  • 說說linux權限管理(1)

    在這篇文章當中你可以看到: 1、linux系統文件普通權限 2、文件所屬主的設置,組的指定 3、特殊權限 4、acl權限 5、su命令及其注意事項和sudo權限 6、權限管理的注意點 0、首先,在linux下用戶賬戶是分角色的,由于角色的不同,每個角色,每個用戶的的權限和所能完成的任務也不同。而在實際管理中,用戶的角色是通過UID(用戶id號)來標識的,每個…

    Linux干貨 2016-04-30
  • linux下繪圖工具rrdtool

    一、前言       為了做云緩存平臺的技術儲備,從零開始學習了rrdtool,rrdtool非常強大,剛接觸會有摸不著邊的感覺,尤其是一堆概念性的東西。學習的切入點便是這些概念,一一理解后你才能品嘗到rrdtool的清香,首先要感謝ailms整理的“RRDtool簡體中文教程 v1.01”,通俗易…

    Linux干貨 2015-03-27
  • awk詳解

    —————————— 課外練習 只處理用戶ID為奇數的行,并打印用戶名和ID號 [root@localhost ~]# awk -F: '{if($3%2!=0) {print&n…

    Linux干貨 2016-09-25
  • 第八周:網絡基礎知識和shell腳本練習

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別; 網橋:是連接兩個局域網的基于MAC地址數據存儲轉發設備,工作于數據鏈路層 集線器:所有端口處于同一個廣播域和沖突域中,帶寬共享,工作于物理層 二層交換機:多端口網橋,一個端口一個沖突域,默認所有端口位于同一個廣播域中,可以劃分vlan,隔離廣播域,帶寬獨享 三層交換機:具有路由功…

    Linux干貨 2016-11-21
  • 軟鏈接和硬鏈接的區別

          什么是鏈接文件? 使用windows的朋友們應該會經常接觸到快捷方式吧!它也就是能讓我們快速的打開一個目標應用程序,文件,或者文件夾來使我們的操作更加快捷。那么下面我們就來簡單聊聊linux上的“鏈接文件”吧!            &n…

    Linux干貨 2016-10-19
欧美性久久久久