站長新書 站長開講 首頁 最新文章 站長著作及審校 FreeBSD 筆記 Linux 筆記 Windows 筆記 虛擬化筆記 網管人雜誌 遊山玩水 關於本站
站長新書 VMware vSphere ICM 團購開跑了!!

DNS-提供 Domain Name 與 IP 對應的服務

前言

DNS,Domain Name Service 主要目地為解決 Domain Name 與 IP Address 之間相互的對應問題,在網路世界間中的溝通其實就是使用 IP Address 來溝通 (就像是人類使用的身份證),但一連串的數字這樣對人類來說太過於麻煩,因此便出現 Domain Name Service 服務來將 IP Address 轉換成人類可方便閱讀的 Domain Name,簡單來說就是例如: 您輸入的 Yahoo 網址 http://tw.yahoo.com 轉成 IP Address 以便連結到 Yahoo 的網頁伺服器,關於網域名稱服務可參考站內文章 DNS 伺服器的原理與運作流程

實作環境

安裝及設定

步驟1.建立本機反解範例檔案 (localhost.rev)

執行下列指令產生本機反解範例檔案 localhost.rev

 #cd etc/namedb                             //切換路徑                
 #sh ./make-localhost                       //產生範例檔(localhost.rev) 

步驟2.修改 DNS 設定檔 (named.conf)

修改 DNS 設定檔 named.conf

 #vi /etc/namedb/named.conf
 zone "weithenn.org"  { 
      type master; 
      file "named.weithenn.for";                                                   
      allow-transfer { 168.95.1.1; };      //安全性設定 
 };

步驟3.建立正解檔案 (named.freebsd.for)

建議您可複製剛才建立的反解範例檔案 localhost.rev 再進行修改可避免 keyin 錯誤。

 #vi /etc/namedb/named.freebsd.for        //修改 DNS 正解檔案內容如下
 $TTL      86400 
 @       IN      SOA     user.weithenn.org. hostmaster.weithenn.org. ( 
                                      2003091101 ; Serial 
                                      28800      ; Refresh 
                                      14400      ; Retry 
                                      3600000    ; Expire 
                                      86400 )    ; Minimum 
               IN      NS      gateway
               IN      A       61.60.59.58 
 gateway       IN      A       61.60.59.58 
 www           IN      A       61.60.59.58 
 mail          IN      A       61.60.59.58   
 @             IN      MX  10  mail 

步驟4.修改服務設定檔 (rc.conf)

修改 /etc/rc.conf 中加入下列的設定以便在系統重新開機時時會啟動 DNS 服務

 #vi /etc/rc.conf               
 named_enable="YES"                        //啟動 named 服務   
 named_flags="-u bind -g bind"             //採用 bind 這個帳號來啟動 DNS 服務 (安全性設定) 

步驟5.修改本機 DNS 查詢設定檔 (resolv.conf)

修改本機 DNS 查詢設定檔 /etc/resolv.conf 加上 Domain Name 及本機 IP Address,關於此設定檔詳細內容可參考站內文章 resolv.conf

 #vi /etc/resolv.conf                      //修改設定檔加入如下三行
 domain weithenn.org 
 nameserver 127.0.0.1                      
 nameserver 61.60.59.58 

步驟6.啟動 DNS 服務

請鍵入如下指令啟動 DNS 服務

 #/usr/sbin/named                          //啟動 DNS 服務 

補充1.檢查名稱解析是否正確 (nslookup)

設定好 DNS 相關主機記錄後,可透過 nslookup 指令來查詢剛才設定是否正確,以下為常用參數

 server 168.95.1.1                         //將 DNS 查詢工作交給 168.95.1.1
 set type=soa                              //設定查詢 SOA 記錄 (輸入網域名稱後自行判斷是否 DNS 有設定錯誤)
 set type=ns                               //設定查詢 NS 記錄 (Name Server)
 set type=a                                //設定查詢 A 記錄 (Host)
 set type=mx                               //設定查詢 MX 記錄 (Mail)

補充2.安全性設定 (Zone Transfer 限制)

DNS 架構下常需透過更新 Zone File 動作來更新 DNS Master 及DNS Slave 間 Zone File 的資料,在信任網域下將 Zone File 資料列出是 OK 的,但若是能由外界進行查詢您 Zone 資料時將會演變為具有危險的行為,想想若有人知道您 Zone File 設定都一清二楚那他即可針對特定主機進行攻擊行為,因此限制您的 Zone Transfer 將更顯重要。

 #nslookup                                 //進入 nslookup 交談模式
 >server weithenn.org                      //指定以 weithenn.org 為 NS 做查詢
 Default Server: weithenn.org
 Address: 61.60.59.58    
 >ls -d weitenn.org                        //檢查是否限制無法查尋 Zone File
 [weithenn.org] ***
  Can't list domain weitenn.org: Unspecified error

修改 named.conf 中填入允許的 IP Address (通常為 DNS Slave) 代表只有這個 IP Address 能進行 Zone Transfer 您的 DNS Zone File

 zone "weithenn.org" {
 type master;
 file "named.weithenn.for";
 allow-transfer { 61.60.59.57; };          //關鍵就是加入此行
 };

補充3.安全性設定 (隱藏 BIND DNS 版本)

為何要隱藏您的 BIND DNS 版本呢? 原因在於有心人士可以透過先瞭解您 DNS 主機所運作的 BIND 版本來尋找相關漏洞攻擊程式,因此在 ISC BIND 建議下可透過設定來隱藏 BIND 系統版本。

 #dig -t txt -c chaos VERSION.BIND dns.weithenn.org
 VERSION.BIND. 0S CHAOS TXT "8.3.7-REL"   //表示此台 DNS 主機目前運作的 BIND 版本為 8.3.7-REL      

修改 named.conf 在 Options 內加入 version 及文字說明,當有人使用上述方式探測您的 BIND 版本時則會顯示您剛才設定的文字說明部份。

 options { 
 ... version "Bind 1.2.3-REL"; 
 };

參考

[man page named]

[man page named.conf]

[man page resolv.conf]

[ FreeBSD 使用手冊]

[ Twnic線上DNS教學]

[ DNS安全資源網站-- Zone Transfer 限制]

[ DNS安全資源網站--如何隱藏 BIND DNS 版本 技術專欄 ]

Me FAQ

Q1.A records for B.ROOT-SERVERS.NET class 1 do not match hint records?

Error Message:

啟動 DNS 服務後 Log 出現如下錯誤訊息

 #tail /var/log/message
 Feb 6 13:01:59 gateway named[585]: check_hints: A records for  B.ROOT-SERVERS.NET class 1 do not match hint records

Ans:

表示 /etc/named/named.root 檔案內容太舊了,請更新 named.root [下載 named.root] 

 #cd /etc/named
 #fetch ftp://ftp.internic.net/domain/named.root
Go To Oddmuse OrgGo To FreeBSD OrgCreative Commons 2.5 Taiwansitestates.com