## 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" ]; then
for site in $(seq 1 ${num})
do
siteip="192.168.100.${site}"
allip="$allip $siteip"
ping -c 1 -w 1 $siteip > /dev/null 2>&1
if [ "$?" == "0" ]; then
okip="$okip $siteip"
else
errorip="$errorip $siteip"
echo "$siteip is DOWN"
fi
done
[ -f dhcpd.conf ] && rm dhcpd.conf
for site in $allip
do
pcname=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.conf
echo " hardware ethernet ${mac};" >> dhcpd.conf
echo " fixed-address ${site};" >> dhcpd.conf
echo " }" >> dhcpd.conf
done
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 地址了,如果客戶端的主機符合一些電源標準, 并且該客戶端主機所使用之網絡卡暨主板支持網絡喚醒的功能時,我們就可以透過網絡來讓客戶端計算機開機了。 如果你有一部主機想要讓他可以透過網絡來啟動時,你必須要在這部客戶端計算機上進行:
1. 首先你得要在 BIOS 里面設定『網絡喚醒』的功能,否則是沒有用的喔!
2. 再來你必須要讓這部主機接上網絡線,并且電源也是接通的。
3. 將這部主機的 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](http://linux.vbird.org/linux_server/0350dns.php) 的介紹啰。
* DHCP 響應速度與有網管 switch 的設定問題
鳥哥在昆山信息傳播系 ([http://www.dic.ksu.edu.tw](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),速度會較快一些。感謝朋友提供的信息喔!^_^

* * *
- 鳥哥的Linux私房菜:服務器架設篇 第三版
- 第一部份:架站前的進修專區
- 作者序
- 第一章、架設服務器前的準備工作
- 1.1 前言: Linux 有啥功能
- 1.2 基本架設服務器流程
- 1.3 自我評估是否已經具有架站的能力
- 1.4 本章習題
- 第二章、基礎網絡概念
- 2.1 網絡是個什么玩意兒
- 2.2 TCP/IP 的鏈結層相關協議
- 2.3 TCP/IP 的網絡層相關封包與數據
- 2.4 TCP/IP 的傳輸層相關封包與數據
- 2.5 連上 Internet 前的準備事項
- 2.6 重點回顧:
- 2.7 本章習題
- 2.8 參考數據與延伸閱讀
- 第三章、局域網絡架構簡介
- 3.1 局域網絡的聯機
- 3.2 本書使用的內部聯機網絡參數與通訊協議
- 第四章、連上 Internet
- 4.1 Linux 連上 Internet 前的注意事項
- 4.2 連上 Internet 的設定方法
- 4.3 無線網絡--以筆記本電腦為例
- 4.4 常見問題說明
- 4.5 重點回顧
- 4.6 本章習題
- 4.7 參考數據與延伸閱讀
- 第五章、 Linux 常用網絡指令
- 5.1 網絡參數設定使用的指令
- 5.2 網絡偵錯與觀察指令
- 5.3 遠程聯機指令與實時通訊軟件
- 5.4 文字接口網頁瀏覽
- 5.5 封包擷取功能
- 5.6 重點回顧
- 5.7 本章習題
- 5.8 參考數據與延伸閱讀
- 第六章、 Linux 網絡偵錯
- 6.1 無法聯機原因分析
- 6.2 處理流程
- 6.3 本章習題
- 6.4 參考數據與延伸閱讀
- 第二部分:主機的簡易資安防護措施
- 第七章、網絡安全與主機基本防護:限制端口, 網絡升級與 SELinux
- 7.1 網絡封包聯機進入主機的流程
- 7.2 網絡自動升級軟件
- 7.3 限制聯機埠口 (port)
- 7.4 SELinux 管理原則
- 7.5 被攻擊后的主機修復工作
- 7.6 重點回顧
- 7.7 課后練習
- 7.8 參考數據與延伸閱讀
- 第八章、路由觀念與路由器設定
- 8.1 路由
- 8.2 路由器架設
- 8.3 動態路由器架設:quagga (zebra + ripd)
- 8.4 特殊狀況:路由器兩邊界面是同一個 IP 網段: ARP Proxy
- 8.5 重點回顧
- 8.6 本章習題
- 8.7 參考數據與延伸閱讀
- 第九章、防火墻與 NAT 服務器
- 9.1 認識防火墻
- 9.2 TCP Wrappers
- 9.3 Linux 的封包過濾軟件:iptables
- 9.4 單機防火墻的一個實例
- 9.5 NAT 服務器的設定
- 9.6 重點回顧
- 9.7 本章習題
- 9.8 參考數據與延伸閱讀
- 第十章、申請合法的主機名
- 10.1 為何需要主機名
- 10.2 注冊一個合法的主機名
- 10.3 重點回顧
- 10.4 本章習題
- 10.5 參考數據與延伸閱讀
- 第三部分:局域網絡內常見的服務器架設
- 第十一章、遠程聯機服務器SSH / XDMCP / VNC / RDP
- 11.1 遠程聯機服務器
- 11.2 文字接口聯機服務器: SSH 服務器
- 11.3 最原始圖形接口: Xdmcp 服務的啟用
- 11.4 華麗的圖形接口: VNC 服務器
- 11.5 仿真的遠程桌面系統: XRDP 服務器
- 11.6 SSH 服務器的進階應用
- 11.7 重點回顧
- 11.8 本章習題
- 11.9 參考數據與延伸閱讀
- 第十二章、網絡參數控管者: DHCP 服務器
- 12.1 DHCP 運作的原理
- 12.2 DHCP 服務器端的設定
- 12.3 DHCP 客戶端的設定
- 12.4 DHCP 服務器端進階觀察與使用
- 12.5 重點回顧
- 12.6 本章習題
- 12.7 參考數據與延伸閱讀
- 第十三章、文件服務器之一:NFS 服務器
- 13.1 NFS 的由來與其功能
- 13.2 NFS Server 端的設定
- 13.3 NFS 客戶端的設定
- 13.4 案例演練
- 13.5 重點回顧
- 13.6 本章習題
- 13.7 參考數據與延伸閱讀
- 第十四章、賬號控管: NIS 服務器
- 14.1 NIS 的由來與功能
- 14.2 NIS Server 端的設定
- 14.3 NIS Client 端的設定
- 14.4 NIS 搭配 NFS 的設定在叢集計算機上的應用
- 14.5 重點回顧
- 14.6 本章習題
- 14.7 參考數據與延伸閱讀
- 第十五章、時間服務器: NTP 服務器
- 15.1 關于時區與網絡校時的通訊協議
- 15.2 NTP 服務器的安裝與設定
- 15.3 客戶端的時間更新方式
- 15.4 重點回顧
- 15.5 本章習題
- 15.6 參考數據與延伸閱讀
- 第十六章、文件服務器之二: SAMBA 服務器
- 16.1 什么是 SAMBA
- 16.2 SAMBA 服務器的基礎設定
- 16.3 Samba 客戶端軟件功能
- 16.4 以 PDC 服務器提供賬號管理
- 16.5 服務器簡單維護與管理
- 16.6 重點回顧
- 16.7 本章習題
- 16.8 參考數據與延伸閱讀
- 第十七章、區網控制者: Proxy 服務器
- 17.1 什么是代理服務器 (Proxy)
- 17.2 Proxy 服務器的基礎設定
- 17.3 客戶端的使用與測試
- 17.4 服務器的其他應用設定
- 17.5 重點回顧
- 17.6 本章習題
- 17.7 參考數據與延伸閱讀
- 第十八章、網絡驅動器裝置: iSCSI 服務器
- 18.1 網絡文件系統還是網絡驅動器
- 18.2 iSCSI target 的設定
- 18.3 iSCSI initiator 的設定
- 18.4 重點回顧
- 18.5 本章習題
- 18.6 參考數據與延伸閱讀
- 第四部分:常見因特網服務器架設
- 第十九章、主機名控制者: DNS 服務器
- 19.1 什么是 DNS
- 19.2 Client 端的設定
- 19.3 DNS 服務器的軟件、種類與 cache only DNS 服務器設定
- 19.4 DNS 服務器的詳細設定
- 19.5 協同工作的 DNS: Slave DNS 及子域授權設定
- 19.6 DNS 服務器的進階設定
- 19.7 重點回顧
- 19.8 本章習題
- 19.9 參考數據與延伸閱讀
- 第二十章、WWW 伺服器
- 20.1 WWW 的簡史、資源以及伺服器軟體
- 20.2 WWW (LAMP) 伺服器基本設定
- 20.3 Apache 伺服器的進階設定
- 20.4 登錄檔分析以及 PHP 強化模組
- 20.5 建立連線加密網站 (https) 及防砍站腳本
- 20.6 重點回顧
- 20.7 本章習題
- 20.8 參考資料與延伸閱讀
- 第二十一章、文件服務器之三: FTP 服務器
- 21.1 FTP 的數據鏈路原理
- 21.2 vsftpd 服務器基礎設定
- 21.3 客戶端的圖形接口 FTP 聯機軟件
- 21.4 讓 vsftpd 增加 SSL 的加密功能
- 21.5 重點回顧
- 21.6 本章習題
- 21.7 參考數據與延伸閱讀
- 第二十二章、郵件服務器: Postfix
- 22.1 郵件服務器的功能與運作原理
- 22.2 MTA 服務器: Postfix 基礎設定
- 22.3 MRA 服務器: dovecot 設定
- 22.4 MUA 軟件:客戶端的收發信軟件
- 22.5 郵件服務器的進階設定
- 22.6 重點回顧
- 22.7 本章習題
- 22.8 參考數據與延伸閱讀