最近更新日期:2003/03/15
原理: :什么是 DHCP :DHCP 的运作方式 :什么时候需要 DHCP 套件安装: 设定 DHCP Server : :DHCP 套件结构 :主机的规划技巧 :设定流程 设定 DHCP Client : 除错与检视租约档案: 重点回顾 参考资源: 本章习题练习 原理:
什么是 DHCP: 在开始 DHCP 的说明之前,我们先来复习一下之前在『网络基础』里面提到的几个网络参数吧!要设定好一个网络的环境,使计算机可以顺利的连上 Internet ,那么您的计算机里面一定要有底下几个网络的参数才行,分别是: 其中,那个 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 ) 主机最主要的工作,就是在进行前面提到的第三个方案,也就是自动的将网络参数正确的分配给网域中的每部计算机,让 Client 端的计算机可以在开机的时候就立即自动的设定好网络的参数值,这些参数值可以包括了 IP、netmask、network、gateway 与 DNS 的地址等等。如此一来,呵呵!身为管理员的您,只要注意到这一部提供网络参数的主机有没有挂掉就好了,其他同学们的个人计算机,哈!您想都不必想要怎么去帮忙!因为 DHCP 主机已经完全都帮您搞定啦! ^_^! 阿!当管理员最大的幸福就是可以喝喝茶、聊聊天就能控管好一切的网络问题呢! DHCP 的运作方式: 运作模式: 那么 DHCP 是怎么运作的呢?现在假设我们的机器在同一个网域当中,也就是说, DHCP Server 与他的 Clients 都在同一个网段之内,可以透过软件广播的方式来达到相互沟通的状态。那么 Client 藉由 DHCP Server 得到 IP 的程序为: 以上就是 DHCP 这个协议在 Server 端与 Client 端的运作状态,由上面这个运作状态来看,我们可以晓得,喝!只要 Server 端设定没有问题,加上 Server 与 Client 在硬件联机上面确定是 OK 的,那么 Client 就可以直接藉由 Server 来取得上网的网络参数,当然啦,只要我们这些管理员能够好好的、正确的管理好我们的 DHCP ,嘿嘿!那么自然上网的设定就变成一件很简单的事情啦! IP 取得的方法: 在上面的步骤里面,注意到第二步骤了吗?就是 DHCP 会去比较 MAC 这个硬件地址,并判断该 MAC 是否需要给予一个固定的 IP 呢!呵呵!所以啦,我们在 Client 端由 DHCP 主机取得的 IP 主要有两种方式:
除非您的局域网络内的计算机有可能用来做为主机之用,所以必需要设定成为固定 IP ,否则使用动态 IP 的设定比较简单,而且使用上面具有较佳的弹性。怎么说呢?假如您是一个 ISP 好了,而您只申请到 150 个 IP 来做为您的客户联机之用。那么您是否真的只能邀集到 150 的使用者?呵呵!当然不啰!我可以邀集 200 个使用者以上呢!为什么?这样想好了,我今天开了一家餐馆,里面只有 20 个座位,那么是否我一餐只能卖给 20 个人呢?当然不是啦!因为客人是人来人往的,有人先吃有人后吃,所以同样是 20 个座位,但是可以有 40 个人来吃我的简餐,因为来的时间不一样嘛!了解了吗?呵呵!对啦!您这个 ISP 虽然只有 150 个 IP 可以发放,但是因为您的使用者并非 24 小时都挂在在线的,所以您可以将这 150 个 IP 做良好的分配,让 200 个人来『轮流使用』这 150 个 IP 哩! 好了,那么另外一个问题,还是搞不懂什么是『静态 IP 』与『动态 IP』呢?不都是由 DHCP 发放的吗?让我们再来谈一个小例子好了。目前(2003年)上网的主流是 ADSL 拨接制这种方法,其中,由于拨接制所以每次上线的 IP 都不一样!这可以想成是 DHCP 的 动态 IP 分配方式!那么如果您是使用 GIGA 的拨接制给予的固定 IP 呢?呵呵!那个方式其实还是使用拨接之后才能得到联机啦!只不过 ISP 经由 PPP 协议当中的密码来判断用户,让同一个使用者每次都可以收到一个固定的 IP 而已!这样可以理解了吗?呵呵!您可以想成,拨接到 ISP 就是类似 client 端发送一个 DHCP 的需求给 DHCP 主机,而将 GIGA 想成我们 DHCP 里面的固定 IP 分配方式,而 Seednet 之类的 ISP 动态给予 IP 的,就是 DHCP 里面使用的 dynamic IP 分配方式啦! ( 注:其实在软件地址亦即是 IP 上面,只有 Public IP 与 Private IP 两种,中文翻译成『公共 IP』与『私有 IP』这两个,至于其他所谓的『静态 IP』、『实体 IP』、『虚拟 IP』、『浮动式 IP』等等,都是藉由一些 IP 取得的方式来分类的,对于此种分类方式可能会造成读者的困扰,所以,请特别留意这些 IP 的意义,不要搞混了!如果还是害怕会搞不清楚,那么只要先记得『公共 IP』是可以直接与 Internet 相互沟通的,至于『私有 IP』则是不能直接与 Internet 沟通的内部 IP 段!) 关于租约的行为: 怪了!如果我们观察上面 DHCP 运作模式的第二个步骤,您会发现最后面还有一个租约期限!干嘛还要这样的一个期限呢?其实设定期限还是有个优点啦!最大的优点就是可以避免该 IP 被某些使用者一直占用着,但该使用者却是 Idle ( 发呆 ) 的状态!举个例子来说,我们刚刚不是说到,我有 150 个 IP ,但是偏偏我有 200 个用户嘛!那么假设刚好例如 2002 年的世界杯足球赛好了,每个使用者都急着上网知道消息,那么将会达到交通尖峰时段!也就是说,这 200 个人同时要来使用这 150 个 IP ,有可能吗?当然不可能!肯定会有 50 个人无法联机,因为『很抱歉!目前系统正在忙线中,请您稍后再拨!』那怎么办?这个时候租约到期的方式就很有用处啦!那几个已经联机进来很久的人,就会因为租约到期而被迫脱机,这个时候该 IP 就会被释放出来,哈哈!大家赶快抢呀!先抢到先赢喔!所以,那 50 个人 ( 包括被迫脱机的那个朋友 ) 只好继续的、努力的、加油的来进行 DHCP 的要求啰! ^_^"" 虽然说是优点,但是其实如果站在使用者的角度来看,还是可能会造成公愤的!凭什么大家一起交钱,我先联机进来就需要先被踢出去?~呵呵!这个在早期 Hinet 就是这点被骂的要死!为什么呢?因为他的 ADSL 拨接制,似乎真的就有这个租约到期的问题,限制的时间似乎是 24 小时的样子!所以,使用 Hinet ADSL 拨接制的朋友,每 24 小时就要忍受一次断线!我没有使用过 Hinet 的 ADSL 拨接制,网络上的朋友确实有响应这样的事情,但是我不确定现在( 2003/03/15 )Hinet 是否还是用这套设定值?这样您可以了解租约到期的行为了吗?! ^_^ 关于 DHCP 主机个数: 或许您曾经发现过一件事情,那就是,当我的网域里面有两部以上的 DHCP 主机时,到底哪一部主机会设定我的这部 Client 端计算机?呵呵!很抱歉,俺也不晓得!因为在网络上面,很多时候都是『先抢先赢』的,同样的, DHCP 的回应也是如此!当 Server1 先响应时,您使用的就是 Server1 所提供的网络参数内容,如果是 Server2 先响应,您就是使用 Server2 的参数来设定您的 PC !不过,前提之下当然是这些计算机的『物理联机』都是在一起的啊! 什么时候需要 DHCP ? 什么时候才需要架设 DHCP 呢?是否每个人都最好架设一部 DHCP 主机呢?那可就见仁见智啦!接下来要告知大家的是几个概念性的问题,您倒不一定『必需』遵守底下的一些概念呢!反正,自己的网域自己『爽』就好啦! 在某些情况之下,倒是强烈的建议架设 DHCP 主机的!什么情况呢?例如: 虽然 DHCP 有很多好处,但是您有没有发现一个步骤怪怪的呀!回头看一下那个步骤一, Client 在开机的时候会主动的发送讯息给网域上的所有机器,这个时候,如果网域上就是没有 DHCP 主机呢?很抱歉,那么您的这部 Client 端计算机,『仍然会持续的发送讯息!』真正的时间与次数我不晓得会有多久,不过,肯定会超过 30 秒以上,甚至可以达到一分钟以上!哇!那么这段时间您能干嘛?呵呵!除了等、还是等!所以啰,如果计算机数不多,还是使用手动的方式来设定一下就好了!方便嘛! 如前所述,上面的都是概念性的说法,事实上,一件事情的解决之道是有很多的方案的,没有所谓的『完全正确』的方案,只有『相对可行、并且符合经济效益与功能』的方案!所以啰,架设任何网站之前,请先多评估评估吶! 套件安装: 在 Linux 上面 DHCP 套件的安装也是很简单的,不需要以 Tarball 来安装啦!直接拿出您的原版光盘, mount 他,并且找到 dhcp 字样的套件,使用 RPM 安装好就好了!以 mandrake 9.0 及 Red Hat 9 为例的话,您需要的 DHCP 套件为: 设定 DHCP Server:
DHCP 套件结构 在 DHCP 的套件结构当中,也是仅有一个配置文件。这个配置文件不见得会存在喔!也是需要我们手动来建立的吶!谈一谈先: 整个 DHCP 的配置文件与检查的档案就是这几个而已,很简单吧!^_^ 主机的规划技巧 如果您的机器仅要提供 DHCP 的服务的话,那么真的一部 P-133 MMX 的 586 主机就很足够了!而且 partition 的规划不是很重要,因为 DHCP 主机并不会使用到硬盘空间,最多仅只是那个租约到期的纪录文件而以(/var/lib/dhcp/dhcpd.leases)。 设定流程 好不容易!终于到了要架设 DHCP Server 的时候了,哇!好感动.....咦!鸟哥怎么老是在唱单口相声.... @_@。其实要设定好一个 DHCP 主机还真是蛮简单的,只要设定一个档案即可!但是前面的确认工作请先仔细的查验好! 这可是架设网站的第一个重点!如果您的硬件没有搞定,那么软件再怎么厉害,呵呵!也是没有用的啦!目前我的架构就像底下这样,我的 Linux 主机上面有两张网络卡,一张对内一张对外喔! 请您特别留意的是,不同的 Linux distribution 中,每个套件的配置文件放置的位置都不相同,例如 OpenLinux 使用的 dhcp 配置文件放置在 /etc/dhcpd/dhcpd.conf ,而 Red Hat 与 Mandrake 则放在 /etc/dhcpd.conf 里头!那么我要怎么确认呢?呵呵,因为我知道配置文件案与 server 有关,所以当然是查询 dhcp-server 这个套件啰,要查询配置文件,可以加上 c 的参数,所以:
好了,那么来到最重点啦!我们的 DHCP 就只要设定这个档案即可!那么这个档案如何设定呢?基本上,我们刚刚前面提过说, DHCP 的 IP 分配可分为给予动态 IP 与静态 IP ,其中,又需要了解的是,如果需要设定静态 IP 的话,那么就必须要知道要设定成静态 IP 的那部计算机的硬件地址 (MAC)才行,请使用 arp 及 ifconfig 来查知您的接口的 MAC 吧!此外,我们需要设定的项目大概有几项: 在 dhcpd.conf 这个档案里头有些地方要特别留意: 那么我的网络环境是怎样呢?鸟哥假设是这样的喔: 则,我的配置文件为:
既然我们知道 DHCP 是由用户与主机端之间的租约是否到期来进行是否继续联机的动作,那么自然就有所谓的『签约仪式』啰!哈哈!真会掰!这个时候,我们就得要知道一下,那么我到底要在哪里设定这个租约期限档案呢?如果在比较早期的版本中,这个步骤一定要进行的!不过,目前的版本中,似乎预设已经有这个租约期限档案了!无论如何,还是作一下比较安心啦!
这个档案倒是蛮有趣的!因为在实际的运作过程中,这个档案本身不会有什么作用,但是在启动了 DHCP 之后,这个档案会被 copy 一份成为底下的档案: 『/var/lib/dhcp/hdcpd.leases』而真正在记录的,其实就是这个 /var 底下的档案啦!后面我们再来看一下这个档案的内容吧!目前还不会用到这个档案的内容啰!(注:如果您使用的 Linux 是最近的版本,那么应该不需要再执行这个步骤了!无论如何,您可以先略过这个步骤,到启动的时刻下,如果未能正确启动,再回来做这一步都还来得及呢!) 咦!不是可以启动了吗?喔不~我们还得要检查一下,您要提供 DHCP 的接口是哪一个呢!就如同我上面的图示,基本上,我的主机是有两块网络卡的,一块对外一块对内,而我只对这个对内部的网络卡启动 DHCP ,因此,我可以修改一下我的 /etc/rc.d/init.d/dhcp 这个档案:注:我是以 Mandrake 9.0 为例来说明的,如果您是使用 Red Hat 或者是 OpenLinux 等其他版本时,您应该可以找到『 daemon /usr/sbin/dhcpd 』那一行,将他改成底下的样子也就可以啦!
基本上,上面的 /etc/dhcpd.conf 配置文件案的所在目录是可以变动的!就在这里进行更动即可!您可以使用 man dhcpd 就可以知道每个参数代表的意义了!请注意,那个 start() 里面的信息,只要更动找到的 daemon .... 那一行即可!至于上面的参数设定内容,则可以参考 BASH 的变量设定方法来写!目前因为我们只要针对 eth0 来启用 DHCP 而已,所以上面 INTERFACES 的部分我就写入了 eth0 而已,如果您还要启动 eth1 的话,那么就需要:『 INTERFACES="eth0 eth1"』两个界面中间以空格符来隔开!这样,大致上就已经设定妥当了!准备来去启动啦! 启动服务的方法不需要再教了吧!?直接给他执行刚刚改过的 scripts 即可:
注意屏幕前面要显示 OK 才可以呢!好了,除此之外,我们还要确认 DHCP 已经启动才行! 要注意的是,虽然我们已经驱动了 script 了,不过,您仍然不会知道,那个 script 是否真的让您的 service 启动了哪?所以,在启动任何的服务之后,观察一下两个东西,一个是 port 是否以启动,另一个则是到登录文件去查询一下讯息!这都是很重要的信息呢!所以,您应该这样做:
仔细的看到喔! DHCP 显示的是 bootps 这个字样! WHY ?没有什么奇特的原因啦,因为 DHCP 的前身就是 bootps 这个 protocol ,所以当然就沿用啦!如果您想要修改这个字眼使成为 dhcp 的话,可以修改 /etc/services :
那未来使用 netstat -tln 就可以得到 dhcp 的显示了!嗄!忘记 netstat 后面的参数意义!喂!不要再混了!赶快回到前几篇提过的『Linux 常用网络指令介绍』练一练基本功吧! 如果您有仔细的瞧过前几章的 网络基础 的话,那么应该还会记得那个 /etc/hosts 会影响内部计算机的连接速度很大吧?!那么我现在使用 DHCP 之后,糟糕!我怎么知道哪一部 PC 连上我的主机,那么要怎么填写 /etc/hosts 的内容呢?这真是太简单了!那就将所有可能的计算机 IP 都加进去该档案呀! ^_^ !以我为例,在这个例子中,我的分配的 IP 至少有 192.168.1.5, 192.168.1.21 ~ 192.168.1.100 ,所以我的 /etc/hosts 可以写成:
这样一来,所有可能连进来的 IP 都已经有纪录了,哈哈!当然没有什么大问题啰! ^_^ 设定 DHCP Client DHCP 的 Client 端,可以是 Windows 也可以是 Linux 呢!由于我的领域内刚好有两部 Client 端的计算机,一部为 Linux ( Red Hat 7.3 ) 另一部为 Windows 2000 ,这里就提一下,分别是怎样设定的呢? 除错与检视租约档案: 接着下来,我们就要努力的来除虫了!除虫的第一步,就是察看登录档啦!最常发生的错误其实大概就是: 再来要讨论的则是那个租约档案的内容问题!去看一下 /var/lib/dhcp/dhcpd.lease 的内容吧! 重点回顾
参考资源:
本章习题练习
前往参考解答 2002/11/23:第一次完成 2003/03/15:加入相关重点回顾、与练习题 2003/09/10:修改版面去! |
||||||||||||||||||
本网页主要以Firefox配合解析度 1024x768 作为设计依据 鸟哥自由软件整合应用研究室