快捷搜索:  

Linux应用 DHCP服务器的安装和故障排除(2)

# Command line options here

DHCPDARGS=eth0

如果有一个带有两块网卡的防火墙机器,这种方法就会大派用场。一块网卡可以被配置成DHCP客户端从互联网上检索IP地址;另一块网卡可以被用做防火墙之后的内部网络的DHCP服务器。仅指定连接到内部网络的网卡使系统更加安全,因为用户无法通过互联网来连接其守护进程。

其他可在/etc/sysconfig/dhcpd中指定的命令行选项如下。

(1)-p<portnum>:指定dhcpd应该监听的UDP端口号码,默认值为67。DHCP服务器在比指定的UDP端口大一位的端口号上把回应传输给DHCP客户端。例如,如果使用默认端口67,服务器就会在端口67上监听请求,然后在端口68上回应客户。如果在此处指定了一个端口号,并且使用了DHCP转发代理,所指定的DHCP转发代理所监听的端口必须是同一端口。

(2)-f:把守护进程作为前台进程运行,在调试时最常用。

(3)-d:把DCHP服务器守护进程记录到标准错误描述器中,在调试时最常用。如果未指定,日志将被写入/var/log/messages中。

(4)-cf<filename>:指定配置文件的位置,默认为/etc/dhcpd.conf。

(5)-lf<filename>:指定租期数据库文件的位置。如果租期数据库文件已存在,在DHCP服务器每次启动时使用同一个文件至关重要。建议只在无关紧要的机器上为调试目的才使用该选项,默认为/var/lib/dhcp/dhcpd.leases。

(6)-q:在启动该守护进程时,不要显示整篇版权信息

5.管理DHCP服务器端口

常见的DHCP服务器是dhcpd,可以通过命令行设定其监听端口。例如,使用以下命令:

#dhcpd eth0

该命令允许dhcpd进程只在eth0网络端口上工作,默认为监听所有端口。由于DHCP同样使用67和68端口通信,所以更改该端口将造成DHCP服务无法正常使用。

设置DHCP客户端

1.在Linux下配置DHCP客户端

配置DHCP客户端的第1步是确定内核能够识别网卡,多数网卡会在安装过程中被识别,系统会为该网卡配置恰当的内核模块。如果在安装后添加了一块网卡,Kudzu应该会识别它,并提示为其配置相应的内核模块。通常网管员选择手工配置DHCP客户端,需要修改/etc/sysconfig/network文件来启用联网;修改/etc/sysconfig/network-scripts目录中每个网络设备的配置文件,在该目录中的每种设备都有一个叫做“ifcfg-eth?”的配置文件。eth?是网络设备的名称,如eth0等。如果想在引导时启动联网,NETWORKING变量必须被设为yes。除此之外,/etc/sysconfig/network文件应该包含以下行:

NETWORKING=yes

DEVICE=eth0

BOOTPROTO=dhcp

ONBOOT=yes

每种需要配置使用DHCP的设备都需要一个配置文件。其他网络脚本包括的选项如下。

(1)DHCP_HOSTNAME:只有当DHCP服务器在接收IP地址前需要客户端指定主机名时才使用该选项。

(2)PEERDNS=<answer>:<answer>取值为如下之一。

yes:使用来自服务器的信息来修改/etc/resolv.conf。若使用DHCP,那么yes是默认值。

no:不要修改/etc/resolv.conf。

(3)SRCADDR=<address>:<address>是用于输出包的指定源IP地址。

(4)USERCTL=<answer>:<answer>取值为如下之一。

 yes:允许非根用户控制该设备。

no:不允许非根用户控制该设备。

  2.在Windows下设置DHCP客户端

Windows 2000和Windows XP的配置方法相同,DHCP客户端的配置很简单。只需要在“控制面板”中双击“网络连接”图标,然后在如图8-1所示的“本地连接属性”对话框中选择“Internet协议(TCP/IP)”属性。

“常规”选项卡中选择“自动获取IP地址”和“自动获取DNS服务器地址”单选按钮。

3.测试端口监督程序

现在应该已经可以将一个客户机接入到网络中,并通过DHCP请求一个IP地址。要通过Windows客户端测试,在DOS提示符下执行以下操作。  (1)清除适配器可能已经拥有的IP地址信息,执行命令:

ipconfig /release

(2)向DHCP服务器请求一个新的IP地址,执行命令:

ipconfig /renew

显示从DHCP服务器获得的信息,应该会看到Primary WINS Server、DNS Servers和Connection-specific DNS Suffix域都获得了dhcpd.conf文件中提供的数据:

ipconfig /all

DHCP服务器的故障排除

通常配置DHCP服务器很容易,有一些技巧可以帮助避免出现问题。对服务器而言,要确保网卡正常工作并具备广播功能;对客户端而言,要确保网卡正常工作。最后,要考虑网络的拓扑,以及客户端向DHCP服务器发出的广播消息是否会受到阻碍。另外,如果dhcpd进程没有启动,那么可以浏览syslog消息文件来确定是哪里出了问题,这个消息文件通常是/var/ log/messages。

客户端无法获取IP地址

DHCP服务器配置完成且没有语法错误,但是网络中的客户端却无法取得IP地址。这通常是由于Linux DHCP服务器无法接收来自255.255.255.255的DHCP客户端的request封包造成的,一般是Linux DHCP服务器的网卡没有设置MULTICAST功能。为了让dhcpd(dhcp程序的守护进程)能够正常地和DHCP客户端沟通,dhcpd必须传送封包到255.255.255.255这个IP地址。但是在有些Linux系统中,255.255.255.255这个IP地址被用来作为监听区域子网域(local subnet)广播的IP地址。所以需要在路由表(routing table)中加入255.255.255.255以激活MULTICAST功能,执行命令:

route add -host 255.255.255.255 dev eth0

如果报告错误消息:

255.255.255.255:Unkown host

那么修改/etc/hosts,加入如下行:

255.255.255.255 dhcp

DHCP客户端程序和DHCP服务器不兼容

由于Linux有许多发行版本,不同版本使用的DHCP客户端和DHCP服务器程序也不相同。Linux提供了4种DHCP客户端程序,即pump、dhclient、dhcpxd和dhcpcd。了解不同Linux发行版本的服务器端和客户端程序对于排除常见错误是必要的,如果使用SuSE Linux 9.1 DHCP服务器和使用Mandrake Linux 9.0客户端不兼容的情况,则必须更换客户端程序。方法是停止客户端的网络服务,卸载原程序,然后安装和服务器端兼容的程序。表8-4所示为主要Linux发行版本使用的DHCP客户端。

主要Linux发行版本使用的DHCP客户端

发行版本

默认DHCP客户端

可选DHCP客户端

DHCP客户端启动脚本

附加配置文件

RHEL 4.0

dhclient

/sbin/ifup

/etc/sysconfig/network

/etc/sysconfig/network-scripts/ifcfg-eth0

Debian Linux 3.0

dhclient

/sbin/ifup

/etc/network/interfaces

/etc/dhclient.conf

Mandrake Linux 9.1

dhclient

dhcpcd、dhcpxd和pump

/sbin/ifup

/etc/sysconfig/network

/etc/sysconfig/network-scripts/ifcfg-eth0

/etc/dhclient-eth0.conf

SuSE Linux 9.1

dhcpcd

dhclient

/sbin/ifup-dhcp

/etc/sysconfig/network/dhcp

/etc/sysconfig/network/ifcfg-eth0

管理监控DHCP服务器

/etc/dhcpd.conf通常包括3个部分,即parameters、declarations和option,共40多个参数,可以使用Gdhcpd管理监控DHCP服务器。

Gdhcpd是一个在GNOME及KDE桌面环境下的DHCP管理工具,基本上能实现命令行模式下的所有功能。由于DHCP是一个非常复杂的协议,所以配置工作也是比较麻烦的。

Gdhcpd是一套在GTK+图形界面下开发并用于帮助管理员在桌面环境下完成DHCP设置工作的DHCP前端程序。通过Gdhcpd,网络管理员可以管理DHCP,包括启动及停止DHCP服务器的服务。也可以直接修改配置文件,或决定系统重新启动的时间。几乎所有与DHCP相关的功能都能使用Gdhcpd直接完成。

1.下载安装

#Wget linux/gdhcpd/gdhcpd-0.2.9.tar.gz">http://mange.dynalias.org/linux/gdhcpd/gdhcpd-0.2.9.tar.gz

2.系统要求

硬件要求为中央处理器兼容Intel X86处理器,PentiumII 400以上,64 MB(推荐128 MB)内存,150 MB以上硬盘空间,显示内存4 MB。软件要求为内核版本基于2.4或以上,GNOME 1.2以上。桌面分辨率至少为640×480,桌面颜色至少65 000色(16位元)。

3.安装前的准备工作

安装过程中需要编译,因此需要GCC(2.96以上)、Qt(2.0以上)和GTK+2.0支持,需要使用RPM来确认:

rpm -qa | grep gcc;rpm -qa | grep qt;rpm -qa | grep gtk+

4.在命令行下安装软件

命令如下:

gunzip  gdhcpd-0.2.9.tar.gz

tar vxf gdhcpd-0.2.9.tar

cd gdhcpd-0.2.9

./configure;make;make install

5.运行软件

执行一个终端运行命令“/usr/sbin/gdhcpd”,显示Scopes设置界面,如图所示。

22
Scopes设置界面

在这个界面中可以设置/etc/dhcpd.conf的parameters、declarations及option。在Single hosts界面中可以设置Hostname和Hardware address等,

0
 Single hosts设置界面

供备份的DHCP设置

在中型网络中,数百台计算机的IP地址的管理是一个大问题。为了解决这个问题,相信许多校园网网管会使用DHCP来动态地为客户端分配IP地址。但是这同样意味着如果DHCP服务器因为某种原因瘫痪,DHCP服务自然也就无法使用。客户端也就无法获得正确的IP地址,从而影响整个网络的运行。为解决这个问题,配置两台以上的DHCP服务器即可。如果其中的一台DHCP服务器故障,另外一台DHCP服务器就会自动承担分配IP地址的任务。对于用户来说,这个过程是透明的,他们并不知道DHCP服务器的变化。

另外,在一个具备多个子网的网络中,提供冗余是一个非常重要的方法。由于DHCP中DHCP服务器负责分配IP地址,一旦DHCP服务器出现故障,那么所有的客户端就无法正确获得IP地址,从而不能访问网络。

可以同时设置多台DHCP服务器来提供冗余,然而Linux的DHCP服务器本身不提供备份。它们占用的IP地址资源也不能重叠,以免发生客户端IP地址冲突的现象。提供容错能力即通过分割可用的IP地址到不同的DHCP服务器上,多台DHCP服务器同时为一个网络服务,从而使得一台服务器发生故障还能正常执行操作。通常为了进一步增强可靠性,还可以将不同的DHCP服务器放置在不同子网中,互相使用中转提供服务。

例如,在两个子网中各自有一台DHCP服务器。标准的做法可以不使用DHCP中转,各子网中的服务器为各个子网服务。然而为了达到容错的目的,可以互相为另一个子网提供服务,通过设置中转或路由器转发广播以达到互为服务的目的。

例如,位于192.168.3.0网络上的srv1的配置文件片段为:

subnet 192.168.3.0 netmask 255.255.255.0 {

  range 192.168.3.10 192.168.3.199;

  }

  subnet 192.168.4.0 netmask 255.255.255.0 {

range 192.168.4.200 192.168.4.220;

}

位于192.168.4.0网络上的srv2的配置文件片段可能为:

subnet 192.168.4.0 netmask 255.255.255.0 {

range 192.168.4.10 192.168.4.199;

}subnet 192.168.3.0 netmask 255.255.255.0 {

 range 192.168.3.200 192.168.3.220;

}

注意:上述设置都是设置样例,标准情况下还需分别指定各option,用于设置IP地址及其相关设置。

可以看出两台服务器都能为两个网络上的客户端分配IP地址,而各自又有一个主要服务的网络。每个网络上的IP地址主要放在本地的服务器上,但也有少部分地址放在另一台子网中的服务器中(地址资源不能冲突),这样提供了一定的容错能力。实际上在多子网网络中,没有必要每个子网设置一台服务器,并使用另外的服务器备份。一般网络中有2台~3台DHCP服务器即可。其他子网可以通过DHCP中转的方式,为该子网提供DHCP服务。

以debug模式运行DHCP服务器

执行命令如下:

#dhcpd -d

该命令指明dhcpd将出错信息记录到标准的错误描述器,记录的信息将根据/etc/syslog.conf文件的配置保存在指定的文件中。例如,在/etc/syslog.conf文件中要指定记录debug信息:

logalldebuginformationinto/var/log/dameon.log

dameon.=debug/var/log/dameon.log

  小结

DHCP服务器是Linux下比较简单的服务器。DHCP在快速发送客户网络配置方面很有用,当配置客户端系统时,若管理员选择DHCP,则不必输入IP地址、子网掩码、网关或DNS服务器,客户端从DHCP服务器中检索这些信息。DHCP在管理员想改变大量系统的IP地址时也有用,与其重新配置所有系统,不如编辑服务器中的一个用于新IP地址集合的DHCP配置文件即可。本章首先介绍DHCP服务器的工作原理,安装DHCP服务器和设置DHCP客户端的方法以及DHCP服务器的故障排除。

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论