# 12.4 DHCP 服务器端进阶观察与使用
## 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 唤醒桌机,那就能够开机进去工作啰! 这样也比较不怕耗电问题~
![](https://box.kancloud.cn/2016-05-13_5735736501917.gif)
- - - - - -
### 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),速度会较快一些。感谢朋友提供的信息喔!^\_^
![](https://box.kancloud.cn/2016-05-13_5735736501917.gif)
- - - - - -
- 鸟哥的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 参考数据与延伸阅读