多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 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) * * *