DHCP (Dynamic Host Configuration Protocol) 动态主机配置协议 ・DHCP服务器必须能将数据包送到255.255.255.255的IP地址上,但Linux本身又将该地址作为本地子网的广播地 --------------------------------------------------------------------------------------------------------- /etc/dhcpd.conf通常包括三部分:parameters、declarations 、option。 1.DHCP配置文件中的parameters(参数):表明如何执行任务,是否要执行任务,或将哪些网络配置选项发送给客户 参 数 解 释 2.DHCP配置文件中的declarations (声明):用来描述网络布局、提供客户的IP地址等 声 明 解 释
选 项 解 释 注意:如果客户端使用的是视窗操作系统,不要选择"host-name"选项,即不要为其指定主机名称 Dhcpd.conf 的配置文件例子:
两块网卡的情况:
注意lease 开始租约时间和lease 结束租约时间是格林威治标准时间(GMT),不是本地时间。 第一次运行DHCP服务器时dhcpd.leases是一个空文件,也不用手工建立。如果不是通过 RPM 安装 ISC DHCP,或者 dhcpd 已经安装,那么您应该试着确定 dhcpd 将其 lease 文件写到何处,并确保该文件存在。也可以手工建立一个空文件: #touch /var/lib/dhcp/dhcpd.leases 使用命令启动DHCP服务器: #service dhcpd start #ps -ef | grep dhcpd # netstat -nutap | grep dhcpd ---------------------------------------------------------------------------------------------------------------------------------- 配置DHCP客户端 通常网管员使用选择手工配置 DHCP 客户,需要修改 /etc/sysconfig/network 文件来启用联网;并修改 /etc/sysconfig/network-scripts 目录中每个网络设备的配置文件。在该目录中,每个设备都有一个叫做 ifcfg-eth? 的配置文件,eth?是网络设备的名称。 如eth0等。如果你想在引导时启动联网,NETWORKING 变量必须 被设为 yes。 除了此处之外/etc/sysconfig/network 文件应该包含以下行: NETWORKING=yes --------------------------------------------------------------------------------------------------------------------------------- 通常配置DHCP 服务器很容易,不过,在这里有一些技巧可以帮助您避免出现问题。对服务器而言,要确保网卡正常工作,并具备广播功能。对客户机而言,还要确保客户机的网卡 正常工作。最后,要考虑网络的拓扑,并考虑客户机向 DHCP 服务器发出的广播消息是否会受到阻碍。另外如果dhcpd进程没有启动,那么可以浏览 syslog 消息文件来确定是哪里出了问题。这个消息文件通常是 /var/log/messages。 典型故障: 1.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
那么请先修改/etc/hosts加入一行: 255.255.255.255 dhcp -------------------------------------------------------------------------------------------------------------------------------- DHCP服务器的安全
如果你的Linux系统连接了不止一个网络界面,但是你只想让 DHCP 服务器启动其中之一,你可以配置 DHCP 服务器只在那个设备上启动。在 /etc/sysconfig/dhcpd 中,把界面的名称添加到 DHCPDARGS 的列表中: DHCPDARGS=eth0
Echo "DHCPDARGS=eth0" >> /etc/ sysconfig/dhcpd 2. 让DHCP服务器在监牢中运行 所谓"监牢"就是指通过chroot机制来更改某个软件运行时所能看到的根目录,即将某软件运行限制在指定目录中,保证该软件只能对该目录及其子目录的文件有所动作,从而保证整个服务器的安全。这样即使出现被破坏或被侵入,所受的损失也较小。 将软件chroot化的一个问题是该软件运行时需要的所有程序、配置文件和库文件都必须事先安装到chroot目录中,通常称这个目录为 chroot jail(chroot"监牢")。如果要在"监牢"中运行dhcpd,而事实上根本看不到文件系统中那个真正的目录。因此需要事先创建目录,并将 dhcpd复制到其中。同时dhcpd需要几个库文件,可以使用ldd(library Dependency Display缩写)命令,ldd作用是显示一个可执行程序必须使用的共享库。 ldd dhcpd
/lib/tls/libc.so.6 (0x42000000)
=> /lib/ld-linux.so.2 (0x40000000)
(1)Jail软件的编译和安装 Jail官方网站是:http://www.jmcresearch.com/ ,最新版本:1.9a。 #Wget http://www.jmcresearch.com/stati ... il/jail_1.9a.tar.gz jail软件包提供了几个Perl脚本作为其核心命令,包括mkjailenv、addjailuser和addjailsw。 mkjailenv:创建chroot"监牢"目录,并且从真实文件系统中拷贝基本的软件环境。addjailsw:从真实文件系统中拷贝二进 制可执行文件及其相关的其它文件(包括库文件、辅助性文件和设备文件)到该"监牢"中。addjailuser:创建新的chroot"监牢"用户。 首先停止目前dhcpd服务,然后建立chroot目录: #/sbin/service dhcpd start A component of Jail (version 1.9 for linux) http://www.gsyc.inf.uc3m.es/~assman/jail/ Juan M. Casillas Making chrooted environment into /chroot Doing preinstall() Doing special_devices() Doing gen_template_password() Doing postinstall() Done. # addjailsw /chroot/ -P /usr/sbin/dhcpd A component of Jail (version 1.9 for linux) http://www.gsyc.inf.uc3m.es/~assman/jail/ Juan M. Casillas Guessing dhcpd args(0) Warning: file /chroot//lib/tls/libc.so.6 exists. Overwritting it Warning: file /chroot//lib/ld-linux.so.2 exists. Overwritting it ……… # mkdir -p /chroot/dhcp/etc
[root@www root]# /chroot/usr/sbin/dhcpd #ps -ef | grep dhcpd udp 0 0 0.0.0.0:67 0.0.0.0:* 2402/dhcpd 端口号没有改变。现在dhcpd已经成功运行在"监牢"中。到此为止一个这样,一个完整和安全的 DHCP服务器就完成了 |