DHCP,全称是Dynamic Host Configuration Protocol,动态主机配置协议,工作在OSI的应用层,作用主要是帮助计算机从指定的DHCP服务器获取配置信息的协议。Dhcp采用client/server模式,客户端(端口号是68)请求,服务端(端口号是67)响应。
广播:
工作原理:
DHCP客户端寻找服务器
客户端向网络上广播dhcpdiscover包(内包含客户机的mac地址)寻找DHCP服务器,即向广播地址255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。
DHCP服务器响应客户端(linux系统是单播)
DHCP服务器收到客户机的dhcpdiscover包后,从尚未出租的IP地址中挑选一个分配给DHCP客户机,其中使用ARP广播来确认该IP地址是否被占用,然后发送一个dhcpoffer广播包,内包含IP地址,dhcp服务器IP等内容。
DHCP客户端发起请求
客户机收到第一个dhcp服务器发送的dhcpdiscover包后,再以广播的形式发送一个dhcprequest包发给所有的dhcp服务器,内有一个DHCP服务器IP,通知所有DHCP服务器,他将选择某台DHCP服务器所提供的IP地址。
DHCP服务器发送配置完毕确认(linux系统是单播)
DHCP服务器确认和客户端的租约关系。被选中的服务器再发一个dhcpack广播包确认此IP的发放。
这个IP地址可以使用一半租期的时间,超过一半时间应续租,如果过了一半时间后找不到DHCP服务器的话,可以再使用四分之一时间,然后就过期了。用户就不能通过此IP地址进行通信了。
另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址。
优点:
减小管理员的工作量
减小输入错误的可能
避免ip冲突
提高了ip地址的利用率
DHCP服务器安装:
注意:
不要用真实机作为dhcp服务器。
作为dhcp服务器的虚拟机要用host-only,否则会ip地址“满天飞”
1.安装软件:
软件包:dhcp-4.1.1-34.P1.el6.x86_64,两种方式安装
rpm安装
安装这个软件包不需要额外的依赖软件包
$rpm -ivh dhcp-4.1.1-34.P1.el6.x86_64
yum安装
配置好相应的yum仓库
$yum install dhcp -y
2.配置文件
DHCP服务的配置文件默认是没有的,需要在/etc手工创建dhcpd.conf文件。但是幸运的是,安装dhcp服务时会为我们提供一个示例文件
$ cp /usr/share/doc/dhcp-3.0.1/dhcp.conf.sample /etc/dhcp/dhcpd.conf
在其基础上进行修改配置。
各个参数的作用:
subnet 客户机获得的IP地址的网段
netmask 客户机获得的IP地址的子网掩码
options domain-name 为客户机指定DNS服务器名称
options domain-name-servers 为客户机指定DNS服务器IP地址
options routers 为客户机指定默认网关的IP地址
options subnet-mask 默认网关IP地址的子网掩码
range 用于说明客户机所得到的IP地址的范围
default-lease-time 指定默认地址租约(秒为单位)
max-lease-time 指定最大地址租约(秒为单位)
host 为特定的DHCP客户机提供IP网络参数
hardware 特定客户机的MAC地址
fixed-address 为特定客户机指定IP地址
这个参数的意思是计算机名为host、MAC地址为hardware的客户机永远使用fixed-address这个IP地址
示例:
1.$ cat /etc/dhcp/dhcpd.conf
解释:
注意:全局配置的优先级低于局部配置的优先级,对于同一个变量,如果局部和全局都有配置,则以局部变量为准。dns的记录可以写多个,以,隔开。
3.指定开放服务网络的接口
$ vim /etc/sysconfig/dhcpd
# Command line options here
DHCPDARGS=
这个文件主要是控制dhcp服务在服务器哪块网卡起作用的,因为服务器一般有多个网卡,但是不在每块网卡上都是用dhcp,那么就可以通过这个文件来控制,如果只有一块网卡,则不需要配置
4.启动DHCP服务
启动DHCP服务,使刚刚修改的配置生效。
如果启动失败,则配置文件有误,通过查看日志文件/var/log/messages来排错
启动DHCP服务有两种方法
1>service dhcpd start 启动DHCP服务
service dhcpd stop 停止DHCP服务
service dhcpd restart 重启DHCP服务
or /etc/init.d/dhcpd start/stop/restart
注:service *** start/stop 启动/停止***服务,只有此次生效,关机或重启计算机后无效。
2>chkconfig dhcpd on 启动DHCP服务
chkconfig dhcpd off 停止DHCP服务
注:chkconfig *** on/off 启动/停止***服务,只有重启计算机后才生效。
ps:检查dhcp服务端口
$ netstat -nupl |grep dhcpd
5.配置客户机
两种方式:
a.修改网卡配置文件
BOOTPROTO=dhcp
b.使用dhclient命令
$ dhclient 网络接口
$ dhclient -r 网络接口 释放已获取的IP
6.验证服务
客户端验证:
ip地址:$ ifconfig
网关:$ cat /etc/sysconfig/network
dns:$ cat /etc/resolv.conf
注意:
如果想获得先前的静态ip地址,使用 $ ifdown 接口;ifup 接口
如果网关没有生效,是因为网卡配置文件ifcfg-ethx 已经配置,删除后重新获得动态ip地址即可生效
此服务不受防火墙影响
b.服务器端验证:
i.查看dhcp租约文件,记录哪些客户端和服务器申请了ip地址,对应使用情况(租用多久,租用了哪些ip,它们的使用者是谁)
$ cat /var/lib/dhcp/dhcpd.leases
starts :lease 开始租约时间
ends : lease 结束租约时间
注意:dhcp服务器和客户端租约建立的启动和到期时间的记录文件,仅在客户端申请IP地址之后才会有.
ii.查看系统日志文件
$ cat /var/log/messages
某些项目必须利用option设置,形式为option<参数代码><设置内容>
DHCP的ip分为静态ip和动态ip,如果设置静态ip需要知道要设置主机的MAC地址,#ping 目标主机ip,#arp –n查看。
parameters(参数):表明如何执行任务,是否要执行任务,或将哪些网络配置选项发送给客户
Defaults-lease-time:默认租约时间,默认单位为秒
Max-lease-time:最大租约时间,客户端超过租约但尚未更新IP时,最长可以使用该IP的时间
ddns-update-style 配置DHCP-DNS 互动更新模式
default-lease-time 指定确省租赁时间的长度,单位是秒
hardware 指定网卡接口类型和MAC地址
server-name 通知DHCP客户服务器名称
get-lease-hostnames flag 检查客户端使用的IP地址
fixed-address ip 分配给客户端一个固定的地址
authritative 拒绝不正确的IP地址的要求
option(选项):用来配置DHCP可选参数,全部用option关键字作为开始
option routers:为客户端设定默认网关
option subnet-mask:为客户端设定子网掩码
option domain-name:为客户端指明DNS名字
option domain-name-servers:为客户端指明DNS服务器IP地址
option time-offset:为客户端设定和格林威治时间的偏移时间,单位是秒
option ntp-server:为客户端设定网络时间服务器IP地址
option host-name 为客户端指定主机名称。若客户端使用windows,不要选择host-name,即不要为其指定主机名称。
option broadcast-address 为客户端设定广播地址
declarations (声明):描述网络布局、提供客户的IP地址等
shared-network:告知是否一些子网络分享相同网络
subnet:描述一个IP地址是否属于该子网
range:起始IP 终止IP 提供动态分配IP 的范围
host:主机名称参考特别的主机
group:为一组参数提供声明
allow unknown-clients/deny unknown-client:是否动态分配IP给未知的使用者
allow bootp/deny bootp:是否响应激活查询
allow booting/deny booting:是否响应使用者查询
filename:开始启动文件的名称,应用于无盘工作站
next-server:设置服务器从引导文件中装如主机名,应用于无盘工作站。
本文出自 “爱武装一辈子” 博客,请务必保留此出处http://menglinux.blog.51cto.com/8733806/1437308
原文地址:http://menglinux.blog.51cto.com/8733806/1437308