您的位置:首页 > 运维架构 > Linux

Linux下 DHCP服务器安装与配置

2010-01-25 16:41 537 查看
今天,我想在Linux下配置一台DHCP服务器,感觉上比较直观,难度稍微有点大(相对于在windows及路由器下)。

DHCP(Dynamic Host Configure Protocol,动态主机配置文件),是一个简化手动分配及管理IP地址的烦恼。DHCP是基于C/S模式的。

默认,在RHEL上没有安装服务器组件。查看是否安装的命令

[root@localhost ~]# rpm -qa | grep dhcp
dhcpv6_client-0.10-8 //客户端组件

如果没有安装,拿出RHEL的安装盘,找到相应的组件包。进行安装

[root@localhost cdrom]# rpm -ivh RedHat/RPMS/dhcp-3.0.1-12_EL.i386.rpm //服务器组件

查看DHCP服务的端口号

[root@localhost root]# vi /etc/services
bootps 67/tcp # BOOTP server
bootps 67/udp
bootpc 68/tcp # BOOTP client
bootpc 68/udp

DHCP服务(即dhcpd守护进程)是按照/etc目录下的dhcpd.conf配置文件进行设置。默认情况下,这个文件是不存在的。在安装dhcp服务时都会安装一个帮助文件(配置实例)。通过以下命令查询

[root@localhost ~]# rpm -ql dhcp
/etc/rc.d/init.d/dhcpd
/etc/rc.d/init.d/dhcrelay
/etc/sysconfig/dhcpd
/etc/sysconfig/dhcrelay
/usr/bin/omshell
/usr/sbin/dhcpd
/usr/sbin/dhcrelay
/usr/share/doc/dhcp-3.0.1
/usr/share/doc/dhcp-3.0.1/README
/usr/share/doc/dhcp-3.0.1/RELNOTES
/usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample //配置样本
/usr/share/man/man1/omshell.1.gz
/usr/share/man/man5/dhcp-eval.5.gz
/usr/share/man/man5/dhcpd.conf.5.gz
/usr/share/man/man5/dhcpd.leases.5.gz
/usr/share/man/man8/dhcpd.8.gz
/usr/share/man/man8/dhcrelay.8.gz
/var/lib/dhcp
/var/lib/dhcp/dhcpd.leases

然后,复制到/etc/dhcpd.conf

[root@localhost ~]# cp /usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample /etc/dhcpd.conf //复制文件

查看,/etc/dhcpd.conf配置文件(主要配置文挡)

[root@localhost ~]# cat /etc/dhcpd.conf
ddns-update-style interim; //支持DNS动态更新
ignore client-updates; //忽略客户端更新DNS记录

subnet 192.168.0.0 netmask 255.255.255.0 {
//宣告192.168.0.0/24网段
# --- default gateway
option routers 192.168.0.1; //默认网关
option subnet-mask 255.255.255.0; //网络掩码
option nis-domain "domain.org"; //NIS域名称
option domain-name "domain.org"; //DNS域名
option domain-name-servers 192.168.0.1; //DNS服务地址
option time-offset -18000; # Eastern Standard Time
# option ntp-servers 192.168.0.1;
# option netbios-name-servers 192.168.0.1;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
# option netbios-node-type 2;

range dynamic-bootp 192.168.0.128 192.168.0.254;
//定义可分配的IP地址池
default-lease-time 21600;
//默认租约期限
max-lease-time 43200;
//最大租约期限
# we want the nameserver to appear at a fixed address
host ns {
#next-server marvin.redhat.com;
hardware ethernet 12:34:56:78:AB:CD;
fixed-address 207.175.42.254;
} //默认永久分配IP地址(物理地址匹配)
}

PS:我在VMware上做实验的时候,可能dhcp客户端(linux)获取不到IP地址。
出现以下提示:Determining IP information for eth0... failed; no link present. Check cable?
由于虚拟机的原因,需要在/etc/sysconfig/network-scripts/ifcfg-eth0后面添加下面命令

check_link_down()
{
return 1;
}

配置完成后,需要重新开启服务

[root@localhost ~]# service dhcpd restart //重新开启DHCP服务
[root@localhost ~]# /etc/init.d/dhcpd stop //停止DHCP服务
[root@localhost ~]# /etc/init.d/dhcpd start //启动DHCP服务
[root@localhost ~]# chkconfig --level 35 dhcpd on
//开机自动启动DHCP服务

在linux客户端开启DHCP服务(windows下比较简单,不在做相关介绍),需要设置以下文挡

[root@localhost root]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp //启动DHCP服务
check_link_down()
{
return 1;
}

这样,就可以获取IP地址了。测试一下

[root@localhost root]# ifconfig eth0
.....
Link encap:Ethernet HWaddr 00:0C:29:93:19:4B
inet addr:192.168.0.254
Bcast:192.168.0.255 Mask:255.255.255.0
......

在现实生活中,有多个网段的IP地址需要分配,是不是每个网段下分配一台DHCP服务器呢?答案,是否定的。原因:这个也不太现实(成本很高)。所以我们可以用DHCP中继代理来完成这项功能。下次,我会通过一个具体的配置实例,来更形象地说明它的功能作用。

最后:DHCP客户端申请IP地址的工作流程

(1)DHCP客户端向本网段发送一个DHCP DISCOVER(DHCP 发现)
(2)本网段的DHCP服务器回应一个DHCP OFFER(DHCP 提供)
(3)DHCP客户端收到回应后,向DHCP服务器请一个DHCP 所包含的IP地址,并广播一个DHCP REQUEST(DHCP 请求)
(4)最后,DHCP服务器发送一个DHCP REPLY来确认。

其中,四个过程都是广播进行的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: