|
最近更新日期:2011年07月27日
12.2 DHCP 服务器端的设定
12.2.1 所需软件与档案结构 12.2.2 主要配置文件 /etc/dhcp/dhcpd.conf 的语法 12.2.3 一个局域网络的 DHCP 服务器设定案例 12.2.4 DHCP 服务器的启动与观察 12.2.5 内部主机的 IP 对应 大标题的图示12.2 DHCP 服务器端的设定 事实上,目前市面上的 IP 分享器已经便宜到爆了!而 IP 分享器本身就含有 DHCP 的功能。
所以如果你只是想要单纯的使用 DHCP 在你的局域网络当中而已,那么建议你直接购买一部 IP 分享器来使用即可,
因为至少它很省电。如果你还有其他考虑的话,才来架设 DHCP 吧!底下我们以一个简单的范例来架设 DHCP 先。 小标题的图示12.2.1 所需软件与档案结构 DHCP 的软件需求很简单,就是只要服务器端软件即可,在 CentOS 6.x 上面,这个软件的名称就是 dhcp 啰!如果是默认安装,那么这个软件是不会安装的,请自行使用 yum 去装好这个软件吧!安装完毕之后, 你可以使用『 rpm -ql dhcp 』来看看这个软件提供了哪些档案,基本上,比较重要的档案数据如下:
就跟你说很简单吧!整个软件数据也不过才如此而已呢! 小标题的图示12.2.2 主要配置文件 /etc/dhcp/dhcpd.conf 的语法 在 CentOS 5.x 以前,这个档案都被放置到 /etc/dhcpd.conf 的,新版的才放置于此处。其实 DHCP 的设定很简单啊,只要将 dhcpd.conf 设定好就可以启动了。不过编辑这个档案时你必须要留意底下的规范:
基本上,我们刚刚前面提过说, DHCP 的 IP 分配可分为给予动态 IP 与固定 IP ,其中又需要了解的是,
如果需要设定固定 IP 的话,那么就必须要知道要设定成固定 IP 的那部计算机的硬件地址
(MAC) 才行,请使用 arp 或 ifconfig 来查知你的接口的 MAC 吧!好了,那么需要设定的项目有哪些呢?
其实 dhcpd.conf 里头的设定主要分为两大项目,一个是服务器运作的整体设定 (Global) 一个是 IP 设定模式 (动态或固定),
每个项目的设定值大概有底下这几项:
假设你的 dhcpd 只管理一个区段的区网,那么除了 IP 之外的许多网络参数就可以放在整体设定的区域中,这包括有租约期限、DNS 主机的 IP 地址、路由器的 IP 地址还有动态 DNS (DDNS) 更新的类型等等。当固定 IP 及动态 IP 内没有规范到某些设定时,则以整体设定值为准。这些参数的设定名称为:
由于 dhcpd 主要是针对局域网络来给予 IP 参数的,因此在设定 IP 之前,我们得要指定一个区网才行。 指定区网的方式使用如下的参数: subnet NETWORK_IP netmask NETMASK_IP { ... }我们知道区网要给予 network / netmask IP 这两个参数才行,例如之前谈过的: 192.168.100.0 / 255.255.255.0 这样的设定值。 上头设定值当中, subnet 与 netmask 是关键词,而大写部分就填上你的区网参数啰。那在括号内还有什么参数需要设定的? 那就是到底 IP 是固定的还是动态的设定啊:
小标题的图示12.2.3 一个局域网络的 DHCP 服务器设定案例 假设我的环境当中,Linux 主机除了 NAT 服务器之外还得要负责其他服务器,例如邮件服务器的支持。 而在后端局域网络中则想要提供 DHCP 的服务。整个硬件配置的情况就如同第三章的图 3.2-1所示的内部独立区网 (centos.vbird 网域)。 需要注意的是,在图中 Linux Router 有两块接口,其中 eth1 对内而 eth0 对外,至于其他的网络参数设计为:
那我的配置文件就会像底下这个样子了: [root@www ~]# vim /etc/dhcp/dhcpd.conf # 1. 整体的环境设定 ddns-update-style none; <==不要更新 DDNS 的设定 ignore client-updates; <==忽略客户端的 DNS 更新功能 default-lease-time 259200; <==预设租约为 3 天 max-lease-time 518400; <==最大租约为 6 天 option routers 192.168.100.254; <==这就是预设路由 option domain-name "centos.vbird"; <==给予一个领域名 option domain-name-servers 168.95.1.1, 139.175.10.20; # 上面是 DNS 的 IP 设定,这个设定值会修改客户端的 /etc/resolv.conf 档案内容 # 2. 关于动态分配的 IP subnet 192.168.100.0 netmask 255.255.255.0 { range 192.168.100.101 192.168.100.200; <==分配的 IP 范围 # 3. 关于固定的 IP 啊! host win7 { hardware ethernet 08:00:27:11:EB:C2; <==客户端网卡 MAC fixed-address 192.168.100.30; <==给予固定的 IP } } # 相关的设定参数意义,请查询前一小节的介绍,或者 man dhcpd.conf 够简单吧!这样就设定好了!你可以复制上头的数据然后修改一下,让里头的 IP 参数符合你的环境, 就能够设定好你的 DHCP 服务器了。接下来理论上你就能够启动 dhcp 了。不过,在某些早期的 Linux distribution 上面, 当你的 Linux 主机具有多个接口时,你的一个设定可能会让多个接口同时来监听,那就可能会发生错误了。 举例来说,我们现在的设定是 192.168.100.0/24 这个在 eth1 上头的网域,假设你还有一个界面 eth2 在 192.168.2.0/24 好了, 那万一你的 DHCP 同时监听两块接口的话,想一想,如果 192.168.2.0/24 网域的客户端发送出 dhcp 封包的要求时, 他会取得什么 IP ?当然是 192.168.100.X !所以啰,我们就得要针对 dhcpd 这个执行文件设定他监听的接口, 而不是针对所有的接口都监听啊!你说是吧!^_^!那如何处理呢?在 CentOS (Red Hat 系统) 可以这样做: [root@www ~]# vim /etc/sysconfig/dhcpd DHCPDARGS="eth0" 不过这个动作在 CentOS 5.x 以后的版本上面已经不需要了,因为新版本的 dhcp 会主动的分析服务器的网段与实际的 dhcpd.conf 设定, 如果两者无法吻合,就会有错误提示,人性化多了。 ^_^!接下来我们可以开始启动 dhcp 试看看啰! 小标题的图示12.2.4 DHCP 服务器的启动与观察 开始来启动 dhcp 吧!在启动前你得要注意几件事情喔:
另外你要注意的是:dhcpd 使用的埠口是 port 67 ,并且启动的结果会记录在 /var/log/messages 档案内,你最好能去观察一下 /var/log/messages 所显示的 dhcpd 相关信息才好。 # 1. 启动后观察一下埠口的变化: [root@www ~]# /etc/init.d/dhcpd start [root@www ~]# chkconfig dhcpd on [root@www ~]# netstat -tlunp | grep dhcp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address PID/Program name udp 0 0 0.0.0.0:67 0.0.0.0:* 1581/dhcpd # 2. 固定去看看登录文件的输出信息 [root@www ~]# tail -n 30 /var/log/messages Jul 27 01:51:24 www dhcpd: Internet Systems Consortium DHCP Server 4.1.1-P1 Jul 27 01:51:24 www dhcpd: Copyright 2004-2010 Internet Systems Consortium. Jul 27 01:51:24 www dhcpd: All rights reserved. Jul 27 01:51:24 www dhcpd: For info, please visit https://www.isc.org/software/dhcp/ Jul 27 01:51:24 www dhcpd: WARNING: Host declarations are global. They are not limited to the scope you declared them in. Jul 27 01:51:24 www dhcpd: Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file Jul 27 01:51:24 www dhcpd: Wrote 0 deleted host decls to leases file. Jul 27 01:51:24 www dhcpd: Wrote 0 new dynamic host decls to leases file. Jul 27 01:51:24 www dhcpd: Wrote 0 leases to leases file. Jul 27 01:51:24 www dhcpd: Listening on LPF/eth1/08:00:27:2a:30:14/192.168.100.0/24 Jul 27 01:51:24 www dhcpd: Sending on LPF/eth1/08:00:27:2a:30:14/192.168.100.0/24 ....(以下省略).... 看到这些资料就是成功的象征啦!尤其是上述有特殊字体的部分。恭喜你啊!真是『福气啦!』不过, 万一你看到的登录档是类似底下的模样呢? Jul 27 01:56:30 www dhcpd: /etc/dhcp/dhcpd.conf line 7: unknown option dhcp.domain-name-server Jul 27 01:56:30 www dhcpd: option domain-name-server#011168. Jul 27 01:56:30 www dhcpd: ^ Jul 27 01:56:30 www dhcpd: /etc/dhcp/dhcpd.conf line 9: Expecting netmask Jul 27 01:56:30 www dhcpd: subnet 192.168.100.0 network Jul 27 01:56:30 www dhcpd: ^ Jul 27 01:56:30 www dhcpd: Configuration file errors encountered -- exiting 上述的数据表示在第 7, 9 行恐怕有点设定错误,设定错误的地方在行号底下还有指数符号 (^) 特别标注出来! 由上面的情况来看,第 7 行的地方应该是 domain-name-servers 忘了加 s 了,而第 9 行则是参数下错, 应该是 netmask 而非 network !这样了解乎? 小标题的图示12.2.5 内部主机的 IP 对应 如果你有仔细的瞧过第二章的网络基础的话,那么应该还会记得那个 /etc/hosts (第四章 4.4.1) 会影响内部计算机在联机阶段的等待时间吧?那么我现在使用 DHCP 之后,糟糕!我怎么知道哪一部 PC 连上我的主机,那要怎么填写 /etc/hosts 的内容呢?这真是太简单了!就将所有可能的计算机 IP 都加进去该档案呀! ^_^ !以鸟哥为例,在这个例子中,鸟哥的分配的 IP 至少有 192.168.100.30, 192.168.100.101 ~ 192.168.100.200 ,所以 /etc/hosts 可以写成: [root@www ~]# vim /etc/hosts 127.0.0.1 localhost.localdomain localhost 192.168.100.254 vbird-server 192.168.100.30 win7 192.168.100.101 dynamic-101 192.168.100.102 dynamic-102 ....(中间省略).... 192.168.100.200 dynamic-200 这样一来,所有可能连进来的 IP 都已经有纪录了,哈哈!当然没有什么大问题啰! ^_^!不过, 更好的解决方案则是架设内部的 DNS 服务器,这样一来,内部的其他 Linux 服务器也不必更改 /etc/hosts 就能够取得每部主机的 IP 与主机名对应,那样就更加妥当啦! |
本网页主要以Firefox配合解析度 1024x768 作为设计依据 鸟哥自由软件整合应用研究室