DNS Server

contributed by <yanjiun>

tags: mynote

BIND ( install )

  • 建立 DNS Server 服務的軟體
  • 目前版本為 BIDN 9
  • DNS Server 預設 Port 為 53
    • 記得防火牆要開

安裝完設定 ( configuration )

安裝完指令為 named

  • $ named-checkconf:測試 /etc/named.conf DNS Server 設定檔是否設定正確。
  • $ named-checkzone:測試 /var/named/*.zone 是否正確
    • $ named-checkzone test.com /var/named/test.zone

DNS 設定檔 /etc/named.conf

options {
    directory "/var/named";
    pid-file "/run/named/named.pid";
    listen-on {127.0.0.1; other ip;};
    ...
    forwarders { dns server ip;};
};

...

zone "yanjiun.aior.nkust.edu.tw" IN {
    type master;
    file "db.yanjiun.aior.nkust.edu.tw.zone";
};

設定 ZONE /var/named/db.yanjiun.aior.nkust.edu.tw.zone

; $ORIGIN yanjiun.aior.nkust.edu.tw. $TTL 2H @ IN SOA yanjiun.aior.nkust.edu.tw. dns.yanjiun.aior.nkust.edu.tw. ( 2019082801 ; serial (yyyymmdd##) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum ttl @ IN NS dns.yanjiun.aior.nkust.edu.tw. @ IN A 203.64.101.170 www IN CNAME dns.yanjiun.aior.nkust.edu.tw. dns IN A 203.64.101.170 hp IN A 203.64.101.44 server IN A 203.64.101.200
  • #1 預設 zone 參數
    • 若以下網址沒有以 . 結束,將會自動接上 $ORIGIN。
  • #3 @ 為預設縮寫,代表 named.conf 中的這個 zone file 鎖對應的 zone。 SOA 後兩個參數是指這個 zone file 是哪部主機定義的,以及它的負責人是誰。
    1. Serial:這份文件的版本,slave 將以此根據更新自己的 zone file。
    2. Refresh:slave 每隔這段時間就會確認 master's Serial。
    3. Retry:slave 無法連結 master 時,要隔多久重試。
    4. Expire:若 slave 超過該時間無法連結 master,就移除自己的 zone file。
    5. Minium:代表這份 noze file 中所有 record 的內定 TTL 值,也就是這份資料的暫存時間不會超過這個時間。
  • #10 @yanjiun.aior.nkust.edu.tw.
  • #13 由於 dns 不以 . 為結尾將轉換為 dns.yanjiun.aior.nkust.edu.tw.
  • #12 CNAME 為別名,因此 www.yanjiun.aior.nkust.edu.tw 等於 dns.yanjiun.aior.nkust.edu.tw

驗證 ( validation )

$ sudo named-checkconf
$ sudo named-checkzone test.com /var/named/test.com.zone

重新執行 ( Run BIND )

$ sudo systemctl restart named

設定電腦 DNS Server

$ sudo vim /etc/resolv.conf

參數查尋 ( Arguments )

resource record tamplate

<domain><opt_ttl><opt_class><type><resource_record_data>

  • domain 代表要對應的名稱
  • opt_ttl 代表這筆 record 的 TTL(Time To Live), 意思是當其它的 DNS server cache 這筆 record 時, 最長不應該超過這個時間, 這個參數可以不寫
  • opt_class 目前只能填 IN, 代表 internet
  • type resource record type 有很多種, 以下介紹一些常用的 resource record type.
    • SOA Start Of Authority, 這種 record 放在 zone file 一開始的地方, 描述這個 zone 負責的 name server, version number, maintainer 資料, 以及當 slave server 要備份這個 zone 時的一些參數.
    • NS name server, 定義某個 domain 是由哪個 name server 負責
    • A address, 定義某個 domain name 對應的 IP
    • PTR pointer, 定義某個 IP 對應的 domain name
    • CNAME canonical name, 定義一個別名及其真正對應到的 record
    • MX mail exchanger, 定義某部機器的 mail exchanger, 所有要送往那部機器的 mail 都要經過 mail exchanger 轉送

反解設定 ( Reverse zone file )

172.16.1.rev

; 
; This is db file for 172.16.1 
;

@       IN      SOA     mail.school.edu.tw. root.mail.school.edu.tw.  ( 
                                1999051401      ; Serial 
                                3600            ; Refresh 
                                300             ; Retry 
                                3600000         ; Expire 
                                3600 )          ; Minimum 
        IN      NS      mail.school.edu.tw.

$ORIGIN 1.16.172.in-addr.arpa.

; servers 
250     IN      PTR     mail.school.edu.tw.

; user pc 
1       IN      PTR     pc1.school.edu.tw. 
2       IN      PTR     pc2.school.edu.tw. 
3       IN      PTR     pc3.school.edu.tw. 
4       IN      PTR     pc4.school.edu.tw. 
5       IN      PTR     pc5.school.edu.tw. 
6       IN      PTR     pc6.school.edu.tw. 
7       IN      PTR     pc7.school.edu.tw. 
8       IN      PTR     pc8.school.edu.tw. 
9       IN      PTR     pc9.school.edu.tw. 
10      IN      PTR     pc10.school.edu.tw.
  • reverse zone file 要注意的是 origin domain 變成了 1.16.172.in-addr-arpa, 所以每個 IP 對應到的 domain name 寫的都是完整名稱而且都以 . 作結束.

參考資料 References

  1. BIND 介紹