⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0340dhcp.htm

📁 鸟哥的linux私房菜
💻 HTM
📖 第 1 页 / 共 5 页
字号:
</div>


<!-- 本文的正式部分 -->
<hr /><a NAME="before"></a><img src="images/penguin-m.gif" alt="大标题的图示" height="34" width="25" align="middle" /><span class="text_h1">本章的行前准备工作</span><br />
<div class=block1>
	由于 DHCP 必需要设定整个区域网路的网段规定,还有得要了解路由设定,以及一堆与网路有关的资讯等等,
	所以你一定要熟悉网路基础。此外,由于 DHCP server 套件预设应该是不会安装啦,所以你也必需要了解如何使用 rpm
	或者是 yum 等工具才行。<br />
	<ul>
	<li>务必了解<a href="0110network_basic.php">网路基础</a>相关的资料;
	<li>也得了解一下 <a href="0350dns.php">DNS</a> 相关的议题;
	<li>还有<a href="0250simple_firewall.php">防火墙</a>最好也能了解一番。
	</ul>
</div>

<hr /><a NAME="theory"></a><img src="images/penguin-m.gif" alt="大标题的图示" height="34" width="25" align="middle" /><span class="text_h1">DHCP 运作的原理</span><br />
<div class=block1>
	老规矩,在正式的进入 <span class=text_import2>DHCP (Dynamic Host Configuration Protocol) </span>
	主机设定之前,我们先来认识一下 DHCP 这个协定吧!还有,需要了解的是,我们是否有需要『一定』得设定 DHCP 
	这个伺服器呢?这里都需要厘清一下概念喔! <br /><br />

	<hr /><a NAME="theory_whatisdhcp"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">什么是 DHCP 协定</span><br />
	<div class=block2>
		在开始 DHCP 的说明之前,我们先来复习一下之前在<a 
		href="0110network_basic.php">网路基础</a>里面提到的几个网路参数吧!
		要设定好一个网路的环境,使电脑可以顺利的连上 Internet ,那么您的电脑里面一定要有底下几个网路的参数才行,分别是∶
		<ul><span class=text_import2>IP, netmask, network, broadcast, gateway, DNS IP</span></ul>
		其中,那个 IP, netmask, network, broadcast 与 gateway 都可以在 
		/etc/sysconfig/network-scripts/ifcfg-eth[0-n] 这些档案里面设定,DNS 的位址则是在 
		/etc/resolv.conf 里头设定。呵呵!只要这几个项目设定正确,那么电脑应该就没问题的可以上网了!
		所以说,您家里面的 3, 4 部电脑,您都可以手动的来设定好您所需要的网路参数,
		然后利用 <a href="0250simple_firewall.php#nat">NAT 主机</a>的功能,就可以大摇大摆的<a
		href="0130internet_connect.php">连上 Internet</a> 了!真是不错 ^_^,不是吗?<br /><br />

		好了,现在让我们换一个大一些些的场景吧!假设您是学校宿舍的网路管理员,所管理的学生电脑大概有 100 
		部好了,那么您怎么设定好这 100 部的电脑呢?<br />
		<ol><span class=text_import2>
		<li>直接每一部电脑都让您登门拜访手动的去设定好?
		<li>将所有的学生都集合起来,然后精神训话.....喔不!是直接教导一下怎么设定?还是
		<li>藉由一部主机来自动的分配所有的网路参数给宿舍内的任何一部电脑?
		</span></ol>

		这三种解决方案所需要的时间都不相同,如果您选择的是(1),那么鸟哥个人认为,您不是工作狂就是疯掉了,
		因为所要花费的时间与您所得的薪水与付出的心力是完全不成比例的。如果选择是(2)那么很可能您会被挂上独裁者、
		没良心的管理员的称号!如果是选择(3)呢?恭喜您!这个方案的管理时间花费最短,也是最不麻烦的作法啦!<br /><br />

		呵呵!知道我要说些什么了吗?是的!这个 <span class=text_import2>DHCP (Dynamic Host Configuration Protocol)</span> 
		主机最主要的工作,就是在进行前面提到的第三个方案,也就是自动的将网路参数正确的分配给网域中的每部电脑,
		让用户端的电脑可以在开机的时候就立即自动的设定好网路的参数值,这些参数值可以包括了 IP、netmask、network、gateway
		与 DNS 的位址等等。如此一来,呵呵!身为管理员的您,只要注意到这一部提供网路参数的主机有没有挂掉就好了,
		其他同学们的个人电脑,哈!您想都不必想要怎么去帮忙!因为 DHCP 主机已经完全都帮您搞定啦! 
		^_^! 阿!当管理员最大的幸福就是可以喝喝茶、聊聊天就能控管好一切的网路问题呢!<br /><br />
	</div>

	<hr /><a NAME="theory_dhcpwork"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">DHCP 的运作方式</span><br />
	<div class=block2>
		你必需要知道的是,DHCP 通常是用区域网路内的一个通讯协定,他主要藉由用户端传送广播封包给整个物理网段内的所有主机,
		若区域网路内有 DHCP 主机时,才会回应用户端的 IP 参数要求。所以棉,DHCP 伺服器与用户端是应该要在同一个物理网段内的。
		而用户端取得 IP 参数的程序可以简化如下∶<br />
		<ol>
		<li><span class=text_import1>用户端利用广播封包发送 DHCP 需求∶</span><br />
		若用户端设定使用 DHCP 取得 IP (在 Windows 内为『自动取得 IP』),则当用户端开机或者是重新启动网路卡时,
		用户端主机会发送出 DHCP 要求给所有物理网段内的电脑。此封包的目标 IP 会是 255.255.255.255,
		所以一般主机接收到这个封包后会直接予以丢弃,但若区域网路内有 DHCP 伺服器时会如何回应?</li><br />

		<li><span class=text_import1>DHCP 主机回应讯息∶</span><br />
		DHCP 主机在接收到这个用户端的需求后,针对这个用户端的<a 
		href="0110network_basic.php#fig_mac">硬体位址 (MAC)</a> 与本身的设定资料来进行下列工作∶<br /><br />
		<ul><span class=text_import2>
		<li>到伺服器的登录档中寻找该用户之前是否曾经用过某个 IP ,若有且该 IP 目前无人使用,则提供此 IP 给用户端;
		<li>若设定档针对该 MAC 提供额外的固定 IP (static IP) 时,则给予该 IP 的设定;
		<li>若不符合上述两个条件,则随机取用目前没有被使用的 IP 给用户,并记录下来。
		</span></ul><br />
		此外,DHCP 伺服器还会提供一个租约时间给用户端,并等待用户端的回应。</li><br />

		<li><span class=text_import1>用户端接受 DHCP 伺服器提供的参数并设定本身的网路环境∶</span><br />
		若一切安好,则用户端会接受该次取得的 IP 并开始处理本身的网路环境,包括改写 /etc/resolv.conf 等等;
		并且会向 DHCP 伺服器发送一个确认封包,确认该参数已被接受。</li><br />

		<li><span class=text_import1>DHCP 伺服器记录该次租约行为∶</span><br />
		用户端回传讯息以建立租约行为后,该次租约会被记录到主机的登录档上头,
		并且开始租约计时喔!那么该次租约何时会到期而被解约 (真可怕的字眼!) ?你可以这样想∶<br /><br />
		<ul>
		<li><span class=text_import2>用户端离线</span>∶不论是关闭网路介面 (ifdown)、重新开机 (reboot)、关机 (shutdown) 
		等行为,皆算是离线状态,这个时候 Server 端就会将该 IP 回收,并放到 Server 自己的备用区中,等待未来的使用;</li><br />
		<li><span class=text_import2>用户端租约到期∶</span>前面提到 DHCP server 端发放的 IP 有使用的期限,用户端使用这个 IP 
		到达期限规定的时间,而且没有重新提出 DHCP 的申请时,就需要将 IP 缴回去!这个时候就会造成断线,而用户也可以再向 
		DHCP 主机要求再次分配 IP 棉
		</ul>
		</ol>

		以上就是 DHCP 这个协定在 Server 端与 Client 端的运作状态,由上面这个运作状态来看,我们可以晓得,只要 
		Server 端设定没有问题,加上 Server 与 Client 在硬体连线上面确定是 OK 的,那么 Client 就可以直接藉由 Server 
		来取得上网的网路参数,当然啦,只要我们这些管理员能够好好的、正确的管理好我们的 DHCP 
		,嘿嘿!那么上网的设定自然就变成一件很简单的事情啦! <br /><br />

		<hr /><li><span class=text_import1>DHCP 伺服器给予用户端的 IP 类型∶</span></li>
		<div class=block2>
		在上面的步骤里面,注意到第二步骤了吗?就是伺服器会去比较用户端的 MAC 硬体位址,并判断该 MAC 
		是否需要给予一个固定的 IP 呢!所以啦,我们可以设定 DHCP 伺服器给予用户端的 IP 类型主要有两种∶<br />
		<ul>
		<li><span class=text_import2>固定 (Static) IP∶</span><br />
		只要那个用户端电脑的网路卡不换掉,那么 MAC 肯定就不会改变,由于 DHCP 可以根据 MAC 来给予固定的 
		IP ,所以该电脑每次都能以一个固定的 IP 连上 Internet !呵呵!
		这种情况比较适合当这部电脑需要用来做为提供区域内的一些网路服务的主机之用。那么如何在 Linux 
		上面知道您的 MAC 呢?很简单啦!有很多的方式,最简单的方式就是使用 ifconfig 及 arp 来进行∶<br />

<table class="term"><tr><td class="term"><pre>
<span class=term_hd>1. 观察自己的 MAC 可用 ifconfig∶</span>
[root@linux ~]# <span class=term_command>ifconfig eth0</span>
eth0      Link encap:Ethernet  HWaddr <span class=term_write>00:08:03:A3:E0:34</span>
          inet addr:192.168.1.254  Bcast:192.168.1.255  Mask:255.255.255.0
          <span class=term_say>....底下省略....</span>

<span class=term_hd>2. 观察别人的 MAC 可用 ping 配合 arp</span>
[root@linux ~]# <span class=term_command>ping -c 1 192.168.1.101</span>
[root@linux ~]# <span class=term_command>arp -n</span>
Address        HWtype  HWaddress          Flags Mask   Iface
192.168.1.101  ether   <span class=term_write>00:08:75:A0:B2:78</span>  C            eth0
</pre></td></tr></table><br />

		<li><span class=text_import2>动态 (dynamic) IP∶</span><br />
		Client 端每次连上 DHCP 所取得的 IP 都不是固定的!都直接经由 DHCP 所随机由尚未被使用的 IP 中提供!
		</ul>

		除非您的区域网路内的电脑有可能用来做为主机之用,所以必需要设定成为固定 IP ,否则使用动态 IP 
		的设定比较简单,而且使用上面具有较佳的弹性。怎么说呢?假如您是一个 ISP 好了,而您只申请到 
		150 个 IP 来做为您的客户连线之用。那么您是否真的只能邀集到 150 的使用者?呵呵!当然不棉!我可以邀集 
		200 个使用者以上呢!<br /><br />

		为什么?这样想好了,我今天开了一家餐馆,里面只有 20 个座位,那么是否我一餐只能卖给 20 
		个人呢?当然不是啦!因为客人是人来人往的,有人先吃有人后吃,所以同样是 20 个座位,但是可以有 
		40 个人来吃我的简餐,因为来的时间不一样嘛!了解了吗?呵呵!对啦!您这个 ISP 虽然只有 150 个 IP 
		可以发放,但是因为您的使用者并非 24 小时都挂在线上的,所以您可以将这 150 个 IP 做良好的分配,让 
		200 个人来『轮流使用』这 150 个 IP 哩! <br />

		<div style="padding: 10 0 10 0 ;" align="right"><table width="90%"><tr><td><b>Tips:</b><br /><span style="font-style: italic; color : darkgreen">		其实 IP 只有 Public IP 与 Private IP 两种,中文翻译成『公共 IP』与『私有 IP』这两个,
		至于其他所谓的『静态 IP』、『实体 IP』、『虚拟 IP』、『浮动式 IP』等等,都是藉由一些 IP 取得的方式来分类的,
		关于 IP 的种类我们在<a href="0110network_basic.php#ipandmac_type">网路基础</a>中谈过了,记得再好好的厘清一下观念喔!
		</span></td><td><img src="../images/vbird_face.gif" /></td></tr></table></div>
		事实上现在主流的 ADSL 宽频拨接上网也有使用到『<span class=text_import2>静态 
		IP</span> 』与『<span class=text_import2>固定 IP</span> 』之类的概念喔!
		举例来说好了,hinet/seed net 等主要 ISP 都有提供所谓的∶『一个固定 IP 搭配 7~8 个浮动 IP 』的
		ADSL 拨接功能,也就是说同样透过一条电话线拨接到 ISP ,但是其中一个拨接是可以取得固定的 IP 呢!
		而其他的则是非固定的 IP ,DHCP 的 static/dynamic 跟这个玩意儿有点类似啦! ^_^<br /><br />
		</div>

		<hr /><li><span class=text_import1>关于租约所造成的问题∶</span></li>
		<div class=block2>
		怪了!如果我们观察上面 DHCP 运作模式的第二个步骤,您会发现最后面 DHCP 伺服器还有给予还有一个租约期限!
		干嘛还要这样的一个期限呢?其实设定期限还是有个优点啦!最大的优点就是可以避免 IP 
		被某些使用者一直占用著,但该使用者却是 Idle (发呆) 的状态!<br /><br />

		举个例子来说,我们刚刚不是说到,我有 150 个 IP ,但是偏偏我有 200 个用户吗?我们以 
		2006 年的世界杯足球赛来说明好了。假设每个使用者都急著上网知道世足赛的消息,
		那么某些热门对战时段网路将可能达到使用尖峰!也就是说,这 200 个人同时要来使用这 150 个 
		IP ,有可能吗?当然不可能!肯定会有 50 个人无法连线,因为『很抱歉!目前系统正在忙线中,请您稍后再拨!』<br /><br />

		那怎么办?这个时候租约到期的方式就很有用处啦!那几个已经连线进来很久的人,
		就会因为租约到期而被迫离线,这个时候该 IP 就会被释放出来,哈哈!大家赶快抢呀!先抢到先赢喔!
		所以,那 50 个人 (包括被迫离线的那个朋友) 只好继续的、努力的、加油的来进行 DHCP 的要求棉! ^_^""<br /><br />

		虽然说是优点,但是其实如果站在使用者的角度来看,还是可能会造成公愤的!凭什么大家一起交钱,
		我先连线进来就需要先被踢出去?~呵呵!所以棉,如果要当 ISP ,还是得要先规划好服务的方针才行呦!
		这样您可以了解租约到期的行为了吗?! ^_^ <br /><br />

		既然有租约时间,那么<span class=text_import2>是否代表我用 DHCP 取得的 IP 
		就得要『手动』的在某个时间点去重新取得新的 IP 呢?</span>不需要的啦!因为目前的 DHCP 
		用户端程式大多会主动的依据租约时间去重新申请 IP (renew) 的!也就是说在租约到期前你的 DHCP 
		用户端程式就已经又重新申请更新租约时间了。所以除非 DHCP 主机挂点,
		否则您所取得的 IP 应该是可以一直使用下去的!<br /><br />
		</div>

		<hr /><li><span class=text_import1>多部 DHCP 主机在同一物理网段的情况</span></li>
		<div class=block2>
		或许您曾经发现过一件事情,那就是当我的网域里面有两部以上的 DHCP 主机时,
		到底哪一部主机会设定我的这部电脑所发出的 DHCP 要求?呵呵!很抱歉,俺也不晓得!
		因为在网路上面,很多时候都是『先抢先赢』的, DHCP 的回应也是如此!当 Server1 先回应时,您使用的就是 
		Server1 所提供的网路参数内容,如果是 Server2 先回应,您就是使用 Server2 的参数来设定您的 
		PC !不过,前提之下当然是这些电脑的『物理连线』都是在一起的啊!<br /><br />
		</div>
	</div>

	<hr /><a NAME="theory_need"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">何时需要架设 DHCP 伺服器</span><br />
	<div class=block2>
		既然 DHCP 的好处是『免用户端设定』,而且对于行动装置的上网方面非常的方便!那么是否代表你就得要架设一部 
		DHCP 呢?那可不一定!接下来要告知大家的是几个概念性的问题,
		您倒不一定『必需』遵守底下的一些概念呢!反正,自己的网域自己『爽』就好啦!<br /><br />

		<li><span class=text_import1>使用 DHCP 的几个时机</span></li>
		<div class=block2>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -