iT邦幫忙

DAY 28
6

Linux Pi的奇幻旅程系列 第 25

Linux Pi的奇幻旅程(28)-DNS

西方人的主要哲學之一就是命名空間(namespace), 網際網路(互聯網, the Internet)也是如此, the Internet的兩大命名空間(namespaces)是域名階層(domain name hierarchy)和IP位址空間. 而這兩個命名空間的轉譯系統就是DNS, Domain Name System, 域名系統.

上一篇: Linux Pi的奇幻旅程(27)-webmin管理
http://ithelp.ithome.com.tw/question/10138984
下一篇: Linux Pi的奇幻旅程(29)-Hello World!
http://ithelp.ithome.com.tw/question/10139347
全部: http://ithelp.ithome.com.tw/ironman6/player/bizpro/alll/1
DNS的根系統每天要處理20億次的DNS查詢. 這是一個複雜的系統, 尤其是DNS安全機制DNSSEC更是複雜. 在Linux的系統中, 有幾個很有名的DNS系統, BIND, OpenDNS, 和PowerDNS. 其中BIND是最廣為使用的DNS系統, 只是BIND也是最耗系統資源的DNS伺服器.

Webmin有BIND伺服器模組, 但是BIND的模組只支援舊版的BIND 8, 首先進入Webmin的管理界面, 如下圖, 圖中顯示DNS並未在已安裝的伺服器列中, 就到Un-used Modules區域來找, 可以看到BIND DNS伺服器就是所要安裝的DNS系統.:

點擊BIND DNS伺服器的連結, 出現了關於Bind 8不存在於系統的訊息, 很顯然的, 即使我已經使用了最新版的Webmin, 仍然沒有支援最新版的Bind 9和10:

到Google去找看看Bind 9的模組, 找到了一套2004年所開發的支援Bind 9的Webmin套件(http://sourceforge.net/projects/b9ddns/?source=navbar), 這是一套很陳舊的Bind模組, 但也是所能找到的Webmin模組, 看來Webmin對BIND的支援並不理想, 要用Webmin來管理BIND不是很合適, 但是我還是看看是否可以用來以網頁的方式來查看或以繞道的方式來修正DNS的設定.

首先要先安裝bind9:

pi@raspberrypi ~ $ sudo apt-get install bind9 bind9utils 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  geoip-database libbind9-80 libdns88 libgeoip1 libisc84 libisccc80 libisccfg82 liblwres80
Suggested packages:
  dnsutils bind9-doc resolvconf ufw geoip-bin
The following NEW packages will be installed:
  bind9 bind9utils geoip-database libbind9-80 libdns88 libgeoip1 libisc84 libisccc80 libisccfg82 liblwres80
0 upgraded, 10 newly installed, 0 to remove and 0 not upgraded.
Need to get 3,127 kB of archives.
After this operation, 8,614 kB of additional disk space will be used.
Do you want to continue [Y/n]? y

還需要安裝bindutils套件, 不然會找不到nsupdate:

pi@raspberrypi ~ $ sudo apt-get install dnsutils 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  bind9-host
Suggested packages:
  rblcheck
The following NEW packages will be installed:
  bind9-host dnsutils
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 231 kB of archives.
After this operation, 508 kB of additional disk space will be used.
Do you want to continue [Y/n]? y

安裝好Bind 9, 再來 如下圖, 按下圖中大的綠色按鈕, 將檔案下載下來:

接著要安裝這個模組了, 如下圖顯示的步驟, 這些步驟就是安裝額外模組的步驟, 首先到Webmin組態開啟Webmin 設定的頁面, 然後點選Webmin模組:

開啟了下圖, 接著選單選框[從上傳的檔案]即其右側的按鈕[瀏覽]來選擇剛剛下載的模組, 檔名會顯示出來, 第三步按下按鈕[從檔案安裝模組].

如下圖, 模組安裝成功了, 看來似乎沒有問題.

按F5或瀏覽器的刷新按鈕來刷新Webmin的頁面, 在左側伺服器選項中就會出現BIND 9 dynamic DNS server的連結:

點選BIND 9 dynamic DNS server的連結, 出現了一個錯誤:

這個錯誤是因為這個Bind 9模組很舊了, 用的是以前的指令, 因此找不到/etc/init.d/named的命令. 而這個命令不存在於我所用的Raspbian系統中, 現在使用的是/etc/init.d/bind9這個管理命令. 這個問題好辦, 只要建立一個軟連結就可以了:

pi@raspberrypi ~ $ sudo ln -s /etc/init.d/bind9 /etc/init.d/named
pi@raspberrypi ~ $ ls -ls /etc/init.d/named 
0 lrwxrwxrwx 1 root root 17 Oct 21 09:51 /etc/init.d/named -> /etc/init.d/bind9

再刷新頁面, 還是出現了另一個錯誤, 這個Bind9的模組說系統上的/etc/named.conf設定檔有問題, 就按下圖中的按鈕來產生新的/etc/named.conf檔.

到此一切的問題都一一解決了, 順利出現了正確的Bind 9設定界面, 如下圖, 請注意, Bind 9已經內建了root區域了, 所以不需要建立, 因此可以直接創建一個新的主區域, 也就是按下[Create a new master zone]來設定Bind 9:

此時開啟了如下圖的主區域設定界面:

(1)Zone type: 選Forward (names to addresses)
(2)Domain name / IP subnet: 假設設定為bizpro.com, 請注意, 不是FQDN.
(3)Records file: Automatic自動建立這個主區域bizpro.com的設定檔.
(4)Master server: 不必設定, 我們目前只需主DNS伺服器, 不需要次DNS伺服器, 請注意, 由於這個模組是很舊的模組, 所以會看到已經不再使用的Master和Slave, 現在都相對改為Primary 和Secondary.
(5)Email address: 這裡暫設定為dnsadmin@bizpro.com
(6)Use zone template? 是 IP address for template records
(7)Refresh time, Transfer retry time, Expiry time, Negative caching TTL, Zone default TTL等都不更動.

到這裡看起來一切都很順利, 也出現了這個看起來很完整的設定畫面:

其實, 如果要去新增一個A紀錄, 也就是按下第一個圖示, 填好資料並儲存設定後, 資料並無法存入, 且發生了Error - Missing Content-Type Header的錯誤:

這個錯誤的基本原因是原本以為是這個bind 9的模組用的語法太舊了, 因此在我所用的Firefox和Chrome瀏覽器都不支援, 但我換了IE6和IE7還是不行, 所以就不再掙扎一定要用圖形化的設定功能, 但是這個模組也不是一無是處, 在之前設定畫面中圈起來的圖示[Edit Records File]還是可以用來直接編輯Bind的區域檔(zone file), 點擊這個圖示就可以開啟編輯視窗, 如下圖:

儲存所編輯的A紀錄之後, 就可以看到有一筆A紀錄了, 如下圖所示:

就接著點擊看看所建立的A紀錄:

至少, 這個模組可以讓我們直接編輯DNS區域檔, 並檢查語法, 也就是說, 如果正確, 至少顯示出來這個正確的紀錄.

(由於還要編輯第29篇內容, DNS的部份會在明天再增加內容)


上一篇
Linux Pi的奇幻旅程(27)-webmin管理
下一篇
Linux Pi的奇幻旅程(29)-Hello World!
系列文
Linux Pi的奇幻旅程27

1 則留言

我要留言

立即登入留言