【Linux主機+架站+維護教學+遠端協助】專案 網路開展事業或在網路賺錢第一步: 【架設24小時賺錢網站主機】比網頁設計更優先! 你還在租用虛擬主機嗎? (租用不如自有主機!自己當家作主才是:王道!) 因租用會:限制空間大小、流量、PHP.ini修改、特定語法使用... 綁手綁腳,你還能有多出眾的作為? 替你架設Linux主機伺服器+影片教你維護 (還有遠端技術協助)讓你自己當家作主! 為協助學員快速架站(隨心所欲展開網路事業)總教頭特別規劃: 替你架設Linux主機專案 並教如何成為網管高手! 聰明的網站經營者都選擇架設Linux主機伺服器做為網站運作平台,因功能完整又強大,免費架站程式超多! 參加了本專案,您無須再自我摸索曠日廢時→快速打通任都二脈 還有配套『加盟專案』,你可以現學現做,自然的實現:『事少、錢多、離家近!』的成功境界。

DNS雙向解析服務(Linux主機伺服器架設技術)Domain Name Server

本文並不在介紹從無到有寫出 dns 完整的設定檔,主要還是先利用 Linux/Linux Server 提供的工具,產生基本設定檔,再進一步解釋其中涵義,以及如何修改新增/修改主機名稱對映。

DNS開啟Port

* TCP anynet 53
* UDP anynet 53
* TCP localhost 953 (管理指令用)

全球DNS管理

DNS是 Domain Name Server 的簡稱,它的功能在於把 IP(v4 and v6) 位址與英文網址建立起對照表,以提供雙向解析的服務。
在 InterNet 上,所有的 DNS Server 是以階層的方式,層層授權,層層管理。例如:「edu.tw」是教育部電算中心的網域,電算中心會為其架 DNS Server,管理所有的學術網路。
由此,教育部的 DNS Server 授權縣教育網路中心的 DNS Server 自行管理【tnc.edu.tw】的網域。
最後再由 dns.tnc.edu.tw 授權各校的 DNS Server 自行管理學校網域。更詳細的資料,請參考上面所列兩篇文章。

Domain Name 皆是由 dns.tnc.edu.tw (163.26.200.1) 授權出去的【網域】,所以務必要建置 DNS Server 啟用該網域。
至於特定用途的網站,才由 dns.tnc.edu.tw 指定網址。如:《 xoops.tnc.edu.tw 》、《 x.tnc.edu.tw 》、《 freesf.tnc.edu.tw 》等,皆在 163.26.200.1 中直接指定網址。

安裝與初步設定
DNS 查詢指令簡介
Client DNS 查詢過程

在介紹查詢指令前,我們要先了解什麼是 DNS Cache,而它又和 Client 的 DNS 有關,因此本文在此做一簡單說明。
Client 端的 IP查詢過程

別台 DNS Server 會 cache 學校 dns 記錄,因此 dns server 若做任何變動,Client 電腦並不會立即知道(被 cache 騙了)。
因此,若有變更 dns 記錄,除了要修改 serial 外,想查詢是否設定成功,只得對自己查,這也是為何 dig 指令後面必須加上 @163.26.xxx.xxx 參數的原因。

在 Linux 上常用的 DNS 查詢指令

* nslookup dc1es.tnc.edu.tw
直接查詢 dc1es.tnc.edu.tw 的 IP 位址
* dig dc1es.tnc.edu.tw
查詢 dc1es.tnc.edu.tw 網域狀況,詢問的對象視 /etc/resolv.conf 內 nameserver 的設定值而異
* dig @163.26.200.1 dc1es.tnc.edu.tw
向 163.26.200.1 查詢 dc1es.tnc.edu.tw 網域狀況
* dig @163.26.200.1 dns.dc1es.tnc.edu.tw AAAA
向 163.26.200.1 查詢 dns.dc1es.tnc.edu.tw 的 IPv6 網址
* dig -x 163.26.182.1
查詢 163.26.182.1 的反解記錄
* dig @163.26.200.1 -x 163.26.182.1
向 163.26.200.1 查詢 163.26.182.1 的反解記錄
* dig @163.26.200.1 -x 2001:288:75a6::1
向 163.26.200.1 查詢 IPv6 2001:288:75a6::1 的反解記錄
* dig @163.26.182.1 dc1es.tnc.edu.tw MX
向 163.26.182.1 查詢收件人為 xxx@dc1es.tnc.edu.tw 的信件會轉送至何處
* dig @163.26.182.1 dns.dc1es.tnc.edu.tw MX
向 163.26.182.1 查詢收件人為 xxx@dns.dc1es.tnc.edu.tw 的信件會轉送至何處
* dig @168.95.1.1 yahoo.com NS
向 168.95.1.1(中華電信 DNS Server) 查詢 yahoo.com 網域是由那些 Name Server 來服務

DNS Server套件

Linux/Linux Server 已預設裝妥 Bind9 這一套 DNS Server 套件及其設定工具 ols3dns ,使用其產生器,所製造出的設定檔結構解釋如下:

* 設定檔位置在 /etc/bind/ 底下

* 無限制遞迴查詢(預設值)
主控檔: named.conf
其功能在於指定各網域(Zones)的設定檔名稱暨位置,以下各設定檔是以 ols3dns 產生器為例來進行說明,實務上,檔名只要在 named.conf 定義清楚即可,不一定要遵循下面的範例

rndc.key

遠端控制(Remote Name Daemon Control)金鑰

RNDC詳解: http://dns-learning.twnic.net.tw/bind/security.html#two
named.ca     最頂層 dns server 定義,在 named.conf 設定時必須使用 type hint 來指定
db.xxxx.tnc.edu.tw     IPv4/IPv6共用正解檔
db.163.26.xxx     IPv4反解檔
2001.288.75xx.rev     IPv6反解檔
localhost     IPv4/IPv6 localhost 正解檔
rev-127.0.0     IPv4 localhost 反解檔
rev.local6     IPv6 localhost 反解檔

* 限制遞迴查詢設定檔結構
主控檔: named.conf + auth_zones.conf
named.conf 主內容在限制遞迴查詢,而可查詢的網域改放在 auth_zones.conf
其他檔案與上面一致

* port 值: TCP/UDP 53 ; localhost: 953
* 手動啟動 | 停止 DNS 服務: /etc/init.d/bind9 start | stop | restart

設定檔內關鍵用語解說

筆者整理了 Bind9 各設定檔常出現的關鍵用語如下,請參考:
$TTL 86400     對方主機查詢完畢,其值要保留(快取)的秒數,例:86400秒
$ORIGIN     宣告本設定檔所列之所有記錄出自於那個網域,最後必須以「.」做結尾,否則會自動再加上網域名稱
$ORIGIN subnet     授權自己的子網域給另一台 DNS Server
@     代表「Zone」

以 db.xxx.tnc.edu.tw 設定檔為例,【@】指的是 xxx.tnc.edu.tw。
以 localhost 設定檔為例,【@】指的是 localhost
IN SOA     開始授權(Star of Authority),後面接了兩個參數是指「本 zone 的管理主機名」及「本 zone 的管理者」
IN NS     負責的 Name Server 主機名稱為何?
IN A     為主機名稱賦予 IPv4 位址
IN AAAA     為主機名稱賦予 IPv6 位址
IN CNAME –> 別名     例: www,ftp,s1…皆是 dns 的分身
IN PTR –> 反解     某 IP 所代表的主機名稱
IN MX –>Mail eXchange     轉信,例:
mail.tw IN MX 0 spamgw.tw
mail.tw IN MX 10 mail.tw

說明如下:

1. 把【xxx@mail.tw】信件先轉給【spamgw.tw】(註: 有兩筆 MX 記錄時,數值低的有較高的優先權)
2. 【spamgw.tw】收了信之後(並處理之),發現原來指定收信人是在【mail.tw】,因此再把它轉回給【mail.tw】
3. 如果 spamgw 故障,理論上會送至第二優先 mail.tw(它自己),但依游戲規則,就算是 mail.tw 它自己,它還是會去問 dns.tw ,信件 xxx@mail.tw 的 MX 為何?結果 dns.tw 說,要優先送 spamgw.tw。簡言之,設了 MX 之後,最優先的那台主機一定不可以故障,否則會收不到信件

* 注意:mail 與 dns 同位址時,不可以採用 CNAME 的設法,一定要用 IN A,才可正常收發信件

限制遞迴查詢 vs 不限制

限制遞迴查詢的意思是,本 DNS Server 只回答所轄網域的問題,其餘不答。不限制的話,就沒有上述限制。例如:當一台 client 向 DNS Server(163.26.182.1)詢問 tw.yahoo.com 時,若有做限制,那麼它不會回答,因為 tw.yahoo.com 不歸 dc1es.tnc.edu.tw 所管。反之,若不做任何限制,它會依其根設定檔(named.ca)一層層往上問,幫 client 找到 tw.yahoo.com 的 IP Address 並回覆之。

可是,貴校可能已設妥限制,而且學校的電腦也都以本校的 DNS Server 為查詢主機,為何還是可以查得到 tw.yahoo.com ?那是因為在 named.conf 內的:「acl allow_clients { 127.0.0.1; 163.26.182.0/24; 2001:288:75a6::/48; };」設定中有說明,要開放給校內的機器查詢。

限制遞迴查詢雖然會造成一些不方便,但它會有較高的安全性,尤其是對 ARP 類病毒偽造網址攻擊,有較高的防禦能力。不過未來若 IPv6 only 實施(沒有 ARP 機制,改用 fe80:…機制),其實限制遞迴查詢,就比較沒有存在意義(目前是 IPv4 與 IPv6並存)。

Linux Server初步設定方法

有兩個方式來設定 DNS 參數

1. 在設定管理密碼(Linux-setup)時勾選【這台主機要擔任 DNS Server 嗎 ?】,就會在 /etc/bind/ 底下產生不限遞迴查詢的相關設定檔
注意:本方式僅適用於裝完 Linux Server,第一次登入時。因為 Linux-setup 本身會改變很多設定值(不只 dns),若機器已順利運作多時,勿用。
2. 直接在終端機介面下指令

1. 不限遞迴查詢: root@dns~# ols3dns
2. 限制遞迴查詢: root@dns~# ols3dns –no-recursive
3. 以大成國小為例
#—————————————————–#

# 臥龍小三 工 具 箱 (1.0.7Linux) Copyright 2006 OLS3  #
# DNS 自動產生器 1.0.7Linux for Linux          #
# All rights Reserved.                #
#—————————————————–#

請輸入網域名稱? 例如: jmjh.tnc.edu.tw
dc1es.tnc.edu.tw
請輸入IP前三個數字? 例如: 163.26.167
163.26.182
請輸入第一台主機的第四個IP?
例如: 163.26.167.1 的 1
1
您要架設第二部 DNS 嗎?(Y/N)
N

Done!

Linux初步設定方法

與 Linux Server 一樣,有兩個方式來產生基本的 DNS 設定檔

1. 在設定管理密碼(Linux-csetup-utf8/Linux-csetup)時,在最後一個問題【這台主機要擔任 DNS Server 嗎 ?】回答「Y」,就會在 /etc/bind/ 底下產生不限遞迴查詢的相關設定檔。
注意:本方式僅適用於裝完 Linux Server,第一次登入時。因為 Linux-setup 本身會改變許多設定值,若機器已順利運作多時勿用。
2. 先把終端機的字元編碼改為 Big5 ,再下指令

1. 不限遞迴查詢: root@dns~# ols3dns
2. 限制遞迴查詢: root@dns~# ols3dns –no-recursive
3. 設定過程與上例一樣,請參考上面文件

進階設定
IPv4 的正反解
新增一筆IPv4位址正解

要新增一筆正解記錄只要在正解檔「 /etc/bind/db.xxx.tnc.edu.tw 」內,加上一筆 IN A 的記錄,再把 serial n加1,並重新啟動 DNS Server 即可。 下文,筆者以新增 spamfilter.dc1es.tnc.edu.tw 網址,指向 163.26.182.250 IPv4 位址為例進行解說。

1. 編輯 /etc/bind/db.xxx.tnc.edu.tw

$TTL 86400
@  IN  SOA dns.dc1es.tnc.edu.tw. admin.dns.dc1es.tnc.edu.tw. (
2006030801 ; 這個數字是序號(serial no.) , 每修改一次就要加 1 號
86400 ; refresh
1800 ; retry
1728000 ; expire
1200 ; Negative Caching
)
IN   NS dns.dc1es.tnc.edu.tw.
dns IN A 163.26.182.1
@ IN MX 0 mail.dc1es.tnc.edu.tw.
;網域名稱 dc1es.tnc.edu.tw 也要賦予一組 IPv4 位址
dc1es.tnc.edu.tw. IN A 163.26.182.1
;
s1     IN   CNAME dns.dc1es.tnc.edu.tw.
www    IN   CNAME dns.dc1es.tnc.edu.tw.
ftp    IN   CNAME dns.dc1es.tnc.edu.tw.
proxy  IN   CNAME dns.dc1es.tnc.edu.tw.
;
mail  IN  A  163.26.182.1
s2    IN  A  163.26.182.2
nt    IN  A  163.26.182.3
s4    IN  A  163.26.182.4
s5    IN  A  163.26.182.5
nat   IN  A  163.26.182.234
;為 spamfilter 加上 IN A 的記錄
spamfilter IN A 163.26.182.250
註1:正反解設定檔是用「;」來標示註解文字,不是「#」,請勿用錯
註2:每一行都要靠左,除非本行是上一行的附屬設定

2. 重新啟動 bind9
root@dns:~# service bind9 restart
3. 檢查重新啟動的訊息是否正常
root@dns:~# tail -50 /var/log/syslog


IPv4反解問題

IPv4正解,可以由上層 DNS Server 授權某任一 IPv4 位址來擔任 DNS 工作,不受 IPv4 網段影響。但反解就不行,因為它受到「至少要一個完整 C Class 網段」的限制。因此,所有分配到 163.26.xxx.1 的學校,可以幫其他前三個數字一致的機器做反解,但 163.26.xxx.129 就不行。這也是為什麼,我們可以向中華電信申請 dns 名稱正解管理權,但反解就不行,只能靠它幫忙代管的原因。

基於上述原因,若貴校有非反解不可的原因,又不在 163.26.xxx.0 網段上,可以連絡教網中心主任協助處理。至於 IPv6 的部分,因為所配發網段皆是完整的 prefix 48 ,所以不會有此一困擾。不過如果貴校如果剛好就分配到 163.26.xxx.0 網段,則可以經由編輯 /etc/bind/db.163.26.xxx 來新增一筆 IPv4 反解記錄。
$TTL 86400

@   IN   SOA   dns.dc1es.tnc.edu.tw.   admin.dns.dc1es.tnc.edu.tw. (
2000082620  ; serial 要加 1
86400  ; refresh
1800  ; retry
1728000  ; expire
1200  ; Negative Caching
)
IN   NS   dns.dc1es.tnc.edu.tw.

1     IN   PTR   dns.dc1es.tnc.edu.tw.
2     IN   PTR   s2.dc1es.tnc.edu.tw.
3     IN   PTR   nt.dc1es.tnc.edu.tw.
4     IN   PTR   s4.dc1es.tnc.edu.tw.
5     IN   PTR   s5.dc1es.tnc.edu.tw.
234   IN   PTR   nat.dc1es.tnc.edu.tw.
250   IN   PTR   spamfilter.dc1es.tnc.edu.tw.

手動增加 IPv6 的正反解
沒限制遞迴查詢(預設)
修改 named.conf

把紅字的部分, 加至 /etc/bind/named.conf
options {

directory “/etc/bind”;
allow-transfer {
163.26.182.2; // Secondary DNS
};
listen-on-v6 { any; };
};

logging {
category lame-servers{null;};
};

zone “.” {
type hint;
file “named.ca”;
};

zone “localhost” {
type master;
file “localhost”;
};

zone “0.0.127.in-addr.arpa” {
type master;
file “rev-127.0.0”;
};

zone “dc1es.tnc.edu.tw” {
type master;
file “/etc/bind/db.dc1es.tnc.edu.tw”;
};

zone “182.26.163.in-addr.arpa” {
type master;
file “db.163.26.182”;
};

// ::1 的反解檔
zone “1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa.”{
type master;
file “rev.local6”;
};

// 2001.288.750b 的反解檔
zone “6.a.5.7.8.8.2.0.1.0.0.2.ip6.arpa.” {
type master;
file “2001.288.75a6.rev”;
};

繼續修改 db.xxx.tnc.edu.tw

$TTL 86400
@  IN  SOA dns.dc1es.tnc.edu.tw. admin.dns.dc1es.tnc.edu.tw. (
2006030802 ; serial 要加 1
86400 ; refresh
1800 ; retry
1728000 ; expire
1200 ; Negative Caching
)
IN   NS dns.dc1es.tnc.edu.tw.
dns  IN  A    163.26.182.1
IN  AAAA 2001:288:75a6::1
;上面 IN AAAA 前面一定要留空白, 代表是要繼續設 dns 主機的 AAAA(IPv6) 記錄
;
@ IN MX 0 mail.dc1es.tnc.edu.tw.
;
dc1es.tnc.edu.tw. IN A 163.26.182.1
IN  AAAA  2001:288:75a6::1
;上面兩行指「網域名稱 dc1es.tnc.edu.tw 也賦予一組 IPv4 及 IPv6 位址」
;
s1     IN CNAME dns.dc1es.tnc.edu.tw.
www    IN CNAME dns.dc1es.tnc.edu.tw.
ftp    IN CNAME dns.dc1es.tnc.edu.tw.
proxy  IN CNAME dns.dc1es.tnc.edu.tw.
;
mail   IN  A     163.26.182.1
IN  AAAA  2001:288:75a6::1
s2     IN  A     163.26.182.2
nt     IN  A     163.26.182.3
s4     IN  A     163.26.182.4
s5     IN  A     163.26.182.5
nat    IN A  163.26.182.234
IN AAAA  2001:288:75a6::234
spamfilter IN A  163.26.182.250
;經過修改 spamfilter.dc1es.tnc.edu.tw 便會有 IPv4 及 IPv6 兩筆記錄

修改 localhost 新增 ::1 正解

$TTL 86400
@    IN   SOA    dns.dc1es.tnc.edu.tw.    admin.dns.dc1es.tnc.edu.tw. (
2000082620 ; serial 要加 1
86400 ; refresh
1800 ; retry
1728000 ; expire
1200 ; Negative Caching
)
IN   NS   dns.dc1es.tnc.edu.tw.
;
localhost. IN  A    127.0.0.1
IN  AAAA  ::1

* 註:紅字為修改之處

建立 ::1 及 2001.288.75xx.rev 反解檔

* 建立 ::1 IPv6 的 localhost 反解
root@dns~# vi /etc/bind/rev.local6

$TTL 86400
@ IN  SOA  dns.dc1es.tnc.edu.tw. admin.dns.dc1es.tnc.edu.tw. (1 15m 5m 30d 1h)
IN   NS  dns.dc1es.tnc.edu.tw.

; (1 15m 5m 30d 1h) 中的 1 是序號, 每次修改都要加 1

;;

1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa. IN PTR localhost.

註:除了 IN NS 這一行為 SOA 這一行的附屬參數,所以左側留有空白外,其餘各行前面不可留空白

* 建立 IPv6 反解檔
root@dns~# vi /etc/bind/2001.288.75a6.rev

$TTL 86400
$ORIGIN 6.a.5.7.8.8.2.0.1.0.0.2.ip6.arpa.
@  IN   SOA dns.dc1es.tnc.edu.tw. admin.dns.dc1es.tnc.edu.tw. (1 15m 5m 30d 1h)
IN   NS   dns.dc1es.tnc.edu.tw.
;;
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0  IN  PTR  dns.dc1es.tnc.edu.tw.
234.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0  IN  PTR  nat.dc1es.tnc.edu.tw.

限制遞迴查詢

只需修改下面這兩個設定檔,其餘設定值與不限遞迴查詢一致
修改 named.conf

options {
directory “/etc/bind”;
allow-transfer {
163.26.182.2;
};
listen-on-v6 { any; }; //要加上這一行
};

logging {
category lame-servers{null;};
};

// 把學校 IPv6 網段加入可允許查詢區,例:新增 2001:288:75a6::/48;
acl allow_clients { 127.0.0.1; 163.26.182.0/24; 2001:288:75a6::/48; };

// 在 acl 中的 IP 允許的操作
view “recursive” {
match-clients { allow_clients; };
recursion yes;
include “auth_zones.conf”;
};

// 未在 acl 中的 IP 拒絕使用遞迴式查詢
view “external” {
match-clients { any; };
recursion no;
include “auth_zones.conf”;
};

修改 auth_zones.conf

zone “.” {
type hint;
file “named.ca”;
};

zone “localhost” {
type master;
file “localhost”;
};

zone “0.0.127.in-addr.arpa” {
type master;
file “rev-127.0.0”;
};

zone “dc1es.tnc.edu.tw” {
type master;
file “/etc/bind/db.dc1es.tnc.edu.tw”;
};

zone “182.26.163.in-addr.arpa” {
type master;
file “db.163.26.182”;
};

// 新增 ::1 的反解檔
zone “1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa.”{
type master;
file “rev.local6”;
};

// 新增 2001.288.75a6 的反解檔
zone “6.a.5.7.8.8.2.0.1.0.0.2.ip6.arpa.” {
type master;
file “2001.288.75a6.rev”;
};
修改 db.xxx.tnc.edu.tw 正解檔

 與不限遞迴查詢做法相同,請參考前文

建立 ::1 及 2001.288.75xx.rev 反解檔

 與不限遞迴查詢做法相同,請參考前文