Ubuntu 使用 bind9 架設DNS Server
這是寫給自己看的安裝筆記,所以比較簡單。
1. 首先安裝必要套件
2. 進入到/etc/bind目錄,會看到底下目錄結構:
紅框的兩個檔案是我們要修改的。
named.conf.local 裡面可以設定正反解的zone,如果不想改,也可以新增自己喜歡的檔案,但要記得在named.conf裡面include他
named.conf.options 主要在設定dns的一些選項和安全性。
其他的檔案就是預設的一些localhost的正反解相關,這裡我們不用理他沒關係。
3. 首先設定named.conf.options,比較重要的是關閉recursion。底下是我的設定
最上面的紅框,是指定ACL群組,可以指定多個IP,等於當作變數來使用。
下面的紅框,recursion no和allow-recursion只能指定一個,要嘛全關(開),要嘛就只有特定IP才開,裡面放的變數就是上面acl所指定的。這裡我是把他全關了。
4. 接著設定zone,一個domain還包含正解和反解,所以會有兩個以上的zone。可以把zone的設定寫在named.conf.local底下。
底下是範例:
1. 首先安裝必要套件
- sudo apt-get install bind9 bind9-doc dnsutils
2. 進入到/etc/bind目錄,會看到底下目錄結構:
紅框的兩個檔案是我們要修改的。
named.conf.local 裡面可以設定正反解的zone,如果不想改,也可以新增自己喜歡的檔案,但要記得在named.conf裡面include他
named.conf.options 主要在設定dns的一些選項和安全性。
其他的檔案就是預設的一些localhost的正反解相關,這裡我們不用理他沒關係。
3. 首先設定named.conf.options,比較重要的是關閉recursion。底下是我的設定
- acl intra { 192.168.1.0/24; };
- options {
- directory "/var/cache/bind";
- // If there is a firewall between you and nameservers you want
- // to talk to, you may need to fix the firewall to allow multiple
- // ports to talk. See http://www.kb.cert.org/vuls/id/800113
- // If your ISP provided one or more IP addresses for stable
- // nameservers, you probably want to use them as forwarders.
- // Uncomment the following block, and insert the addresses replacing
- // the all-0's placeholder.
- // forwarders {
- // 0.0.0.0;
- // };
- //========================================================================
- // If BIND logs error messages about the root key being expired,
- // you will need to update your keys. See https://www.isc.org/bind-keys
- //========================================================================
- dnssec-validation auto;
- auth-nxdomain no; # conform to RFC1035
- // listen-on-v6 { none; };
- listen-on port 53 { any; };
- allow-query { any; };
- allow-query-cache { none; };
- recursion no; //allow-recursion { intra; };
- also-notify { };
- };
最上面的紅框,是指定ACL群組,可以指定多個IP,等於當作變數來使用。
下面的紅框,recursion no和allow-recursion只能指定一個,要嘛全關(開),要嘛就只有特定IP才開,裡面放的變數就是上面acl所指定的。這裡我是把他全關了。
4. 接著設定zone,一個domain還包含正解和反解,所以會有兩個以上的zone。可以把zone的設定寫在named.conf.local底下。
底下是範例:
- acl allow-trans-ip { x.x.x.x; y.y.y.y; };
- //---正解的區域---
- //主要,如果要設定的zone是主要區域,就看這部分
- zone "domain1.com" {
- type master; //master為主要區域,也可設定為slave就是次要區域,可從主要區域複製資料過來
- file "/etc/bind/zones/domain1.com.fwd"; //指定dns檔案位置,檔名可自取,但如果有多個zone要設定,檔名格式最好一致
- //底下的是master才要設定,指定哪些IP可以從此台master複製資料,不然全開,網路所有DNS都可以從這裡取得資料也太危險
- allow-transfer {
- allow-trans-ip; //這個變數就是上面紅框處指定的
- };
- }
- //次要,如果要設定的zone是要從master取得資料的次要區域,就看這部分
- zone "slave.com" {
- type slave;
- file "slave.com.fwd";
- //次要區域的檔案有點不太一樣,如果使用絕對路徑,應該會發生無法寫入(permission deny)的錯誤
- //所以我們只使用檔名,那麼路徑呢?ubuntu預設是放在/var/cache/bind/底下
- //可在named.conf.options底下看到directory的設定就是預設檔案存放路徑
- //底下的是slave才要設定
- masters { x.x.x.x; }; //指定master是哪幾台,一樣可用acl指定IP群組
- }
- //...
- //---反解的區域---
- zone "3.2.1.in-addr.arpa" { //反解的命名規則,如果IP是1.2.3.x,那麼就要倒過來寫變成3.2.1.in-addr.arpa,格式要對
- type master; //這裡就只寫master了,要設定slave的話跟上面一樣
- file "/etc/bind/zonez/1.2.3.rev"; //檔名一樣可自取,多個zone的話檔名格式最好一致
- allow-transfer { allow-trans-ip; };
- };
5. 接下來就是編輯每個zone的檔案了。如果是master的話一定要編輯,不然沒資料怎麼讓slave抓啊~
如果是slave的話檔案不存在也可,從master抓來之後會自己產生,但要確定檔案存放的目錄能夠讓named有寫入權限。
底下是正解檔案範例:
底下是反解檔案範例:
6. 接著重新啟動一下:/etc/init.d/bind9 restart
這樣就啟動我們的dns服務了,如果是slave的話也就自動向master抓好資料了。
參考資料:
鳥哥
如果是slave的話檔案不存在也可,從master抓來之後會自己產生,但要確定檔案存放的目錄能夠讓named有寫入權限。
底下是正解檔案範例:
- $TTL 3600
- ;指定SOA紀錄
- @ IN SOA ns1.domain1.com. webadmin.domain1.com. ( ;注意webadmin.domain1.com其實是email,只是把@改成.,所以意思是webadmin@domain1.com
- 2014062007 ;Serial,每次編輯該檔都要改序號,這個是為了通知slave,master有改變,要他們來更新資料,建議格式是YYYYMMDDnn,nn為當日流水號
- 1800 ;Refresh
- 900 ;Retry
- 86400 ;Expire
- 3600 );Default TTL
- ;指定NS紀錄
- ;一般DNS都會有兩台備用,所以如果有第二台當slave的話也記得要把該台寫到NS紀錄裡
- @ IN NS ns1.domain1.com.
- @ IN NS ns2.domain2.com.
- ;指定A紀錄
- @ IN A 1.2.3.4 ;@表示該domain名稱,在本例也就是domain1.com
- ns1.domain1.com. IN A 1.2.3.4 ;master的IP
- ns2.domain1.com. IN A 1.2.3.5 ;slave的IP
- web.domain1.com. IN A 1.2.3.6
- mail1.domain1.com. IN A 1.2.3.7
- main2.domain1.com. IN A 1.2.3.8
- ;指定CNAME
- www.domain1.com. IN CNAME web.domain1.com.
- ;指定MX
- @ 3600 IN MX 1 mail1.domain1.com. ;數字1表示優先權最大
- @ 3600 IN MX 5 main2.domain2.com.
底下是反解檔案範例:
- $TTL 3600
- ;指定SOA紀錄
- @ IN SOA ns1.domain1.com. webadmin.domain1.com. (
- 2014062003
- 1800
- 900
- 86400
- 3600 )
- ;
- ;指定NS紀錄,SOA跟NS的寫法都跟正解一樣
- @ IN NS ns1.domain1.com.
- @ IN NS ns2.domain1.com
- ;指定PTR紀錄,反解裡面就只有PTR紀錄,說明IP要對應到哪個名稱
- 4.3.2.1.in-addr.arpa. IN PTR ns1.domain1.com. ;注意最前面的IP順序是相反的
- 4 IN PTR ns2.domain1.com. ;也可以用簡寫,只寫IP最後一碼即可,但注意簡寫後面不可加.
- ;...
6. 接著重新啟動一下:/etc/init.d/bind9 restart
這樣就啟動我們的dns服務了,如果是slave的話也就自動向master抓好資料了。
參考資料:
鳥哥
沒有留言:
張貼留言