dhcp
1 DHCP概述
1.1 DHCP工作流程
发现阶段(DHCP DISCOVER)
即DHCP客户机寻找DHCP服务器的阶段。DHCP客户机以广播方式(因为DHCP服务器的IP地址对于客户机来说是未知的)发送DHCP discover发现信息来寻找DHCP服务器,即向地址255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。
提供阶段(DHCP OFFER)
即DHCP服务器提供IP地址的阶段。在网络中接收到DHCP discover发现信息的DHCP服务器都会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含出租的IP地址和其他设置的DHCP offer提供信息。
选择阶段(DHCP REQUEST)
即DHCP客户机选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器向DHCP客户机发来的DHCP offer提供信息,则DHCP客户机只接受第一个收到的DHCP offer提供信息,然后它就以广播方式回答一个DHCP request请求信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址。
确认阶段(DHCPACK)
即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户机回答的DHCP request请求信息之后,它便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCP ACK确认信息,告诉DHCP客户机可以使用它所提供的IP地址。然后DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址。
重新登录
以后DHCP客户机每次重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ACK确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时(比如此IP地址已分配给其它DHCP客户机使用),则DHCP服务器给DHCP客户机回答一个DHCP NACK否认信息。当原来的DHCP客户机收到此DHCP NACK否认信息后,它就必须重新发送DHCP discover发现信息来请求新的IP地址。
更新租约(DHCPRENEW)
DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。
2 安装配置DHCP服务端
2.1 安装DHCPD主程序
yum install dhcp
2.2 配置DHCPD主配置文件
vim /etc/dhcp/dhcpd.conf
# 分配的IP默认租期时间
default-lease-time 864000;
# 分配的IP最大租期时间,到了该时间会客户端还没过来续租将回收
max-lease-time 864000;
# 允许接收客户端使用bootp协议请求
allow bootp;
# 允许开机引导DHCP,PXE启动用
allow booting;
# 关闭动态DNS的更新
ddns-update-style none;
# 当收到客户端发送的DHCP REQUEST中的IP不是DHCP服务器自身分配出去的IP时,拒绝请求,而不是不响应客户端请求,间接导致客户端无法获取到IP,当客户端收到服务器的拒绝请求后会重新发送DHCP RECOVERY请求。
authoritative;
# 配置分配的网段
subnet 10.0.5.0 netmask 255.255.255.0 {
# 分配的IP地址段
range 10.0.5.10 10.0.5.200;
# 子网掩码
option subnet-mask 255.255.255.0;
# 广播地址
option broadcast-address 10.0.5.255;
# 默认路由
option routers 10.0.5.1;
# 主机名后缀,非必须
option domain-name "ops.cn";
# DNS服务器,多个IP使用逗号分隔
option domain-name-servers 10.0.1.1,114.114.114.114;
# tftp服务器IP,用于PXE安装系统
next-server 10.0.1.12;
# tftp服务器引导的文件
filename "/pxelinux.0";
# 手动分配客户端IP,整个dhcpd.conf文件里host的名字不能一样
host test{
# 客户端网卡MAC地址
hardware ethernet 00:11:22:aa:bb:cc;
# 分配给客户端的IP地址,可以不在range范围内
fixed-address 10.0.5.5;
}
}
2.3 启动DHCPD并加入开机自启动
/etc/init.d/dhcpd start
chkconfig dhcpd on
2.4 DHCPD文件说明
2.4.1 /var/lib/dhcpd/dhcpd.leases
已分配的客户端租期文件
2.5 DHCPD日志文件路径修改
dhcpd日志文件默认日志文件为/var/log/messages,如需修改dhcpd的日志文件路径,配置步骤如下:
vim /etc/dhcp/dhcpd.conf
添加如下内容:
log-facility local6;
vim /etc/rsyslog.conf
添加如下内容:
local6.* /var/log/dhcpd.log
修改如下内容:
*.info;mail.none;authpriv.none;cron.none**;dhcpd.none** /var/log/messages
重启dhcpd和rsyslog服务
/etc/init.d/dhcpd restart
/etc/init.d/rsyslog restart
3 DHCPD主从复制配置
3.1 主DHCPD配置
vim /etc/dhcp/dhcpd.conf
# 主从集群名称
failover peer "my" {
# 声明角色
primary;
# 同步使用的IP
address 10.0.1.130;
# 同步使用的端口号
port 647;
# 对端使用的IP地址
peer address 10.0.1.132;
# 对端使用的端口号
peer port 647;
# 检测对端存活的失效时间
max-response-delay 30;
# 更新重发的最大次数
max-unacked-updates 10;
# 负载均衡失效的最大时间,若超过则负载均衡将关闭
load balance max seconds 3;
# 当主从连接失效后并经过mclt设置的时间后从机分配出去的ip将被回收,primary角色才能配置
mclt 1800;
# 主从负载均衡能力,取值范围为0-255,值为0(0/256=0%)即全部由从机器负责分配IP任务,值为128(128/256=50%),主从各负责一半分配ip任务,primary角色才能配置
split 128;
}
# 主从作用域
shared-network test {
subnet 10.0.5.0 netmask 255.255.255.0 {
pool {
# 加入哪个主从集群
failover peer "my";
range 10.0.5.10 10.0.5.200;
option subnet-mask 255.255.255.0;
option broadcast-address 10.0.5.255;
option routers 10.0.5.1;
option domain-name "ops.cn";
option domain-name-servers 10.0.1.1 114.114.114;
default-lease-time 86400;
max-lease-time 86400;
}
}
}
3.2 从DHCPD配置
vim /etc/dhcp/dhcpd.conf
failover peer "my" {
secondary;
address 10.0.1.132;
port 647;
peer address 10.0.1.130;
peer port 647;
max-response-delay 30;
max-unacked-updates 10;
load balance max seconds 3;
}
subnet 10.0.5.0 netmask 255.255.255.0 {
pool {
failover peer "my";
range 10.0.5.10 10.0.5.200;
option subnet-mask 255.255.255.0;
option broadcast-address 10.0.5.255;
option routers 10.0.5.1;
option domain-name "ops.cn";
option domain-name-servers 10.0.1.1 114.114.114;
default-lease-time 86400;
max-lease-time 86400;
}
}
4 故障记录
4.1 not authoritative for subnet
tail -f /var/log/messages
提示如下:
DHCPINFORM from 10.0.5.253 via eth0: not authoritative for subnet 10.0.5.0add the below to the first line of
解决方法:
vim /etc/dhcp/dhcpd.conf
全局或subnet里面添加
authoritative;
重启dhcpd
/etc/init.d/dhcpd restart