📄 0340dhcp.htm
字号:
<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en"><html><head> <meta http-equiv="Content-Type" content="text/html; "> <meta name="Author" content="VBird"> <meta name="GENERATOR" content="Mozilla/4.5 [zh-TW] (WinNT; I) [Netscape]"> <meta name="Description" content="Dynamic Host Configuration Protocol 主機的設定問題"> <title>鸟哥的 Linux 私房菜 -- 简易 DHCP 服务器设定</title><!-- saved from url=(0022)http://internet.e-mail --><style> <!-- body{background-image=url(http://linux.vbird.org/VBirdLinux.jpg);background-ATTACHMENT=FIXED} --></style></head><body nosave="" background="0340dhcp_files/VBirdLinux.jpg"><center><center><b><font size="+2" color="#3333ff"><font face="SimSun">鸟哥的</font><font face="Times New Roman,Times"> Linux </font><font face="SimSun">与</font><font face="Times New Roman,Times"> ADSL </font><font face="SimSun">私房菜</font></font></b><br><a href="http://linux.vbird.org/" target="_top"><img src="0340dhcp_files/VBirdTitle2.jpg" nosave="" border="0" height="25" width="90"></a><a href="http://linux.vbird.org/linux_basic"><img src="0340dhcp_files/icon_system.gif" nosave="" border="0" height="25" width="90"></a><a href="http://linux.vbird.org/linux_server"><img src="0340dhcp_files/icon_server.gif" nosave="" border="0" height="25" width="90"></a><a href="http://linux.vbird.org/linux_security"><img src="0340dhcp_files/icon_security.jpg" nosave="" border="0" height="25" width="90"></a><a href="http://phorum.vbird.org/" target="_blank"><img src="0340dhcp_files/icon_forums.gif" nosave="" border="0" height="25" width="90"></a><a href="http://linux.vbird.org/adsl"><img src="0340dhcp_files/icon_adsl.gif" nosave="" border="0" height="25" width="90"></a><br><hr width="100%"></center><font size="+2" color="#3333ff"><a href="http://linux.vbird.org/linux_server/0340dhcp.php" target="_self"><font face="SimSun">简易</font><font face="Times New Roman,Times">DHCP </font><font face="SimSun">服务器设定</font></a></font></center><div align="right"><font size="-1" color="#3333ff" face="SimSun">最近更新日期:2003/03/15</font></div><font size="-2" color="#000099"> </font><table bgcolor="#ffcccc" border="1" cols="1" width="100%"><tbody><tr><td><font size="-1" color="#000099">如果您在工作单位使用的是笔记型计算机,而且常常要带着您的笔记型计算机到处跑,那么由前几章的『<a href="http://linux.vbird.org/linux_server/0130internet_connect.php">连上Internet </a>』设定当中,会发现,哇!我的网络卡参数要常常修改啊!而且,每到一个新的地方,就得问清楚该地的Server 提供的网络参数才行!真是麻烦~~这个时候,动态主机设定协议 (DHCP)可就大大的派上用场啦!DHCP 这个服务器可以自动的分配 IP 与相关的网络参数给Client 端,来提供 Client 端自动以主机提供的参数来设定他们的网络,如此一来,使用者只要将自己的Notebook 设定好经由 DHCP 协议来取得网络参数后,一插上网络线,呵呵!马上就可以享受Internet 的服务啦!很方便吧!所以得来瞧一瞧这个好用的协定喔!</font></td></tr></tbody></table><font size="-2" color="#000099"> </font><br><font size="+1" color="#000099"><a href="#theory">原理</a>:</font><br><font color="#000099"> :<a href="#theory_Whatisdhcp">什么是 DHCP</a></font><br><font color="#000099"> :<a href="#theory_DHCP_work">DHCP 的运作方式</a></font><br><font color="#000099"> :<a href="#theory_WhentouseDHCP">什么时候需要DHCP</a></font><br><font size="+1" color="#000099"><a href="#package">套件安装</a>:</font><br><font color="#000099"><font size="+1"><a href="#dhcp_server">设定 DHCPServer</a> </font>:</font><br><font color="#000099"> :<a href="#dhcp_server_package">DHCP 套件结构</a></font><br><font color="#000099"> :<a href="#dhcp_server_partition">主机的规划技巧</a></font><br><font color="#000099"> :<a href="#dhcp_server_fllow">设定流程</a></font><br><font color="#000099"><font size="+1"><a href="#dhcp_client">设定 DHCPClient</a></font> :</font><br><font color="#000099"><font size="+1"><a href="#debug">除错与检视租约档案</a></font>:</font><br><font size="+1" color="#000099"><a href="#important">重点回顾</a></font><br><font size="+1" color="#000099"><a href="#reference">参考资源</a>:</font><br><font size="+1" color="#000099"><a href="#FAQ">本章习题练习</a></font><br><hr width="100%"><a name="theory"></a><font size="+1" color="#000099">原理:</font><ul>老规矩,在正式的进入 <b><font color="#000066">DHCP (Dynamic Host ConfigurationProtocol )</font></b> 主机设定之前,我们先来认识一下 DHCP 这个协议吧!还有,需要了解的是,我们是否有需要『一定』得设定DHCP 这个服务器呢?这里都需要厘清一下概念喔!<br> <br><hr width="100%"><a name="theory_Whatisdhcp"></a><font color="#000099"><font size="+1">什么是DHCP</font>:</font><br> <br>在开始 DHCP 的说明之前,我们先来复习一下之前在『<a href="http://linux.vbird.org/linux_server/0110network_basic.php">网络基础</a>』里面提到的几个网络参数吧!要设定好一个网络的环境,使计算机可以顺利的连上Internet ,那么您的计算机里面一定要有底下几个网络的参数才行,分别是:<br> <ul><li><font color="#000066">IP</font></li><li><font color="#000066">netmask</font></li><li><font color="#000066">network</font></li><li><font color="#000066">broadcast</font></li><li><font color="#000066">gateway</font></li><li><font color="#000066">DNS IP</font></li></ul> <br>其中,那个 IP, netmask, network, broadcast 与 gateway 都可以在 /etc/sysconfig/network-scripts/ifcfg-eth[0-n]这些个档案里面设定,DNS 的地址则是在 /etc/resolv.conf 里头设定。呵呵!只要这几个项目设定正确,那么计算机应该就没问题的可以上网了!所以说,您家里面的3, 4 部计算机,您都可以手动的来设定好您所需要的网络参数,然后利用 <a href="http://linux.vbird.org/linux_server/0320nat.php">NAT主机</a>的功能,就可以大摇大摆的<a href="http://linux.vbird.org/linux_server/0130internet_connect.php">连上Internet</a> 了!真是不错 ^_^,不是吗?<br> <br>好了,现在让我们换一个大一些些的场景吧!假设您是学校宿舍的网络管理员,所管理的学生计算机大概有100 部好了,那么您怎么设定好这 100 部的计算机呢?<br> <ol><li><font color="#000066">直接每一部计算机都让您登门拜访手动的去设定好?</font></li><li><font color="#000066">将所有的学生都集合起来,然后精神训话.....喔不!是直接教导一下怎么设定?还是</font></li><li><font color="#000066">藉由一部主机来自动的分配所有的网络参数给宿舍内的任何一部计算机?</font></li></ol> <br>这三种解决方案所需要的时间都不相同,如果您选择的是(1),那么我个人认为,您不是工作狂就是疯掉了,因为所要花费的时间与您所得的薪水与付出的心力是完全不成比例的~~如果选择是(2)那么很可能您会被挂上独裁者、没良心的管理员的称号!如果是选择(3)呢?恭喜您!这个方案的管理时间花费最短,也是最不麻烦的作法啦!<br> <br>呵呵!知道我要说些什么了吗?是的!这个 <font color="#000066">DHCP (Dynamic Host Configuration Protocol )</font> 主机最主要的工作,就是在进行前面提到的第三个方案,也就是自动的将网络参数正确的分配给网域中的每部计算机,让Client 端的计算机可以在开机的时候就立即自动的设定好网络的参数值,这些参数值可以包括了IP、netmask、network、gateway 与 DNS 的地址等等。如此一来,呵呵!身为管理员的您,只要注意到这一部提供网络参数的主机有没有挂掉就好了,其它同学们的个人计算机,哈!您想都不必想要怎么去帮忙!因为DHCP 主机已经完全都帮您搞定啦! ^_^! 阿!当管理员最大的幸福就是可以喝喝茶、聊聊天就能控管好一切的网络问题呢!<br> <br><hr width="100%"><a name="theory_DHCP_work"></a><font size="+1" color="#000099">DHCP的运作方式:</font><br><b><font color="#000066"> </font></b><br><b><font color="#000099">运作模式:</font></b><br>那么 DHCP 是怎么运作的呢?现在假设我们的机器在同一个网域当中,也就是说,DHCP Server 与他的 Clients 都在同一个网段之内,可以透过<font color="#000066">软件广播</font>的方式来达到相互沟通的状态。那么Client 藉由 DHCP Server 得到 IP 的程序为:<br> <ol><li><font color="#000066">若 Client 端计算机设定使用 DHCP 协议以取得网络参数时,则Client 端计算机在开机的时候,或者是重新启动网络卡的时候,会自动的发出 DHCPClient 的需求给网域内的每部计算机</font>:这个时候,由于发出的讯息希望每部计算机都可以接受,所以该讯息除了网络卡的<a href="http://linux.vbird.org/linux_server/0110network_basic.php#NIC_MAC">硬件地址(MAC)</a>无法改变外,需要将该讯息的来源软件地址设定为0.0.0.0 ,而目的地址则为 255.255.255.255 (这个我们 Linux 会自动帮您设定,无须考虑这个问题!)。这个时候,网域内的其它没有提供DHCP 服务的计算机,收到这个封包之后会自动的将该封包丢弃而不回应;而如果是DHCP 主机呢?</li><br> <li><font color="#000066">DHCP 主机响应讯息</font>:如果是 DHCP 主机收到这个Client 的 DHCP 需求时,那么 DHCP 主机首先会针对该次需求的讯息所携带的 MAC与 DHCP 主机本身的设定值去比对,如果 DHCP 主机的设定有针对该 MAC 做静态IP (每次都给予一个固定的 IP )的提供时,则提供 Client 端相关的固定 IP 与相关的网络参数;而如果该讯息的MAC 并不在 DHCP 主机的设定之内时,则 DHCP 主机会选取目前网域内没有使用的IP (这个 IP 与设定值有关) 来发放给 client 端使用!此外,需要特别留意的是,在DHCP 主机发放给 Client 端的讯息当中,会附带一个『租约期限』的讯息,以告诉Client 端,您这个 IP 可以使用的期限有多长!</li><br> <li><font color="#000066">Client 端接受来自 DHCP 主机的网络参数,并设定 Client自己的网络环境</font>:当 Client 端接受响应的讯息之后,首先会以 ARP 封包在网域内发出讯息,以确定来自DHCP 主机发放的 IP 并没有被占用!如果该 IP 已经被占用了,那么 Client 对于这次的DHCP 信息将不接受,而将再次向网域内发出 DHCP 的需求广播封包;若该 IP 没有被占用,则client 可以接受 DHCP 主机所给的网络的参数,那么这些参数将会被使用于 client端的网络设定当中,同时, Client 端也会对 DHCP 主机发出确认封包,告诉 Server这次的需求已经确认!而 Server 也会将该信息记录下来;</li><br> <li><font color="#000066">Client 端结束该 IP 的使用权</font>:当 Client 开始使用这个DHCP 发放的 IP 之后,有几个情况下他可能会失去这个 IP 的使用权:</li><ul><li><font color="#000066">Client 端离线</font>:不论是关闭网络接口( ifdown)、重新开机 ( reboot )、关机 ( shutdown ) 等行为,皆算是离线状态,这个时候Server 端就会将该 IP 回收,并放到 Server 自己的备用区中,等待未来的使用;</li><li><font color="#000066">Client 端租约到期</font>:前面提到 DHCP server 端发放的IP 有使用的期限, Client 使用这个 IP 到达期限规定的时间,就需要将 IP 缴回去!这个时候就会造成断线,而Client 也可以再向 DHCP 主机要求再次分配 IP 啰!</li></ul></ol> <br>以上就是 DHCP 这个协议在 Server 端与 Client 端的运作状态,由上面这个运作状态来看,我们可以晓得,喝!只要Server 端设定没有问题,加上 Server 与 Client 在硬件联机上面确定是 OK 的,那么Client 就可以直接藉由 Server 来取得上网的网络参数,当然啦,只要我们这些管理员能够好好的、正确的管理好我们的DHCP ,嘿嘿!那么自然上网的设定就变成一件很简单的事情啦!<br> <br><b><font color="#000099">IP 取得的方法:</font></b><br>在上面的步骤里面,注意到第二步骤了吗?就是 DHCP 会去比较 MAC 这个硬件地址,并判断该MAC 是否需要给予一个固定的 IP 呢!呵呵!所以啦,我们在 Client 端由 DHCP主机取得的 IP 主要有两种方式:<br> <ul><li><font color="#000099">静态 ( Static ) IP </font>:只要那个 client 端计算机的网络卡不换掉,那么MAC 肯定就不会改变,由于 DHCP 可以根据 MAC 来给予固定的 IP ,所以<font color="#000066">该计算机每次都能以一个固定的IP 连上 Internet </font>!呵呵!这种情况比较适合当这部计算机需要用来做为提供区域内的一些网络服务的主机之用。那么如何在Linux 上面知道您的 MAC 呢?很简单啦!有很多的方式,最简单的方式就是使用ifconfig 及 arp 来进行:</li>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -