鸟哥的Linux私房菜(服务器)- 第十二章、网络参数控管者: DHCP 服务器
最近更新日期:2011/07/27
| 想象兩種情況:(1)如果你在工作單位使用的是筆記本電腦,而且常常要帶著你的筆記本電腦到處跑, 那么由第四章、連上 Internet?的說明中會發現,哇! 我的網絡卡參數要常常修改啊!而且,每到一個新的地方,就得問清楚該地的網絡參數才行!真是麻煩。 (2)你的公司常常有訪客或貴客來臨,因為他們也帶來筆電,所以也得常常跑來找你問網絡參數才能設定他的計算機。 哇!這兩種情況都會讓你想哭哭吧?這個時候,動態主機設定協議 (DHCP) 可就大大的派上用場啦!DHCP 這個服務可以自動的分配 IP 與相關的網絡參數給客戶端,來提供客戶端自動以服務器提供的參數來設定他們的網絡。 如此一來,使用者只要將自己的筆電設定好經由 DHCP 協議來取得網絡參數后,一插上網絡線,呵呵!馬上就可以享受 Internet 的服務啦!很方便吧!所以得來瞧一瞧這個好用的協定喔! |
12.1?DHCP 運作的原理
12.1.1?DHCP 服務器的用途
12.1.2?DHCP 協議的運作方式:?IP 參數,?租約期限,?多部 DHCP 服務器
12.1.3?何時需要架設 DHCP 服務器
12.2?DHCP 服務器端的設定
12.2.1?所需軟件與檔案結構
12.2.2?主要配置文件 /etc/dhcp/dhcpd.conf 的語法
12.2.3?一個局域網絡的 DHCP 服務器設定案例
12.2.4?DHCP 服務器的啟動與觀察
12.2.5?內部主機的 IP 對應
12.3?DHCP 客戶端的設定
12.3.1?客戶端是 Linux
12.3.2?客戶端是 Windows
12.4?DHCP 服務器端進階觀察與使用
12.4.1?檢查租約檔案
12.4.2?讓大量 PC 都具有固定 IP 的腳本
12.4.3?使用 ether-wake 實行遠程自動開機 (remote boot)
12.4.4?DHCP 與 DNS 的關系
12.5?重點回顧
12.6?本章習題
12.7?參考數據與延伸閱讀
12.8?針對本文的建議:http://phorum.vbird.org/viewtopic.php?p=117845
12.1 DHCP 運作的原理
在正式的進入?DHCP (Dynamic Host Configuration Protocol)?服務器設定之前,我們先來認識一下 DHCP 這個協議吧!還有,需要了解的是,我們是否『一定』得設定 DHCP 這個服務器呢?這里都需要厘清一下概念喔!?
12.1.1 DHCP 服務器的用途
在開始 DHCP 的說明之前,我們先來復習一下之前在第二章網絡基礎里面提到的幾個網絡參數吧! 要設定好一個網絡的環境,使計算機可以順利的連上 Internet ,那么你的計算機里面一定要有底下幾個網絡的參數才行,分別是:
- IP, netmask, network, broadcast, gateway, DNS IP
其中,那個 IP, netmask, network, broadcast 與 gateway 都可以在 /etc/sysconfig/network-scripts/ifcfg-eth[0-n] 這檔案里面設定,DNS 服務器的地址則是在 /etc/resolv.conf 里頭設定。只要這幾個項目設定正確,那么計算機應該就沒問題的可以上網了! 所以說,你家里面的 3, 4 部計算機,你都可以手動的來設定好你所需要的網絡參數, 然后利用?NAT 服務器的功能,就可以大搖大擺的連上 Internet?了!真是不錯 ^_^,不是嗎?
好了,現在讓我們換一個大一些些的場景吧!假設你是學校宿舍的網絡管理員,所管理的學生計算機大概有 100 部好了,那么你怎么設定好這 100 部的計算機呢?
這三種解決方案所需要的時間都不相同,如果你選擇的是(1),那么鳥哥個人認為,你不是工作狂就是瘋掉了, 因為所要花費的時間與你所得的薪水與付出的心力是完全不成比例的。如果選擇是(2),那么很可能你會被掛上獨裁者、 沒良心的管理員的稱號!如果是選擇(3)呢?恭喜你!這個方案的管理時間花費最短,也是最不麻煩的作法啦!
呵呵!知道鳥哥要說些什么了嗎?是的!這個?DHCP (Dynamic Host Configuration Protocol)?服務器最主要的工作,就是在進行上面的第三個方案,也就是自動的將網絡參數正確的分配給網域中的每部計算機, 讓客戶端的計算機可以在開機的時候就立即自動的設定好網絡的參數值,這些參數值可以包括了 IP、netmask、network、gateway 與 DNS 的地址等等。如此一來,身為管理員的你,只要注意到這一部提供網絡參數的主機有沒有掛掉就好了, 其他同學們的個人計算機,哈!你想都不必想要怎么去幫忙!因為 DHCP 主機已經完全都幫你搞定啦! ^_^! 阿!當管理員最大的幸福就是可以喝喝茶、聊聊天就能控管好一切的網絡問題呢!
12.1.2 DHCP 協議的運作方式
你必需要知道的是,DHCP 通常是用于局域網絡內的一個通訊協議,他主要藉由客戶端傳送廣播封包給整個物理網段內的所有主機, 若局域網絡內有 DHCP 服務器時,才會響應客戶端的 IP 參數要求。所以啰,DHCP 服務器與客戶端是應該要在同一個物理網段內的。 至于整個 DHCP 封包在服務器與客戶端的來來回回情況有點像底下這樣:(注1)
圖 12.1-1、
戶端取得 IP 參數的程序可以簡化如下:
若客戶端網絡設定使用 DHCP 協議取得 IP (在 Windows 內為『自動取得 IP』),則當客戶端開機或者是重新啟動網絡卡時, 客戶端主機會發送出搜尋 DHCP 服務器的 UDP 封包給所有物理網段內的計算機。此封包的目標 IP 會是 255.255.255.255, 所以一般主機接收到這個封包后會直接予以丟棄,但若局域網絡內有 DHCP 服務器時,則會開始進行后續行為。
DHCP 服務器在接收到這個客戶端的要求后,會針對這個客戶端的硬件地址 (MAC)?與本身的設定數據來進行下列工作:
- 到服務器的登錄文件中尋找該用戶之前是否曾經用過某個 IP ,若有且該 IP 目前無人使用,則提供此 IP 給客戶端;
- 若配置文件針對該 MAC 提供額外的固定 IP (static IP) 時,則提供該固定 IP 給客戶端;
- 若不符合上述兩個條件,則隨機取用目前沒有被使用的 IP 參數給客戶端,并記錄下來。
總之,服務器端會針對客戶端的要求提供一組網絡參數租約給客戶端選擇,由于此時客戶端尚未有 IP ,因此服務器端響應的封包信息中, 主要是針對客戶端的 MAC 來給予回應。此時服務器端會保留這個租約然后開始等待客戶端的回應。
由于局域網絡內可能并非僅有一部 DHCP 服務器,但客戶端僅能接受一組網絡參數的租約。 因此客戶端必需要選擇是否要認可該服務器提供的相關網絡參數的租約。當決定好使用此服務器的網絡參數租約后, 客戶端便開始使用這組網絡參數來設定自己的網絡環境。此外,客戶端也會發送一個廣播封包給所有物理網段內的主機, 告知已經接受該服務器的租約。此時若有第二臺以上的 DHCP 服務器,則這些沒有被接受的服務器會收回該 IP 租約。至于被接受的 DHCP 服務器會繼續進行底下的動作。
當服務器端收到客戶端的確認選擇后,服務器會回傳確認的響應封包,并且告知客戶端這個網絡參數租約的期限, 并且開始租約計時喔!那么該次租約何時會到期而被解約 (真可怕的字眼) ?你可以這樣想:
- 客戶端脫機:不論是關閉網絡接口 (ifdown)、重新啟動 (reboot)、關機 (shutdown) 等行為,皆算是脫機狀態,這個時候 Server 端就會將該 IP 回收,并放到 Server 自己的備用區中,等待未來的使用;
- 客戶端租約到期:前面提到 DHCP server 端發放的 IP 有使用的期限,客戶端使用這個 IP 到達期限規定的時間,而且沒有重新提出 DHCP 的申請時,就需要將 IP 繳回去!這個時候就會造成斷線。但用戶也可以再向 DHCP 服務器要求再次分配 IP 啰。
以上就是 DHCP 這個協議在 Server 端與 Client 端的運作狀態,由上面這個運作狀態來看,我們可以曉得,只要 Server 端設定沒有問題,加上 Server 與 Client 在硬件聯機上面確定是 OK 的,那么 Client 就可以直接藉由 Server 來取得上網的網絡參數,當然啦,只要我們這些管理員能夠好好的、正確的管理好我們的 DHCP 服務器, 嘿嘿!那么上網的設定自然就變成一件很簡單的事情啦!不過,關于上述的流程還是有一些需要額外說明的啦:
-
DHCP 服務器給予客戶端的 IP 參數為固定或動態:
在上面的步驟里面,注意到第二步驟了嗎?就是服務器會去比較客戶端的 MAC 硬件地址,并判斷該 MAC 是否需要給予一個固定的 IP 呢!所以啦,我們可以設定 DHCP 服務器給予客戶端的 IP 參數主要有兩種:
- 固定 (Static) IP:
只要那個客戶端計算機的網絡卡不換掉,那么 MAC 肯定就不會改變,由于 DHCP 可以根據 MAC 來給予固定的 IP 參數租約,所以該計算機每次都能以一個固定的 IP 連上 Internet !呵呵! 這種情況比較適合當這部客戶端計算機需要用來做為提供區域內的一些網絡服務的主機之用 (所以 IP 要固定)。那么如何在 Linux 上面知道網絡卡的 MAC 呢?很簡單啦!有很多的方式,最簡單的方式就是使用 ifconfig 及 arp 來進行:
# 1. 觀察自己的 MAC 可用 ifconfig: [root@www ~]# ifconfig | grep HW eth0 Link encap:Ethernet HWaddr 08:00:27:71:85:BD eth1 Link encap:Ethernet HWaddr 08:00:27:2A:30:14 # 因為鳥哥有兩張網卡,所以有兩個硬件地址喔!# 2. 觀察別人的 MAC 可用 ping 配合 arp [root@www ~]# ping -c 3 192.168.1.254 [root@www ~]# arp -n Address HWtype HWaddress Flags Mask Iface 192.168.1.254 ether 00:0c:6e:85:d5:69 C eth0
- 動態 (dynamic) IP:
Client 端每次連上 DHCP 服務器所取得的 IP 都不是固定的!都直接經由 DHCP 所隨機由尚未被使用的 IP 中提供!
除非你的局域網絡內的計算機有可能用來做為主機之用,所以必需要設定成為固定 IP ,否則使用動態 IP 的設定比較簡單,而且使用上面具有較佳的彈性。怎么說呢?假如你是一個 ISP 好了,而你只申請到 150 個 IP 來做為你的客戶聯機之用。那么你是否真的只能邀集到 150 的使用者?呵呵!當然不啰!我可以邀集 200 個使用者以上呢!
為什么?這樣想好了,我今天開了一家餐館,里面只有 20 個座位,那么是否我一餐只能賣給 20 個人呢?當然不是啦!因為客人是人來人往的,有人先吃有人后吃,所以同樣是 20 個座位,但是可以有 40 個人來吃我的簡餐,因為來的時間不一樣嘛!了解了嗎?呵呵!對啦!你這個 ISP 雖然只有 150 個 IP 可以發放,但是因為你的使用者并非 24 小時都掛在在線的,所以你可以將這 150 個 IP 做良好的分配,讓 200 個人來『輪流使用』這 150 個 IP 哩!
| Tips: 其實 IP 只有 Public IP 與 Private IP 兩種,中文翻譯成『公共 IP』與『私有 IP』這兩個, 至于其他所謂的『靜態 IP』、『實體 IP』、『虛擬 IP』、『浮動式 IP』等等,都是藉由一些 IP 取得的方式來分類的, 關于 IP 的種類我們在網絡基礎中談過了, 記得再好好的厘清一下觀念喔! |
事實上現在主流的 ADSL 寬帶撥接上網也有使用到『靜態 IP?』與『固定 IP?』之類的概念喔! 舉例來說好了,hinet/seed net 等主要 ISP 都有提供所謂的:『一個固定 IP 搭配 7~8 個浮動 IP 』的 ADSL 撥接功能,也就是說同樣透過一條電話線撥接到 ISP ,但是其中一個撥接是可以取得固定的 IP 呢! 而其他的則是非固定的 IP ,DHCP 的 static/dynamic 跟這個玩意兒有點類似啦! ^_^
-
關于租約所造成的問題與租約期限:
怪了!如果我們觀察上面 DHCP 運作模式的第四個步驟,你會發現最后 DHCP 服務器還會給予一個租約期限! 干嘛還要這樣的一個期限呢?其實設定期限還是有個優點啦!最大的優點就是可以避免 IP 被某些使用者一直占用著,但該使用者卻是 Idle (發呆) 的狀態!
舉個例子來說,我們剛剛不是說到,我有 150 個 IP ,但是偏偏我有 200 個用戶嗎?我們以 2010 年的世界杯足球賽來說明好了。假設每個使用者都急著上網知道世足賽的消息, 那么某些熱門對戰時段網絡將可能達到使用尖峰!也就是說,這 200 個人同時要來使用這 150 個 IP ,有可能嗎?當然不可能!肯定會有 50 個人無法聯機,因為『很抱歉!目前系統正在忙線中,請你稍后再撥!』
那怎么辦?這個時候租約到期的方式就很有用處啦!那幾個已經聯機進來很久的人, 就會因為租約到期而被迫脫機,這個時候該 IP 就會被釋放出來,哈哈!大家趕快搶呀!先搶到先贏喔! 所以,那 50 個人 (包括被迫脫機的那個朋友) 只好繼續的、努力的、加油的來進行 DHCP 的要求啰! ^_^""
雖然說是優點,但是其實如果站在使用者的角度來看,還是可能會造成公憤的!憑什么大家一起交錢, 我先聯機進來就需要先被踢出去?~呵呵!所以啰,如果要當 ISP ,還是得要先規劃好服務的方針才行呦! 這樣你可以了解租約到期的行為了嗎?! ^_^
既然有租約時間,那么是否代表我用 DHCP 取得的 IP 就得要『手動』的在某個時間點去重新取得新的 IP 呢?不需要的啦!因為目前的 DHCP 客戶端程序大多會主動的依據租約時間去重新申請 IP (renew) 的!也就是說在租約到期前你的 DHCP 客戶端程序就已經又重新申請更新租約時間了。所以除非 DHCP 主機掛點, 否則你所取得的 IP 應該是可以一直使用下去的!
| Tips: 一般來說,假設租約期限是 T 小時,那么客戶端在 0.5T 會主動向 DHCP 服務器發出重新要求網絡參數的封包。 如果這次封包要求沒有成功,那么在 0.875T 后還會再次的發送封包一次。正因如此,所以服務器端會啟動 port 67 監聽用戶要求,而用戶會啟動 port 68 主動向服務器要求哩!鳥哥覺得這是很特殊的一件事呢! |
-
多部 DHCP 服務器在同一物理網段的情況
或許你曾經發現過一件事情,那就是當我的網域里面有兩部以上的 DHCP 服務器時, 到底哪一部服務器會提供我的這部客戶端計算機所發出的 DHCP 要求?呵呵!很抱歉,俺也不曉得! 因為在網絡上面,很多時候都是『先搶先贏』的, DHCP 的回應也是如此!當 Server1 先響應時,你使用的就是 Server1 所提供的網絡參數內容,如果是 Server2 先響應,你就是使用 Server2 的參數來設定你的客戶端 PC !不過,前提之下當然是這些計算機的『物理聯機』都是在一起的啊!
因為這個特色的關系,所以當你在練習 DHCP 服務器的設定之前, 不要在已經正常運作的區網下測試,否則會很慘。舉個鳥哥的例子來說好了,某一次其他系的研究生在測試網絡安全時, 在原有的區網上面放了一部 IP 分享器,結果你猜怎么著?整棟大樓的網絡都不通了!因為那時整棟大樓的網絡是串接在一起的, 而我們學校是使用 DHCP 讓客戶端上網。由于 IP 分享器的設定并不能連上 Internet ,哇!大家都無法上網了啦! 那你曉得了嗎?不要隨便測試啦這個 DHCP 服務器!
12.1.3 何時需要架設 DHCP 服務器
既然 DHCP 的好處是『免客戶端設定』,而且對于行動裝置的上網方面非常的方便!那么是否代表你就得要架設一部 DHCP 呢?那可不一定!接下來要告知大家的是幾個概念性的問題, 你倒不一定『必需』遵守底下的一些概念呢!反正,自己的網域自己『爽』就好啦!
-
使用 DHCP 的幾個時機
在某些情況之下,倒是強烈的建議架設 DHCP 主機的!什么情況呢?例如:
- 具有相當多行動裝置的場合:
例如你的公司內部很多筆記本電腦使用的場合!因為這種筆電本身就是移動性的裝置, 如果每到一個地方都要去問人家『喂!你這邊的網絡參數是什么?』還得要擔心是否會跟人家的 IP 相沖突等等的問題!這個時候,DHCP 可就是你的救星啰!
- 區域內計算機數量相當的多時:
另外一個情況就是你所負責的網域內計算機數量相當龐大時, 大到你沒有辦法一個一個的進行說明來設定他們自己的網絡參數,這個時候為了省麻煩,還是架設 DHCP 來的方便吶!況且,維護一部你熟悉的 DHCP 主機,要比造訪幾十個不懂計算機的人要簡單的多哩!^_^
-
不建議使用 DHCP 主機的時機
雖然 DHCP 有很多好處,但是你有沒有發現一個步驟怪怪的呀!回頭看一下那個步驟一, 客戶端在開機的時候會主動的發送訊息給網域上的所有機器,這個時候,如果網域上就是沒有 DHCP 主機呢?很抱歉,那么你的這部客戶端計算機,『仍然會持續的發送訊息!』 真正的時間與次數不曉得會有多久,不過,肯定會超過 30 秒以上,?甚至可以達到一分鐘以上!哇!那么這段時間你能干嘛?呵呵!除了等、還是等! 所以啰,如果計算機數不多,還是使用手動的方式來設定一下就好了!方便嘛!
- 在你網域內的計算機,有很多機器其實是做為主機的用途,很少用戶需求,那么似乎就沒有必要架設 DHCP ;
- 更極端的情況是,像一般家里,只有 3 ~ 4 部計算機,這個時候,架設 DHCP 只能拿來練練功力,事實上,并沒有多大的效益;
- 當你管理的網域當中,大多網絡卡都屬于老舊的型號,并不支持 DHCP 的協議時;
- 很多用戶的信息知識都很高,那么也沒有需要架設 DHCP 啦。
如前所述,上面的都是概念性的說法,事實上,一件事情的解決之道是有很多的方案的, 沒有所謂的『完全正確』的方案,只有『相對可行、并且符合經濟效益與功能』的方案! 所以啰,架設任何網站之前,請先多評估評估吶!
12.2 DHCP 服務器端的設定
事實上,目前市面上的 IP 分享器已經便宜到爆了!而 IP 分享器本身就含有 DHCP 的功能。 所以如果你只是想要單純的使用 DHCP 在你的局域網絡當中而已,那么建議你直接購買一部 IP 分享器來使用即可, 因為至少它很省電。如果你還有其他考慮的話,才來架設 DHCP 吧!底下我們以一個簡單的范例來架設 DHCP 先。
12.2.1 所需軟件與檔案結構
DHCP 的軟件需求很簡單,就是只要服務器端軟件即可,在 CentOS 6.x 上面,這個軟件的名稱就是 dhcp 啰!如果是默認安裝,那么這個軟件是不會安裝的,請自行使用 yum 去裝好這個軟件吧!安裝完畢之后, 你可以使用『 rpm -ql dhcp 』來看看這個軟件提供了哪些檔案,基本上,比較重要的檔案數據如下:
- /etc/dhcp/dhcpd.conf
這個就是 dhcp 服務器的主要配置文件咯!在某些 Linux 版本上頭這個檔案可能不存在,所以如果你確定有安裝 dhcp 軟件卻找不到這個檔案時,請手動自行建立它即可。
Tips:
其實 dhcp 軟件在釋出的時候都會附上一個范例檔案,你可以使用『 rpm -ql dhcp 』來查詢到 dhcpd.conf.sample 這個范例檔案,然后將該檔案復制成為 /etc/dhcp/dhcpd.conf 后,再手動去修改即可,這樣設定比較容易啦! - /usr/sbin/dhcpd
啟動整個 dhcp daemon 的執行檔啊!其實最詳細的執行方式應該要使用『 man dhcpd 』來查閱一番的呢!^_^
- /var/lib/dhcp/dhcpd.leases
這檔案頗有趣的!我們前面原理部分不是有提到『租約』嗎?DHCP 服務器端與客戶端租約建立的啟始與到期日就是記錄在這個檔案當中的咯!
就跟你說很簡單吧!整個軟件數據也不過才如此而已呢!
12.2.2 主要配置文件 /etc/dhcp/dhcpd.conf 的語法
在 CentOS 5.x 以前,這個檔案都被放置到 /etc/dhcpd.conf 的,新版的才放置于此處。其實 DHCP 的設定很簡單啊,只要將 dhcpd.conf 設定好就可以啟動了。不過編輯這個檔案時你必須要留意底下的規范:
- 『 # 』為批注符號;
- 除了右括號 ")" 后面之外,其他的每一行設定最后都要以『 ; 』做為結尾!重要!
- 設定項目語法主要為:『 <參數代號> <設定內容> 』,例如:
default-lease-time 259200; - 某些設定項目必須以 option 來設定,基本方式為『 option <參數代碼> <設定內容> 』例如:
option domain-name "your.domain.name";
基本上,我們剛剛前面提過說, DHCP 的 IP 分配可分為給予動態 IP 與固定 IP ,其中又需要了解的是,?如果需要設定固定 IP 的話,那么就必須要知道要設定成固定 IP 的那部計算機的硬件地址 (MAC)?才行,請使用 arp 或 ifconfig 來查知你的接口的 MAC 吧!好了,那么需要設定的項目有哪些呢? 其實 dhcpd.conf 里頭的設定主要分為兩大項目,一個是服務器運作的整體設定 (Global) 一個是 IP 設定模式 (動態或固定), 每個項目的設定值大概有底下這幾項:
-
整體設定 (Global)
假設你的 dhcpd 只管理一個區段的區網,那么除了 IP 之外的許多網絡參數就可以放在整體設定的區域中,這包括有租約期限、DNS 主機的 IP 地址、路由器的 IP 地址還有動態 DNS (DDNS) 更新的類型等等。當固定 IP 及動態 IP 內沒有規范到某些設定時,則以整體設定值為準。這些參數的設定名稱為:
- default-lease-time 時間:
用戶的計算機也能夠要求一段特定長度的租約時間,但若使用者沒有特別要求租約時間的話, 那么就以此為預設的租約時間。后面的時間參數默認單位為秒;
- max-lease-time 時間:
與上面的預設租約時間類似,不過,這個設定值是在規范使用者所能要求的最大租約時間。也就是說, 使用者要求的租約時間若超過此設定值,則以此值為準;
- option domain-name "領域名":
如果你在 /etc/resolv.conf 里面設定了一個『 search google.com 』的話,這表示當你要搜尋主機名時, DNS 系統會主動幫你加上這個領域名的意思。
- option domain-name-servers IP1, IP2:
這個設定參數可以修改客戶端的 /etc/resolv.conf 檔案!就是 nameserver 后面接的那個 DNS IP 啰!特別注意設定參數最末尾為『servers』 (有 s 喔);
- ddns-update-style 類型:
因為 DHCP 客戶端所取得的 IP 通常是一直變動的,所以某部主機的主機名與 IP 的對應就很難處理。此時 DHCP 可以透過 ddns (請參考第十章與第十九章 DNS?的說明) 來更新主機名與 IP 的對應。不過我們這里不談這么復雜的東西,所以你可以將他設定為 none 喔。
- ignore client-updates:
與上一個設定值較相關,客戶端可以透過 dhcpd 服務器來更新 DNS 相關的信息。不過,這里我們也先不談這個, 因此就將它設定為 ignore (忽略) 了。
- option routers 路由器的地址:
設定路由器的 IP 所在,記得那個『 routers 』要加 s 才對!
-
IP 設定模式 (動態或固定)
由于 dhcpd 主要是針對局域網絡來給予 IP 參數的,因此在設定 IP 之前,我們得要指定一個區網才行。 指定區網的方式使用如下的參數:
subnet NETWORK_IP netmask NETMASK_IP { ... }我們知道區網要給予 network / netmask IP 這兩個參數才行,例如之前談過的: 192.168.100.0 / 255.255.255.0 這樣的設定值。 上頭設定值當中, subnet 與 netmask 是關鍵詞,而大寫部分就填上你的區網參數啰。那在括號內還有什么參數需要設定的? 那就是到底 IP 是固定的還是動態的設定啊:
- range IP1 IP2:
在這個區網當中,給予一個連續的 IP 群用來發放成動態 IP 的設定,那個 IP1 IP2 指的是開放的 IP 范圍。 舉例來說,你想要開放 192.168.100.101 到 192.168.100.200 這 100 個 IP 用來作為動態分配,那就是:?range 192.168.100.101 192.168.100.200;
- host 主機名 { ... };?
這個 host 就是指定固定 IP 對應到固定 MAC 的設定值,那個主機名可以自己想想再給予即可。 不過在大括號內就得要指定 MAC 與固定的 IP 啰!那這兩個設定值怎么設定呢?看看底下啰:
- hardware ethernet 硬件地址:
利用網絡卡上面的固定硬件地址來設定,亦即該設定僅針對這個硬件地址有效的意思;
- fixed-address IP地址:
給予一個固定的 IP 地址的意思。
- hardware ethernet 硬件地址:
12.2.3 一個局域網絡的 DHCP 服務器設定案例
假設我的環境當中,Linux 主機除了 NAT 服務器之外還得要負責其他服務器,例如郵件服務器的支持。 而在后端局域網絡中則想要提供 DHCP 的服務。整個硬件配置的情況就如同第三章的圖 3.2-1所示的內部獨立區網 (centos.vbird 網域)。 需要注意的是,在圖中 Linux Router 有兩塊接口,其中 eth1 對內而 eth0 對外,至于其他的網絡參數設計為:
- Linux 主機對內的 eth1 的 IP 設定為 192.168.100.254 這個;
- 內部網段設定為 192.168.100.0/24 這一段,且內部計算機的 router 為 192.168.100.254 ,此外 DNS 主機的 IP 為中華電信的 168.95.1.1 及 Seednet 的 139.175.10.20 這兩個;
- 我想要讓每個使用者預設租約為 3 天,最長為 6 天;
- 只想要分配的 IP 只有 192.168.100.101 到 192.168.100.200 這幾個,其他的 IP 則保留下來;
- 我還有一部主機,他的 MAC 是『 08:00:27:11:EB:C2 』,我要給他的主機名為 win7 ,且 IP 為 192.168.100.30 這個 (請對照圖 3.2-1 喔!)。
那我的配置文件就會像底下這個樣子了:
| [root@www ~]# vim /etc/dhcp/dhcpd.conf # 1. 整體的環境設定 ddns-update-style none; <==不要更新 DDNS 的設定 ignore client-updates; <==忽略客戶端的 DNS 更新功能 default-lease-time 259200; <==預設租約為 3 天 max-lease-time 518400; <==最大租約為 6 天 option routers 192.168.100.254; <==這就是預設路由 option domain-name "centos.vbird"; <==給予一個領域名 option domain-name-servers 168.95.1.1, 139.175.10.20; # 上面是 DNS 的 IP 設定,這個設定值會修改客戶端的 /etc/resolv.conf 檔案內容# 2. 關于動態分配的 IP subnet 192.168.100.0 netmask 255.255.255.0 {range 192.168.100.101 192.168.100.200; <==分配的 IP 范圍# 3. 關于固定的 IP 啊!host win7 {hardware ethernet 08:00:27:11:EB:C2; <==客戶端網卡 MACfixed-address 192.168.100.30; <==給予固定的 IP} } # 相關的設定參數意義,請查詢前一小節的介紹,或者 man dhcpd.conf |
夠簡單吧!這樣就設定好了!你可以復制上頭的數據然后修改一下,讓里頭的 IP 參數符合你的環境, 就能夠設定好你的 DHCP 服務器了。接下來理論上你就能夠啟動 dhcp 了。不過,在某些早期的 Linux distribution 上面, 當你的 Linux 主機具有多個接口時,你的一個設定可能會讓多個接口同時來監聽,那就可能會發生錯誤了。
舉例來說,我們現在的設定是 192.168.100.0/24 這個在 eth1 上頭的網域,假設你還有一個界面 eth2 在 192.168.2.0/24 好了, 那萬一你的 DHCP 同時監聽兩塊接口的話,想一想,如果 192.168.2.0/24 網域的客戶端發送出 dhcp 封包的要求時, 他會取得什么 IP ?當然是 192.168.100.X !所以啰,我們就得要針對 dhcpd 這個執行文件設定他監聽的接口, 而不是針對所有的接口都監聽啊!你說是吧!^_^!那如何處理呢?在 CentOS (Red Hat 系統) 可以這樣做:
| [root@www ~]# vim /etc/sysconfig/dhcpd DHCPDARGS="eth0" |
不過這個動作在 CentOS 5.x 以后的版本上面已經不需要了,因為新版本的 dhcp 會主動的分析服務器的網段與實際的 dhcpd.conf 設定, 如果兩者無法吻合,就會有錯誤提示,人性化多了。 ^_^!接下來我們可以開始啟動 dhcp 試看看啰!
12.2.4 DHCP 服務器的啟動與觀察
開始來啟動 dhcp 吧!在啟動前你得要注意幾件事情喔:
- 你的 Linux 服務器網絡環境已經設定好,例如 eth1 已經是 192.168.100.254;
- 你的防火墻規則已經處理好,例如:(1)放行內部區網的聯機、(2)iptables.rule 的 NAT 服務已經設定妥當;
另外你要注意的是:dhcpd 使用的埠口是 port 67 ,并且啟動的結果會記錄在 /var/log/messages 檔案內,你最好能去觀察一下 /var/log/messages 所顯示的 dhcpd 相關信息才好。
| # 1. 啟動后觀察一下埠口的變化: [root@www ~]# /etc/init.d/dhcpd start [root@www ~]# chkconfig dhcpd on [root@www ~]# netstat -tlunp | grep dhcp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address PID/Program name udp 0 0 0.0.0.0:67 0.0.0.0:* 1581/dhcpd# 2. 固定去看看登錄文件的輸出信息 [root@www ~]# tail -n 30 /var/log/messages Jul 27 01:51:24 www dhcpd: Internet Systems Consortium DHCP Server 4.1.1-P1 Jul 27 01:51:24 www dhcpd: Copyright 2004-2010 Internet Systems Consortium. Jul 27 01:51:24 www dhcpd: All rights reserved. Jul 27 01:51:24 www dhcpd: For info, please visit https://www.isc.org/software/dhcp/ Jul 27 01:51:24 www dhcpd: WARNING: Host declarations are global. They are not limited to the scope you declared them in. Jul 27 01:51:24 www dhcpd: Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file Jul 27 01:51:24 www dhcpd: Wrote 0 deleted host decls to leases file. Jul 27 01:51:24 www dhcpd: Wrote 0 new dynamic host decls to leases file. Jul 27 01:51:24 www dhcpd: Wrote 0 leases to leases file. Jul 27 01:51:24 www dhcpd: Listening on LPF/eth1/08:00:27:2a:30:14/192.168.100.0/24 Jul 27 01:51:24 www dhcpd: Sending on LPF/eth1/08:00:27:2a:30:14/192.168.100.0/24 ....(以下省略).... |
看到這些資料就是成功的象征啦!尤其是上述有特殊字體的部分。恭喜你啊!真是『福氣啦!』不過, 萬一你看到的登錄檔是類似底下的模樣呢?
| Jul 27 01:56:30 www dhcpd: /etc/dhcp/dhcpd.conf line 7: unknown option dhcp.domain-name-server Jul 27 01:56:30 www dhcpd: option domain-name-server#011168. Jul 27 01:56:30 www dhcpd: ^ Jul 27 01:56:30 www dhcpd: /etc/dhcp/dhcpd.conf line 9: Expecting netmask Jul 27 01:56:30 www dhcpd: subnet 192.168.100.0 network Jul 27 01:56:30 www dhcpd: ^ Jul 27 01:56:30 www dhcpd: Configuration file errors encountered -- exiting |
上述的數據表示在第 7, 9 行恐怕有點設定錯誤,設定錯誤的地方在行號底下還有指數符號 (^) 特別標注出來! 由上面的情況來看,第 7 行的地方應該是 domain-name-servers 忘了加 s 了,而第 9 行則是參數下錯, 應該是 netmask 而非 network !這樣了解乎?
12.2.5 內部主機的 IP 對應
如果你有仔細的瞧過第二章的網絡基礎的話,那么應該還會記得那個?/etc/hosts (第四章 4.4.1)?會影響內部計算機在聯機階段的等待時間吧?那么我現在使用 DHCP 之后,糟糕!我怎么知道哪一部 PC 連上我的主機,那要怎么填寫 /etc/hosts 的內容呢?這真是太簡單了!就將所有可能的計算機 IP 都加進去該檔案呀! ^_^ !以鳥哥為例,在這個例子中,鳥哥的分配的 IP 至少有 192.168.100.30, 192.168.100.101 ~ 192.168.100.200 ,所以 /etc/hosts 可以寫成:
| [root@www ~]# vim /etc/hosts 127.0.0.1 localhost.localdomain localhost 192.168.100.254 vbird-server 192.168.100.30 win7 192.168.100.101 dynamic-101 192.168.100.102 dynamic-102 ....(中間省略).... 192.168.100.200 dynamic-200 |
這樣一來,所有可能連進來的 IP 都已經有紀錄了,哈哈!當然沒有什么大問題啰! ^_^!不過,?更好的解決方案則是架設內部的 DNS 服務器,這樣一來,內部的其他 Linux 服務器也不必更改 /etc/hosts 就能夠取得每部主機的 IP 與主機名對應,那樣就更加妥當啦!
12.3 DHCP 客戶端的設定
DHCP 的客戶端可以是 Windows 也可以是 Linux 呢!鳥哥的網域內使用三部計算機,就如圖 3.2-1 所示的那樣。 Linux 與 Windows XP 的設定方式已經分別在第四章與第三章談過了,底下就稍微介紹過而已。至于圖示的部分, 我們主要是以 Windows 7 來做介紹啰。
12.3.1 客戶端是 Linux
Linux 的網絡參數設定還記得吧?不記得的話就得要打屁股了!在第四章 (4.2.2)?我們談過自動取得 IP 的方式,設定真的很簡單:
| [root@clientlinux ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 NM_CONTROLLED=no ONBOOT=yes BOOTPROTO=dhcp <==就是他!指定這一個就對了![root@clientlinux ~]# /etc/init.d/network restart |
同時記得要拿掉預設路由的設定喔!改完之后,就將我們的整個網絡重新啟動即可 (不要使用 ifdown 與 ifup ,因為還有預設路由要設定!)。請注意,如果你是在遠程進行這個動作, 你的聯機『肯定會掛掉!』,因為網絡卡被你關了嘛!呵呵!所以請在本機前面才進行喔!如果執行的結果有找到正確的 DHCP 主機,那么幾個檔案可能會被更動喔:
| # 1. DNS 的 IP 會被更動呢!查閱一下 resolv.conf 先: [root@clientlinux ~]# cat /etc/resolv.conf search centos.vbird <==還記得設定過 domain-name 否? domain centos.vbird <==還記得設定過 domain-name 否? nameserver 168.95.1.1 <==這就是我們在 dhcpd.conf內的設定值 nameserver 139.175.10.20# 2. 觀察一下路由啦! [root@clientlinux ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 192.168.100.254 0.0.0.0 UG 0 0 0 eth0 # 嗯!沒錯!路由也被正確的捉到了!OK的啦!# 3. 察看一下客戶端的指令吧! [root@clientlinux ~]# netstat -tlunp | grep dhc Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name udp 0 0 0.0.0.0:68 0.0.0.0:* 1694/dhclient # 你沒看錯!確實是有個小程序在監測 DHCP 的聯機狀態吶!# 4. 看一看客戶端租約所記載的信息吧! [root@clientlinux ~]# cat /var/lib/dhclient/dhclient* lease {interface "eth0";fixed-address 192.168.100.101; <==取得的 IP 呦!option subnet-mask 255.255.255.0;option routers 192.168.100.254;option dhcp-lease-time 259200;option dhcp-message-type 5;option domain-name-servers 168.95.1.1,139.175.10.20;option dhcp-server-identifier 192.168.100.254;option domain-name "centos.vbird";renew 4 2011/07/28 05:01:24; <==下一次預計更新 (renew) 的時間點rebind 5 2011/07/29 09:06:36;expire 5 2011/07/29 18:06:36; } # 這個檔案會記錄該適配卡所曾經要求過的 DHCP 信息喔!重要! # 有沒有看出來,他幾乎就與你設定的 /etc/dhcp/dhcpd.conf 類似? ^_^ |
有沒有發現其實你的客戶端取得的數據都被記載在 /var/lib/dhclient/dhclient*-eth0.leases 里頭啊? 如果你有多張網卡,那么每張網卡自己的 DHCP 要求就會被寫入到不同檔名的檔案當中去! 觀察該檔案就知道你的數據是如何啰!這可也是挺重要的呦!
| Tips: 你或許會問說, dhcp 不是都會隨機取得 IP 嗎?那為什么這部客戶端 clientlinux.centos.vbird 每次都能夠取得相同的固定 IP 呢? 很簡單,因為上頭的 dhclient-eth0.leases 里面的 fixed-address 指定了想要固定 IP 的選項。如果 DHCP 服務器的該 IP 沒有被用走,也在規定的 range 設定值內,那就會發放給你這個 IP 了。如果你想要不同的 IP 呢? 那就將你想要的 IP 取代上述的設定值啦! |
| 例題: 在文獻中談到,如果區網內有多個 DHCP 服務器 (假設有 DHCP1, DHCP2),那么每次客戶端對整個物理網絡區段廣播時,DHCP 服務器將是先搶先贏的局面。 但是若第一次取得 DHCP1 服務器的 IP 后,未來重新啟動網絡,都只會取得 DHCP1 的網絡參數,這是為什么? 答: 看到上述的 dhclient-eth0.leases 客戶端檔案了嗎?因為你的主機想要取得上次取得的網絡參數,因此將會對 DHCP1 要求網絡參數。 如果你想要使用先搶先贏的方式來取得 IP ,或者想要使用 DHCP2 來取得 IP ,那么得要修訂或者刪除 dhclient-eth0.leases 才行。 |
12.3.2 客戶端是 Windows
在 Windows 底下設定 DHCP 協議以取得 IP 實在是很簡單喔!例如,你可以到第三章的?3.2.2?小節去瞧瞧如何設定的擷取圖示。 我們這里以 Windows 7 作為介紹好了。你可以依據『開始』-->『控制臺』-->『檢視網絡狀態及工作』 -->『變更適配卡設定』,在出現的圖示中,選擇屬于你的相關網卡,然后連擊兩下之后,就開始底下的設定程序:
圖 12.3-1、局域網絡的 Windows 7 系統設定 DHCP 的方式
圖 12.3-2、局域網絡的 Windows 7 系統設定 DHCP 的方式
在上面的畫面當中,先點選 TCP/IP4 第四版 IP 協議,然后按下『內容』就可以開始來修改網絡參數啰!
圖 12.3-3、局域網絡的 Windows 7 系統設定 DHCP 的方式
| C:\Users\win7> ipconfig /all ....(前面省略).... 以太網絡卡 區域聯機:聯機特定 DNS 后綴 . . . . . . . . : centos.vbird描述 . . . . . . . . . . . . . . .: Intel(R) PRO/1000 MT Desktop Adapter實體地址 . . . . . . . . . . . . .: 08-00-27-11-EB-C2DHCP 已啟用 . . . . . . . . . . . : 是自動設定啟用 . . . . . . . . . . .: 是鏈接-本機 IPv6 地址 . . . . . . . : fe80::ec92:b907:bc2a:a5fa%11(偏好選項)IPv4 地址 . . . . . . . . . . . . : 192.168.100.30(偏好選項) <==這是取得的IP子網掩碼 . . . . . . . . . . . .: 255.255.255.0租用取得 . . . . . . . . . . . . .: 2011年7月27日 上午 11:59:18 <==這是租約租用到期 . . . . . . . . . . . . .: 2011年7月30日 上午 11:59:18預設網關 . . . . . . . . . . . . .: 192.168.100.254DHCP 服務器 . . . . . . . . . . . : 192.168.100.254 <==這一部 DHCP 服務器DNS 服務器 . . . . . . . . . . . .: 168.95.1.1 <==取得的 DNS139.175.10.20NetBIOS over Tcpip . . . . . . . .: 啟用C:\Users\win7> ipconfig /renew # 這樣可以立即要求更新 IP 信息喔! |
12.4 DHCP 服務器端進階觀察與使用
如果你要管理的是幾十部甚至是幾百部的計算機時,你總是希望能夠根據座位來進行 IP 的給予吧?因此,固定 IP 配合 MAC 就顯的很重要啦!那么如何取得每部主機的 IP 呢?還有,你怎么查詢到相關的租約呢?以及,如果你還想要進行遠程開機, 幫使用者在固定的時間就開機呢?那就來看看底下的其他用途吧!
12.4.1 檢查租約檔案
客戶端會主動的紀錄租約信息,那服務器端更不能忘記記錄啰!服務器端是記錄在這個地方:
| [root@www ~]# cat /var/lib/dhcpd/dhcpd.leases lease 192.168.100.101 {starts 2 2011/07/26 18:06:36; <==租約開始日期ends 5 2011/07/29 18:06:36; <==租約結束日期tstp 5 2011/07/29 18:06:36;cltt 2 2011/07/26 18:06:36;binding state active;next binding state free;hardware ethernet 08:00:27:34:4e:44; <==客戶端網卡 } |
從這個檔案里面我們就知道有多少客戶端已經向我們申請了 DHCP 的 IP 使用了呢!很容易了解吧!
12.4.2 讓大量 PC 都具有固定 IP 的腳本
想一想,如果你有一百臺計算機要管理,每部計算機都希望是固定 IP 的情況下,那你要如何處置? 很簡單,透過 DHCP 的 fixed-address 就行啦!但是,這一百臺計算機的 MAC 如何取得?你要怎么改啦? 難道每部計算機都去抄寫,然后再回來設定 dhcpd.conf 嗎?這也太可怕了吧?既然每部計算機最終都得要開機, 那么你在開機之后,利用手動的方法來設定好每部主機的 IP 后,在根據底下的腳本來處理好你的 dhcpd.conf 啰!
| [root@www ~]# vim setup_dhcpd.conf #!/bin/bash read -p "Do you finished the IP's settings in every client (y/n)? " yn read -p "How many PC's in this class (ex> 60)? " num if [ "$yn" = "y" ]; thenfor site in $(seq 1 ${num})dositeip="192.168.100.${site}"allip="$allip $siteip"ping -c 1 -w 1 $siteip > /dev/null 2>&1if [ "$?" == "0" ]; thenokip="$okip $siteip"elseerrorip="$errorip $siteip"echo "$siteip is DOWN"fidone[ -f dhcpd.conf ] && rm dhcpd.conffor site in $allipdopcname=pc$(echo $site | cut -d '.' -f 4)mac=$(arp -n | grep "$site " | awk '{print $3}')echo " host $pcname {"echo " hardware ethernet ${mac};"echo " fixed-address ${site};"echo " }"echo " host $pcname {" >> dhcpd.confecho " hardware ethernet ${mac};" >> dhcpd.confecho " fixed-address ${site};" >> dhcpd.confecho " }" >> dhcpd.confdone fi echo "You can use dhcpd.conf (this directory) to modified your /etc/dhcp/dhcpd.conf" echo "Finished." |
這個腳本的想法很簡單,如果你管理的計算機都是 Linux 的話,那么先開機后使用『 ifconfig eth0 YOURIP 』 來設定對應的 IP ,在鳥哥這個例子中,我使用的是 192.168.100.X/24 這個區段,此時 IP 就設定好了! 然后在透過上面的腳本跑一次,每部計算機的 MAC 與 IP 對應就順利的寫入 dhcpd.conf 啰! 然后你在將它貼上 /etc/dhcp/dhcpd.conf 即可!如果你管理的計算機是 Windows 的話, 那使用文字接口下達『 netsh interface ip set address xxx 』之類的指令來修訂啰!
12.4.3 使用 ether-wake 實行遠程自動開機 (remote boot)
既然已經知道客戶端的 MAC 地址了,如果客戶端的主機符合一些電源標準, 并且該客戶端主機所使用之網絡卡暨主板支持網絡喚醒的功能時,我們就可以透過網絡來讓客戶端計算機開機了。 如果你有一部主機想要讓他可以透過網絡來啟動時,你必須要在這部客戶端計算機上進行:
接下來請到永遠開著的主機 DHCP 服務器上面 (其實只要任何一部 Linux 主機均可!) ,安裝 net-tools 這個軟件后, 就會取得 ether-wake 這個指令,這就是網絡喚醒的主要功能!那該如何使用這個指令呢?假設客戶端主機的 MAC 為 11:22:33:44:55:66 并且與我的服務器 eth1 相連接好了,那么你想要讓這部主機被喚醒,就這樣做吧:
| [root@www ~]# ether-wake -i eth1 11:22:33:44:55:66# 更多功能可以這樣查閱喔: [root@www ~]# ether-wake -u |
然后你就會發現,哈哈!那部客戶端主機被啟動了!以后如果你要連到局域網絡內的話, 只要能夠連上你的防火墻主機,然后透過這個 ether-wake 軟件,就能夠讓你局域網絡內的主機啟動了, 控管上面就更加方便的啦!你說是吧! ^_^
| Tips: 鳥哥辦公室有一部桌機是經常用來測試的機器,但是因為比較耗電,因此當鳥哥離開辦公室時,就會將計算機關閉。 不過鳥哥辦公室有一部 NAT server 在負責防火墻的第一道關卡,當鳥哥在家里有需要查詢到學校桌機的數據時, 桌機關了怎辦?沒關系,透過 NAT server 登入后,使用 ether-wake 喚醒桌機,那就能夠開機進去工作啰! 這樣也比較不怕耗電問題~ |
12.4.4 DHCP 與 DNS 的關系
我們知道局域網絡內如果很多 Linux 服務器時,你得要將 private IP 加入到每部主機的 /etc/hosts 里面, 這樣在聯機階段的等待時間才不會有逾時或者是等待太久的問題。問題是,如果計算機數量太大,又有很多測試機時, 這時你得要常常去更新維護那些重灌過的機器的 /etc/hosts ,煩不煩吶?
此時在區網內架設一部 DNS 服務器負責主機名解析就很重要!因此既然已經有 DNS 服務器幫忙進行主機名的解析,那你根本不需要更動 /etc/hosts !未來的新機器或者是新灌的計算機也不需要改寫任何網絡參數,這樣維護會輕松很多。 因此,一個好的區網內,理論上,我們應該在 DHCP 服務器主機上面在安裝一個 DNS 服務器,提供內部計算機的名稱解析為宜。 相關的設定就請參考第十九章 DNS?的介紹啰。
-
DHCP 響應速度與有網管 switch 的設定問題
鳥哥在昆山信息傳播系 (http://www.dic.ksu.edu.tw) 負責五間計算機教室的維護,每間計算機教室內部的 giga switch 是低階的有網管功能的機器!有網管功能機器的設定信息比較多, switch 也能夠進行封包異常的偵測與抵擋。問題是,如果抵擋的行為『太超過』時,也可能造成許多問題。
鳥哥管理的計算機教室在重新啟動網絡取得 DHCP 時,都會等待幾乎達 30 秒,雖然最終是成功的,但是等這么久呢! 取得 IP 之后,網絡速度卻又是正常的,一切沒問題~就是教導網絡參數設定時,學生都會哇哇叫!以為失敗了, 有的等了將近一分鐘才告知取得 IP 且為正常...
后來問了有經驗的計中的羅組長,才發現可能是 switch 的問題。大多在設定位于『L2 Features』-->『Spanning Tree』-->『STP Port Settings』的子項目之類的字眼,將 STP 之類的埠口都設定為關閉 (Disabled) 看看, 鳥哥做完這個設定后,DHCP 的取得就順暢了!連帶的網絡開機功能也就沒有問題~這部份也提供給大家參考呦!
| Tips: 網友鞏立偉兄來信談到,STP 主要的目的是在抵擋廣播風暴,若偵測到廣播風暴時,該 switch 的埠口會被停用。 只是啟動這個功能后,會較緩慢的進入運作狀態,所以會產生較慢的情況發生。較好的 switch 會支援 RSTP (Rapid spanning tree protocol),速度會較快一些。感謝朋友提供的信息喔!^_^ |
12.5 重點回顧
- DHCP (Dynamic Host Configuration Protocol) 可以提供網絡參數給客戶端計算機,使其自動設定網絡的功能;
- 透過 DHCP 的統一管理,在同一網域當中就比較不容易出現 IP 沖突的情況發生;
- DHCP 可以透過 MAC 的比對來提供 Static IP (或稱為固定 IP),否則通常提供客戶端 dynamic IP (或稱為動態 IP);
- DHCP 除了 Static IP 與 Dynamic IP 之外,還可以提供租約行為之設定;
- 在租約期限到期之前,客戶端 dhcp 軟件即會主動的要求更新 (約 0.5, 0.85 倍租約時間左右);
- DHCP 可以提供的 MAC 比對、Dynamic IP 的 IP 范圍以及租約期限等等,都在 dhcpd.conf 這個檔案當中設定的;
- 一般的情況之下,使用者需要自行設定 dhcpd.leases 這個檔案,不過,真正的租約檔案記錄是在 /var/lib/dhclient/dhclient-eth0.leases 里面;
- 如果只是要單純的 DHCP 服務,建議可以購買類似 IP 分享器的設備即可提供穩定且低耗電的網絡服務。
- DHCP 服務與 DNS 服務的相關性很高;
- 若 DHCP 客戶端取得 IP 的速度太慢,或許可以找一下有網管 switch 的 STP 設定值。
12.6 本章習題
- DHCP 主要的兩種 IP 分配模式為何? 主要的兩種分配模式分別為 Dynamic IP 與 Static IP , Static IP 透過 MAC 的比對,至于 Dynamic IP 則是直接取用網域中尚未被使用到的 IP 來進行 Client 端的分配。
- 在有 DHCP 主機存在的網域當中,且 client 端亦使用 DHCP 來規劃客戶端的網絡參數,那么請問,在該網域當中,Client 端透過 DHCP 取得 IP 的流程為何?
- 首先, Client 端會發出一個 DHCP 要求封包;
- server 端接收到要求后,會主動的響應信息給 Client ;
- Client 若接受該 DHCP 主機所提供的參數,則主機會記錄下租約信息,至于 client 端則開始以主機提供的參數設定其網絡
- DHCP 是如何發送 Static IP 的?可以使用何種指令取得該信息? DHCP 主要利用網絡卡的硬件地址,亦即俗稱的『網絡卡卡號』,也就是 MAC 來進行 Client 端的比對的,至于主動取得 Client 端的方式,可以透過 ping 以及 arp 來獲得。
- 在 DHCP 服務器的租約檔,亦即 /var/lib/dhcpd/dhcpd.leases 當中,記錄了什么信息? 這個檔案主要記錄了 Client 端連上 Server 端的紀錄數據,他會被 DHCP 主機用來判定與 Client 端的租約行為喔!
- DHCP 的登錄檔放置于何處? 就是最重要的 /var/log/messages 這個檔案啦(預設狀況下!)
12.7 參考數據與延伸閱讀
- 注1:在維基百科的 DHCP 相關說明:
http://zh.wikipedia.org/zh-tw/DHCP
http://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol - 其他可供查閱之數據:
DHCP mini HOWTO:英文版:http://tldp.org/HOWTO/DHCP/index.html
DHCP mini HOWTO:中文版:http://www.linux.org.tw/CLDP/MiniHOWTO/network/DHCP/
Internet Software consortium:http://www.isc.org/software/dhcp
Study Area:http://www.study-area.org/linux/servers/linux_dhcp.htm
Study Area 網絡開機(我本善良兄撰寫):http://www.study-area.org/tips/wol.htm
總結
以上是生活随笔為你收集整理的鸟哥的Linux私房菜(服务器)- 第十二章、网络参数控管者: DHCP 服务器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鸟哥的Linux私房菜(服务器)- 第十
- 下一篇: 鸟哥的Linux私房菜(服务器)- 第十