现在的位置: 首页 > 综合 > 正文

Linux系统管理实践(9):DHCP服务器配置

2014年01月19日 ⁄ 综合 ⁄ 共 7143字 ⁄ 字号 评论关闭

    一般来讲,如果你有一个有线调制解调器或者数字用户线路,你就可以使用家里的电脑获取由你的服务提供商动态分配的IP地址。如果在调制解调器和本地网络之间安装了有线/数字用户线路的路由器,你的电脑很有可能是在启动过程中从路由器获取了IP地址。你也可以选择禁用本地路由器中DHCP服务器的功能,而设置一个Linux机器作为DHCP服务器。
    首先要安装dhcp服务器。在RedHat/Fedora中,DHCP服务器的RPM包的命名往往以dhcp开始,后跟一个版本号,比如这样dhcp-3.0.1rc14-1.i386.rpm。对 Debian/Ubuntu来说软件包名称可能也包含版本号. 用 dpkg --list | grep dhcp 来查询到一个所有dhcp软件包的列表,从而找到dhcp服务器的软件包名称(比如dhcp3-server)。为了方便,我们可以将dhcp的服务器和客户端同时安装。
    1、DHCP的配置文件:
RedHat/Fedora下为/etc/dhcpd.conf,在Debian/Ubuntu下为/etc/dhcp3/dhcpd.conf。内容如下:

    其他的一些常用选项:
ignore client-updates;              # 忽略客户端更新
option subnet-mask 255.255.255.0;   # 设置客户端子网掩码
option ip-forwarding off;           # 不从一个网口向另一个网口转发DHCP请求
option nis-domain “fengzl.com”;     # 设置客户端NIS域名
option time-offset -18000;          # 设置与格林威治时间的偏移时间(秒)
option nntp-server 192.168.1.100;   # 设置客户端NTP服务器
option netbios-name-servers 192.168.1.100;   # 设置客户端WINS服务器
nest-server marvin.redhat.com;      # 设置用于定义服务器从引导文件中装入的主机名, 用于无盘工作站
    还有许多其他选项来配置DHCP,包括告诉DHCP客户端哪里提供finger以及IRC服务。在安装后请用man dhcp-options查看其手册页。特别要说明的是,dhcpd.conf文件里面的host指令非常有用。像网络上打印机这样一些设备默认是通过DHCP获得IP地址的,但是用户可以用固定IP地址区访问。这个指令可以用来为一个已经预先知道网卡MAC地址的DHCP客户端提供静态IP地址。这可以降低系统管理开销。
    2、客户租期数据库文件/var/lib/dhcp/dhcpd.leases:
要运行DHCP服务器,还需要一个客户租期数据库文件/var/lib/dhcp/dhcpd.leases,该文件初始为空,且无需管理员手工配置,但管理员可以浏览此文件查看DHCP服务器的运行情况。文件包含租期声明,每次一个租期被获取,更新或释放,它的新值就被记录到文件的末尾。文件的格式可参考dhcpd.leases(5) manual page。注意dhcpd.leases的时间记录采用GMT(格林威治)时间,而不是本地时区的时间,要查看GMT时间用date –u。Ubuntu中dhcpd.leases内容如下:

    在一些旧版本的RedHat/Fedora上,可能没有dhcpd.leases文件,可用命令touch /var/lib/dhcp/dhcpd.leases去创建一个。
    配置完后,服务器上要启动或重启DHCP,RedHat/Fedora下用命令service dhcpd start、service dhcpd stop、service dhcpd restart,为指定的网络接口启动DHCP服务器可用echo “DHCPDARGS=eth0” >> /etc/sysconfig/dhcpd。配置DHCP在电脑启动时自动运行用chkconfig dhcpd on。在Debian/Ubuntu上可用sudo /etc/init.d/dhcp3-server start等命令,配置DHCP在电脑启动时自动运行用sysv-rc-conf dhcpd3-server on。
    最后,要记住客户端电脑要把网卡配置为用DHCP来获得它的IP地址。可用命令iface eth0 inet dhcp,或者直接修改/etc/network/interfaces文件。对于Windows客户端,Windows默认对所有网口使用DHCP,所以你不用担心需要重新配置。
    以上就是DHCP常用配置,实际应用DHCP还要考虑IP分配的一些策略问题,同时要保证网络的健壮性,必须至少要有两台DHCP服务器一起工作,如果一台出了故障,另一台可以继续为DHCP客户服务。然而目前DHCP协议里并没有能让两台DHCP服务器协同工作的机制,不能保证分配的地址的唯一性,所以这两台DHCP服务器里的可分配地址空间必须进行调整,不能有交叉重复的IP地址。
    3、配置实例:

    我的实验室是校园网内的一个局域网,有30台主机,因此主机地址部分有一个字节足够了。我把它配置成一个C类子网,网络地址为192.168.0.0(是一个私有地址,专门为组织机构内部使用,并不是一个在Internet上公开的地址),子网掩码为255.255.255.0。子网的广播地址为192.168.0.255,默认网关为192.168.0.1(即局域网内的路由器的LAN口地址,而WAN口地址则为局域网外的某台路由器地址或ISP提供的地址),局域网内各个主机的网关都应该指向这个地址,表示数据包直接通过这个路由器进来或出去。指定的动态IP地址范围为192.168.0.100~192.168.0.199。对网内的主机laptop-zhou做MAC和IP地址绑定,绑定的IP地址不应该在动态IP地址范围内。配置好后的dhcpd.conf文件如下:

    4、有多个网卡的DHCP服务器:
当一台被配置为动态获得IP(DHCP)的电脑启动时,他向DHCP服务器申请一个IP地址。这是通过向DHCP服务器发送一个标准的DHCP申请实现的。这个申请是一个广播桢,源IP地址为255.255.255.255。如果你的DHCP服务器有多个网络接口,你必须为这个255.255.255.255添加一条路由表项,让服务器进程知道往哪个接口发送回应;否则,回应会被发往默认网关(我们假设DHCP请求来自接口eth0)。注意你不能在多个网口上运行多个DHCP服务器,因为网络255.255.255.255只能有一个路由表项。如果你一定要这样,你会发现DHCP服务器只在一个网口上工作。你可以用命令route add -host 255.255.255.255 dev eth0为255.255.255.255添加一个临时路由项。
    5、使用一个DHCP服务器为多个网络服务:
DHCP客户端发送一个请求IP地址的广播桢,而广播桢是被限制在局域网里面的。这本来意味着每个子网都需要一个DHCP服务器。但是,可以通过配置路由器向许多跳之外的DHCP服务器转发DHCP请求。这是通过将路由器在DHCP客户端接口的IP地址插入到转发的桢里面。对于DHCP服务器,非空的路由器的IP地址优先于广播地址考虑,并向该地址提供对DHCP客户端很重要的IP地址。DHCP服务器用一个广播桢响应,而记录了原先的DHCP请求的路由器再把这个响应桢转发给DHCP客户端。你可以用 ip helper-address 命令让Cisco路由器在所有有DHCP客户端的接口中启用该功能。下面是一个配置实例,DHCP服务器的地址为192.168.36.25:

    6、简单的DHCP故障排解:
DHCP最常见的问题常跟服务器无关;在服务器端被正确配置之后就没必要作任何更改,服务器会运行的很好。问题常常由客户端各种各样的原因导致。
    (1)DHCP客户端包含169.254.0.0地址:当Microsoft DHCP客户端找不到DHCP服务器,他们就会默认从169.254.0.0网络中选择一个IP地址,直到找到DHCP服务器为止,这常被称为Automatic Private IP Addressing(APIPA)。你可以采取一下步骤解决该问题:
    * 确定DHCP服务器配置正确并使用先前讲到的 pgrep 命令来确定DHCP服务器进程在运行。特别注意 255.255.255.255 路由项,尤其当你有多个网口时。
    * 从DHCP服务器能够分配的IP地址里面选一个给DHCP客户端,然后看客户端能不能ping通DHCP服务器。如果不能,再次检查线缆与网卡。
    * DHCP使用BOOTP协议在客户端与服务器间交换信息。确定防火墙没有阻止通信。DHCP服务器在UDP端口67接收请求,DHCP客户端在UDP端口68等待响应,在服务器网卡上使用tcpdump检查通信数据流是否正确。
    (2)DHCP服务器无法启动:常见的原因有/etc/dhcpd.conf文件配置错误,例如没有定义DHCP服务器负责的网络;防火墙阻止了依赖于UDP端口67和68的 DHCP bootp协议;当客户端位于另外一个网络时,路由器没有转发DHCP服务器的bootp数据包;等等。经常地查看/var/logs/messages文件以确定是否有DHCP错误发生,同时记得当你升级操作系统的时候寄存在配置文件里的关键字可能改变。经常查阅版本发布通知以确保关键字没有改变。

抱歉!评论已关闭.