📄 0340dhcp.htm
字号:
在某些情况之下,倒是强烈的建议架设 DHCP 主机的!什么情况呢?例如∶<br />
<ul>
<li><span class=text_import2>具有相当多行动装置的场合∶</span><br />
例如您的公司内部很多笔记型电脑 (笔电) 使用的场合!因为这种笔电本身就是移动性的装置,
如果每到一个地方都要去问人家『喂!您这边的网路参数是什么?』还得要担心是否会跟人家的
IP 相冲突等等的问题!这个时候,DHCP 可就是您的救星棉!</li><br />
<li><span class=text_import2>区域内电脑数量相当的多时∶</span><br />
另外一个情况就是您所负责的网域内电脑数量相当庞大时,
大到您没有办法一个一个的进行说明来设定他们自己的网路参数,这个时候为了省麻烦,还是架设
DHCP 来的方便呐!况且,维护一部您熟悉的 DHCP 主机,要比造访几十个不懂电脑的人要简单的多哩!^_^
</ul>
</div>
<li><span class=text_import1>不建议使用 DHCP 主机的时机</span></li>
<div class=block2>
虽然 DHCP 有很多好处,但是您有没有发现一个步骤怪怪的呀!回头看一下那个步骤一,
用户端在开机的时候会主动的发送讯息给网域上的所有机器,这个时候,如果网域上就是没有 DHCP
主机呢?很抱歉,那么您的这部用户端电脑,『仍然会持续的发送讯息!』
真正的时间与次数我不晓得会有多久,不过,肯定会超过 30 秒以上,
甚至可以达到一分钟以上!哇!那么这段时间您能干嘛?呵呵!除了等、还是等!
所以棉,如果电脑数不多,还是使用手动的方式来设定一下就好了!方便嘛!<br />
<ul><span class=text_import2>
<li>在您网域内的电脑,有很多机器其实是做为主机的用途,很少 Client 需求,那么似乎就没有必要架设 DHCP ;
<li>更极端的情况是,像一般家里,只有 3 ~ 4 部电脑,这个时候,架设 DHCP 只能拿来练练功力,事实上,并没有多大的效益;
<li>当您管理的网域当中,大多网路卡都属于老旧的型号,并不支援 DHCP 的协定时;
<li>很多使用者的资讯知识都很高,那么也没有需要架设 DHCP 啦。
</span></ul>
</div>
如前所述,上面的都是概念性的说法,事实上,一件事情的解决之道是有很多的方案的,
没有所谓的『完全正确』的方案,只有『相对可行、并且符合经济效益与功能』的方案!
所以棉,架设任何网站之前,请先多评估评估呐!<br /><br />
</div>
</div>
<hr /><a NAME="server"></a><img src="images/penguin-m.gif" alt="大标题的图示" height="34" width="25" align="middle" /><span class="text_h1">DHCP 伺服器端的设定</span><br />
<div class=block1>
事实上,目前市面上的 IP 分享器已经便宜到爆了!而 IP 分享器本身就含有 DHCP 的功能,
所以如果你只是想要单纯的使用 DHCP 在你的区域网路当中而已,那么建议你直接购买一部 IP 分享器来使用即可,
因为至少他很省电。如果你还有其他考量的话,才来架设 DHCP 吧!底下我们以一个简单的范例来架设 DHCP 先。<br /><br />
<hr /><a NAME="server_pkg"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">所需套件与套件结构</span><br />
<div class=block2>
DHCP 的套件需求很简单,就是只要伺服器端软体即可。所需套件为∶<br />
<ul><li><span class=text_import1>dhcp</span><br />
提供整个 DHCP 伺服器的主要设定档与启动的 script 及执行档等等重要资料。
</ul>
真的只要一个套件就好了,而且没有什么很重大的相依性问题呢!请拿出你的原版光碟用 rpm 来安装,
或者直接用 yum 线上安装也可以!档案很小啦!至于整个套件的结构是这样的∶<br />
<ul>
<li><span class=text_import1>/etc/dhcpd.conf</span><br />
这个就是 dhcp 伺服器的主要设定档咯!在某些 Linux 版本上头这个档案可能不存在,所以如果你确定有安装 dhcp
套件却找不到这个档案时,请手动自行建立他即可。这个档案的设定很简单啦,我们底下主要就是在谈这个档案的设定而已哩。
不过设定档的实际位置还是得要参考 /etc/init.d/dhcpd 的规范才是。<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"> 其实 dhcp 套件在释出的时候都会附上一个范例档案,你可以使用『 rpm -ql dhcp 』来查询到
dhcpd.conf.sample 这个范例档案,然后将该档案复制成为 /etc/dhcpd.conf 后,再手动去修改
/etc/dhcpd.conf 即可,这样设定比较容易咯!
</span></td><td><img src="../images/vbird_face.gif" /></td></tr></table></div>
<li><span class=text_import1>/usr/sbin/dhcpd</span><br />
启动整个 dhcp daemon 的执行档啊!其实最详细的执行方式应该要使用『 man dhcpd 』来查阅一番的呢!^_^</li><br />
<li><span class=text_import1>/var/lib/dhcp/dhcpd.leases</span><br />
这档案颇有趣的!我们前面原理部分不是有提到『租约』吗?DHCP
伺服器端与用户端租约建立的启始与到期日就是记录在这个档案当中的咯!</li>
</ul>
就跟你说很简单吧!整个套件资料也不过才如此而已呢!<br /><br />
</div>
<hr /><a NAME="server_dhcpd.conf"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">主要设定档 /etc/dhcpd.conf
的语法</span><br />
<div class=block2>
其实 DHCP 的设定很简单啊,只要将 dhcpd.conf 设定好就可以启动了。不过编辑这个档案时你必须要留意的是∶<br />
<ul><span class=text_import2>
<li>『 # 』为注解符号;
<li>除了括号那一行之外,其他的每一行后面都要以『 ; 』做为结尾!这是最容易出错的地方。
<li>通常设定的项目都有独特的名称,以∶『 <参数代号> <设定内容> 』来处理,例如∶<br />
default-lease-time 259200;
<li>某些设定项目必须以 option 来设定,基本方式为『 option <参数代码> <设定内容> 』例如∶<br />
option domain-name "your.domain.name";
</span></ul>
基本上,我们刚刚前面提过说,
DHCP 的 IP 分配可分为给予动态 IP 与静态 IP ,其中又需要了解的是,如果需要设定静态 IP
的话,那么就必须要知道要设定成静态 IP 的那部电脑的硬体位址 (MAC) 才行,请使用 arp 及
ifconfig 来查知您的介面的 MAC 吧!此外,我们需要设定的项目大概有几项∶<br />
<ul>
<li><span class=text_import2>整体设定 (Global)</span><br />
包括有租约期限、DNS 的 IP 位址、路由器的 IP 位址还有动态 DNS (DDNS) 更新的类型等等。
当静态 IP 及动态 IP 内没有规范到某些设定时,则以整体设定值为准。常使用参数有∶<br />
<ul>
<li style="padding: 10px 0 0 0"><span class=text_import2>default-lease-time 时间</span>∶<br />
预设的租约时间,后面的时间参数预设单位为秒;
<li style="padding: 10px 0 0 0"><span class=text_import2>max-lease-time 时间</span>∶<br />
最大租约时间,当用户端超过租约时间却尚未更新 IP 时,最长可以使用该 IP 的时间;
<li style="padding: 10px 0 0 0"><span class=text_import2>option domain-name "领域名称"</span>∶<br />
如果你在 /etc/resolv.conf 里面设定了一个『 search google.com 』的话,这表示当你要搜寻主机名称时,
DNS 系统会主动帮你加上这个领域名称的意思。所以这个设定参数也会修改 /etc/resolv.conf 喔!
<li style="padding: 10px 0 0 0"><span class=text_import2>option domain-name-servers IP1,
IP2</span>∶<br />这个设定参数可以修改用户端的
/etc/resolv.conf 档案!就是 nameserver 所接的那个 DNS IP 棉!特别注意设定参数最末尾为『servers』 (有 s 喔);
<li style="padding: 10px 0 0 0"><span class=text_import2>ddns-update-style 类型</span>∶<br />因为 DHCP
用户端所取得的 IP 通常是一直变动的,
所以某部主机的主机名称与 IP 的对应就很难处理。此时 DHCP 可以透过 ddns (请参考
<a href="0270dynamic_dns.php">合法主机名称</a> 与 <a href="0350dns.php">DNS 章节</a>的说明)
来更新主机名与 IP 的对应。不过我们这里不谈这么复杂的东西,所以你可以将他设定为 none 喔。
<li style="padding: 10px 0 0 0"><span class=text_import2>option routers 路由器的位址</span>∶<br />
设定路由器的 IP 所在,记得那个『 routers 』要加 s 才对!</li>
<li style="padding: 10px 0 0 0"><span class=text_import2>option broadcasst-address 广播位址</span>∶<br />
设定广播位址而已。如果没有设定的话,系统应该会自动依据 class A, B, C 的原则来计算出广播位址吧!</li>
</ul><br />
<li><span class=text_import2>动态 IP 分配设定∶</span><br />
用来设定随机给予 IP 的方式,只要给予网域 (network 以及 netmask) 配合 range 这个参数就能够给予限制的 IP 范围了。
设定方式并不怎么难啊。</li><br />
<li><span class=text_import2>静态 IP 的设定方式∶</span><br />
透过硬体位址 (MAC) 来处理 IP 的取得。使用的是 host 这个设定参数,
配合底下两个常见的参数值来处理∶<br />
<ul>
<li style="padding: 10px 0 0 0"><span class=text_import2>hardware ethernet 硬体位址</span>∶<br />
利用网路卡上面的固定硬体位址来设定,亦即该设定仅针对这个硬体位址有效的意思;</li>
<li style="padding: 10px 0 0 0"><span class=text_import2>fixed-address IP位址</span>∶<br />
给予一个固定的 IP 位址的意思。
</ul>
</ul>
说再多也没有什么用啦!让我们实际来玩一个案例吧!你就知道该如何处理了。<br /><br />
</div>
<hr /><a NAME="server_case"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">一个区域网路的 DHCP 伺服器设定案例</span><br />
<div class=block2>
假设我的环境当中,Linux 伺服器除了 NAT 主机之外还得要负责其他伺服器,例如邮件伺服器的支援。
而在后端区域网路中则想要提供 DHCP 的服务。整个硬体配置的情况如同下图所示∶<br /><br />
<a name="fig_01"></a><center><img src="0340dhcp/lan.png"
title="区域网路的实体连接情况"
alt="区域网路的实体连接情况"><br />
图一、区域网路的实体连接情况</center><br />
如上图所示,假设我的 Linux 有两块介面,其中 eth0 对内而 eth1 对外,至于其他的网路参数设计为∶<br />
<ul>
<li>内部网段设定为 192.168.1.0/24 这一段,且 router 为 192.168.1.254 ,此外, DNS 主机的 IP
为中华电信的 168.95.1.1 及 Seednet 的 139.175.10.20 这两个;
<li>我想要让每个使用者预设租约为 3 天,最长为 6 天;
<li>只想要分配的 IP 只有 192.168.1.21 到 192.168.1.100 这几个,其他的 IP 则保留下来;
<li>我还有一部主机,他的 MAC 是『 00:40:95:30:43:B4 』,我要给他的主机名称为 vbird-inside ,且 IP 为 192.168.1.5 这个。
</ul>
则我的设定档就会像底下这个样子了∶<br />
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>vi /etc/dhcpd.conf</span>
<span class=term_write><span class=term_say># 1. 整体的环境设定
# 当底下的 subnet 与 host 没有设定时,以这里的设定值为准喔!</span>
ddns-update-style none; <span class=term_say><==不要更新 DDNS 的设定</span>
default-lease-time 259200; <span class=term_say><==预设租约为 3 天</span>
max-lease-time 518400; <span class=term_say><==最大租约为 6 天</span>
option routers 192.168.1.254; <span class=term_say><==这就是预设路由</span>
option broadcast-address 192.168.1.255; <span class=term_say><==这是广播位址啊</span>
option domain-name-servers 168.95.1.1, 139.175.10.20;
<span class=term_say># 上面是 DNS 的 IP 设定,这个设定值会修改用户端的 /etc/resolv.conf 档案内容!
# 此外,你可以设定多部 DNS 主机,不过必须要以逗号『 , 』分隔开才行。</span>
<span class=term_say># 2. 关于动态分配的 IP</span>
<span class=term_say># Network_IP↓ Netmask_IP↓</span>
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.21 192.168.1.100; <span class=term_say><==分配的 IP 范围</span>
option subnet-mask 255.255.255.0; <span class=term_say><==可重复设定 netmask 位址</span>
option nis-domain "vbird.tsai"; <span class=term_say><==额外给的 NIS 相关参数</span>
option domain-name "vbird.tsai"; <span class=term_say><==在 /etc/resolv.conf 给一个搜寻领域</span>
<span class=term_say># 3. 关于静态的 IP 啊!</span>
<span class=term_say># 主机名称↓</span>
host vbird-inside {
hardware ethernet 00:40:95:30:43:B4; <span class=term_say><==用户端网卡 MAC</span>
fixed-address 192.168.1.5; <span class=term_say><==给予固定的 IP</span>
}
}</span>
<span class=term_say># 相关的设定参数意义,请查询前一小节的介绍,或者 man dhcpd.conf</span>
</pre></td></tr></table>
够简单吧!这样就设定好了!你可以复制上头的资料然后修改一下,让里头的 IP 参数符合你的环境,
就能够设定好你的 DHCP 伺服器了。接下来理论上你就能够启动 dhcp 了。不过,在某些早期的 Linux distribution 上面,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -