主機名稱是很重要的,尤其是動態的 DNS 主機名稱,本文還有談論動態的 DNS 之偵測技巧,以及相關的文件!
在讀完了網路基礎並且架設了個人簡易的防火牆之後,總算是準備要開始來給他進入 Server 的架設了!伺服器架設的步驟裡面,很重要的一點是『你的主機名稱必須要在 Internet 上面可以被查詢』才好!這是因為人類對於 IP 記憶力不佳,所以才會以主機名稱來取代 IP。不過, 你的主機名稱要能夠被查詢到才有用啊!這個時候,一個『合法』的主機名稱就很重要了!那要合法的主機,就得要讓 DNS 系統能夠找的到你的主機啊!不過,如果我們的主機是使用撥接得到的不固定 IP 呢?又該如何申請 DNS 主機名稱?那就得要使用動態 DNS 的系統囉!在這個章節中,我們主要在介紹 Client 端的設定,而不是在設定 DNS 伺服器喔! ^_^
如果你已經將第二章的網路基礎看完的話,應該會知道其實我們的 TCP/IP 環境只要有 IP 與正確的路由即可連線了。那麼你申請主機名稱要幹嘛?因為『沒辦法啊!人腦太不中用了!』舉例來說,你可以背出來我們常上去查資料的 www.google.com 的 IP 嗎?報告!鳥哥沒辦法背出來~
因為 IP 是那麼難背的東西,而且,如果你的 IP 又是類似撥接的不固定的 IP 時,那還更傷腦筋呢! 因此我們才會習慣以熟悉的英文字串來做為主機名稱,然後讓『這個主機名稱與 IP 達成對應』,那直接記憶主機名稱就行了,反正 IP 的查詢就交給電腦主機來做即可!在這樣的想法下,我們當然就需要有主機名稱啦!
因為 IP 是這麼難記憶的東西,因此人們就使用『名字』來對應到主機的 IP,這就是主機名稱的由來。 好在早期連上網路的電腦數量不多,所以在網路上的人們就想出一個簡單的辦法來進行主機名稱與 IP 的對應,那就是『在每部電腦的 /etc/hosts 裡面設定好主機名稱與 IP 的對應表』。那麼人們就可以直接藉由主機名稱來連接上某些網路上的主機囉!
然而因為科技的發達,連上 Internet 的人們越來越多,使用 /etc/hosts 的方法已經搞不定了 (只要一部新電腦上線,全部 Internet 上面的所有電腦都要重新改寫 /etc/hosts 才行!) ,這個時候領域名稱系統 ( Domain Name System, DNS ) 就適時的出現了!
DNS 利用類似樹狀目錄的型態,將主機名稱的管理分配在不同層級的 DNS 伺服器當中,經由分層管理,所以每一部伺服器記憶的資訊就不會很多,而且異動上面也相當的容易修改! 這個 DNS 的功能你知道了嗎?對啦!就是『將電腦主機的名稱轉譯成 IP 』就是了!當然囉,他的額外功能還很多,關於 DNS 的詳細的解析部分我們將在後續的 第十九章 DNS 伺服器架設當中再持續的加強內容,總之, 它的最大功能就是『讓有意義的,人類較容易記憶的主機名稱(英文字母) ,轉譯成為電腦所熟悉的 IP 位址!』
透過上面的簡單說明,你得要知道,如果你想要一個主機名稱,那你就得要透過 DNS 系統,而不是單純的修改你的 /etc/hosts 而已。 那你如何加入一個主機名稱到 DNS 系統當中呢?『授權』是重點!那什麼是授權呢?
很多朋友都認為:『因為我想要架站,所以主機需要有個主機名稱,因此我就得要架設 DNS 伺服器?』是這樣嗎?當然不是囉!DNS 是個很龐大的架構,而且是串連在全球的網路當中,除非你經由『註冊』的手續來讓 DNS 系統承認你主機名稱存在的合法性,否則你架設的 DNS 只能說是一個『地下練習的測試站』而已啦!並沒有用途的。
那我要如何加入 DNS 系統呢?很簡單啦!首先你必須要選擇一個註冊單位, 並且檢查出你想要註冊的主機名稱是否存在?主機名稱是有意義的,並不是你可以隨便註冊的喔! 舉例來說,在台灣常見的個人網站註冊主機名稱為: *.idv.tw ,而公司行號則可能註冊為 *.com.tw 了!這個得要特別留意。至於台灣地區的註冊單位很多,你可以選擇例如 Hinet 或 Seednet 之類的 ISP 來註冊。當然,你也可以選擇免費的 no-ip.org 來註冊的。
如果想要瞭解啥是『合法授權』的話,得要從 DNS 主機名稱的查詢方式來談起,由於 DNS 查詢的方式都是由上層的 ISP 提供解析授權給下游的註冊者,因此,下游的註冊者只要設定妥當後, 全世界的主機就會知道你設定的資料了。詳細的查詢流程我們留到DNS 伺服器章節再來談, 底下僅是介紹一個簡單的查詢示意圖。
舉崑山資訊傳播系的 WWW 伺服器的主機名稱註冊方式來說好了,我們系上得要先跟崑山計中 (相當於我們的 ISP) 註冊取得 www.dic.ksu.edu.tw 這個主機名稱與 IP 的對應, 這個對應資訊是寫在崑山計中的 DNS 伺服器上,與資傳系的 WWW 伺服器無關喔!那你怎麼知道那部 www.dic.ksu.edu.tw 在哪裡?你會先向你的 DNS 要求查詢,該 DNS 會去向全世界的 DNS 系統查詢,該系統會主動的查詢到 KSU dns 伺服器, 然後你的 PC 就會知道 www.dic.ksu.edu.tw 的 IP 在哪,最後你就開始連線囉。
從這個流程當中,你可以發現我們的 www 伺服器與 KUS dns 伺服器沒有絕對關係,兩者是獨立的,我們只要作好 DNS 的『註冊』工作 (向計中申請註冊) 即可,並不需要去維護 DNS 的資訊。所以囉, 這裡你只要知道:(1)主機名稱的設計是有意義的,不可以隨便設定、 (2)主機名稱要生效,得要透過註冊來取得合法授權。這樣就好了,如果想要架設 DNS 與更瞭解 DNS 系統的話, 等到後續的 DNS 伺服器章節再來談。
由上面的說明當中,我們可以很清楚的知道 DNS 系統最大的功能就是在主機名稱對應 IP 的轉譯上面。當然啦,預設的 DNS 轉譯是用在『固定 IP 對應主機名稱』的方法上面的!就像上面的圖 10.1-1 所示一般。在這個情況底下,你在 DNS 架構下申請完主機名稱後, 如果你的 IP 不會更動,那就永遠不用去煩惱主機名稱的相關問題囉,這也是所謂的靜態 DNS 主機名稱功能。
但是...夭壽喔!我們的很多小網站都是以非固定 IP 來上網的,更有甚者,某些 ADSL 撥接模式甚至會定時強制斷線,也就是說, 在一段時間後,我們都得需要重新撥接上網,而每次撥接成功後取得的 IP 可不見得相同啊,如此一來 IP 不是一直在變嗎? 那麼我不就需要一直跟我上層 DNS 主機的管理員申請『變更 IP 』嗎?會不會太麻煩了點?
是很麻煩啊!所以現在為了解決這個問題,很多 ISP 提供了所謂的動態 DNS 服務的功能,他是這樣做的:
所以囉,每次我們取得了新的 IP 之後,我們的主機名稱對應的 IP 也會跟著在 DNS 系統上面更新, 如此一來,只要別人知道你的主機名稱,不論你的 IP 為何,他一定可以連上你的主機 (因為 IP 跟著你的主機而變!) 這對於我們這種使用動態 IP 的人是很有幫助的! (阿!真是造福我們這些窮苦人家的孩子呀!) 整個程序就有點像底下的圖示,WWW 伺服器與 DNS 伺服器之間就有關連性啦。
不過,還是需要注意的是,目前的主機名稱申請很多是『需要錢的』!如果你需要比較穩定的主機名稱對應 IP 的服務,那麼花點錢來註冊還是必須的。不過,如果是實驗性質的網站,那麼也是可以申請免費的動態 DNS 服務喔!
根據前面的說法,如果你只想要有合法的主機名稱的話,那麼依據你的 IP 是否固定而有: (1)靜態 DNS 主機名稱與 (2)動態 DNS 主機名稱兩種註冊方式。底下鳥哥列出自己有註冊經驗的網站提供大家參考:
靜態 DNS 的申請方式其實都差不多,都是需要:
我們以台灣蠻常見的 Hinet 這個 ISP 提供的『個人網域: .idv.tw』註冊方式來說明:
在台灣,各家的領域名稱註冊流程都差不多,不過,金額是有點差異的,當然,服務也就有不同啊!鳥哥的 vbird.org 領域名稱則是在 http://www.godaddy.com 註冊的喔!如果你不想要使用 .idv.tw 來註冊的話,那麼國外的 ISP 提供的 DNS 也可以考慮看看說!
如果你跟鳥哥一樣使用 ADSL 撥接的方式來上網,這表示你的 IP 應該是不固定的!果真如此的話, 那想要用這樣的網路環境來架站就比較麻煩一點!因為上面利用 Hinet 註冊的方式通常是給固定 IP 使用的, 你應該不會想要天天上去更新你的 IP 吧?此時這個 no-ip.com 所提供的免費動態 IP 對應主機名稱的服務就很重要啦!我們先來申請一個主機名稱來玩玩吧! ^_^
# 1. 編譯與安裝: [root@www ~]# wget \ > http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz [root@www ~]# cd /usr/local/src [root@www src]# tar -zxvf /root/noip-duc-linux.tar.gz [root@www src]# cd noip-* # 注意一下,這個目錄裡面有個檔名為 README.FIRST 的檔案,務必察看一下內容! [root@www noip]# make [root@www noip]# make install # 這樣會將主程式安裝在 /usr/local/bin/noip2 而主參數檔放在 # /usr/local/etc/no-ip2.conf 當中!然後你必須要開始回答一些問題: Please select the Internet interface from this list. By typing the number associated with it. 0 eth0 1 eth1 0 <==因為鳥哥的主機對外使用 eth0 介面 Please enter the login/email string for no-ip.com kiki@gmail.com Please enter the password for user 'kiki@gmail.com' *** # 上面這兩個是你剛剛註冊時所填寫的 email 與密碼喔! Only one host [vbirdtsai.no-ip.org] is registered to this account. It will be used. Please enter an update interval:[30] Do you wish to run something at successful update?[N] (y/N) n mv /tmp/no-ip2.conf /usr/local/etc/no-ip2.conf # 重點在此!剛剛你做的設定檔被放到上面這個檔案中了!這樣就將你的 no-ip 製作完畢,而且也可以開始來執行囉!執行的方法也是很簡單啦!
# 2. noip2 的程式使用: [root@www ~]# /usr/local/bin/noip2 # 不要懷疑!這樣輸入後,你在 no-ip 上面註冊的主機名稱, # 就開始可以自動的產生對應了!就這麼簡單! [root@www ~]# noip2 [-CS] 選項與參數: -C :重新設定參數,亦即設定剛剛我們上面輸入粗體字的咚咚! 如果你有兩個以上的 no-ip 主機名稱時,就一定需要使用 noip2 -C 來重新設定參數檔案! -S :將目前的 noip2 的狀況顯示出來! [root@www ~]# noip2 -S 1 noip2 process active. Process 2496, started as /usr/local/src/noip-2.1.9-1/noip2, (version 2.1.9) Using configuration from /usr/local/etc/no-ip2.conf Last IP Address set 140.116.44.180 Account kiki@gmail.com configured for: host vbirdtsai.no-ip.org Updating every 30 minutes via /dev/eth0 with NAT enabled.嘿嘿!這樣就成功了!而且每 30 分鐘 noip2 可以自動的去主網站上面進行更新呢!真是很不錯!那如果想要一開機就啟動 noip2 呢?這樣做即可:
# 3. 設定開機啟動: [root@www ~]# vim /etc/rc.d/rc.local # 加入底下這一行: /usr/local/bin/noip2