目录
DHCP工作原理、了解DHCP服务
DHCP概述
DHCP(Dynamic Host Configuration Protocol)动态主机配置协议,是由Internet工作任务小组设计开发的专门用于为TCP/IP网络中的计算机自动分配TCP/IP参数的协议
使用DHCP的好处
- 减少管理员的工作量
- 避免输入错误的可能
- 避免IP地址冲突
- 当更改IP地址段时,不需要重新配置每个用户的IP地址
- 提高了IP地址的利用率
- 方便客户端的配置
DHCP的分配方式
(1)自动分配
分配到一个IP地址后永久使用
(2)手动分配
由DHCP服务器管理员专门指定IP地址
(3)动态分配
使用完后释放该IP,供其他客户机使用
DHCP的租约过程
客户机从DHCP服务器获得IP地址的过程称为DHCP的租约过程
分为四个步骤
1.客户端在网络中搜索服务器发送DHCP Discover
2.服务器向客户端响应服务广播DHCP Offer
3.客户端向目标服务器发出服务请求发送DHCP Request
4.服务器向客户端提供服务DHCP ACK
详细解释
(1)客户机请求IP地址
当一个DHCP客户机启动时,客户机还没有IP地址,所以客户机要通过DHCP获取一个合法的地址
此时DHCP客户机以广播方式发送DHCP Discover发现信息来寻找DHCP服务器
(2)服务器响应
DHCP服务器接收到来自客户机请求IP地址的信息时,在自己的IP地址池中查找是否有合法的IP地址提供给客户机
如果有,DHCP服务器将此IP地址做上标记,加入到DHCP Offer的消息中,然后广播一则DHCP Offer的消息中,然后广播一则DHCP Offer消息
(3)客户机选择IP地址
DHCP客户机从接收到的第一个DHCP Offer消息中提取IP地址,发出IP地址的DHCP服务器将该地址保留,这样该地址就不能再分配给另一个DHCP客户机
(4)服务器确定租约
DHCP服务器接收到DHCP Request消息后,以DHCP ACK消息的形式向客户机广播成功确认,该消息包含有IP地址的有效租约和其他可配置的信息
当客户机收到DHCP ACK消息时,配置IP地址,完成TCP/IP的初始化
(5)重新登录
DHCP客户机每次重新登录网络时,不需要再发送DHCP Discover信息,而是直接发送包含前一次所分配的IP地址的DHCP Request请求信息
(6)更新租约
当DHCP服务器向客户机出租的IP地址租期达到50%时,就需要更新租约
客户机直接向提供租约的服务器发送DHCP Request包,要求更新现有的地址租约
DHCP服务器的配置
DHCP服务
为大量客户机自动分配地址,提供集中管理
减轻管理和维护成本、提供网络配置效率
分配的信息类型
网卡的IP地址、子网掩码
对应的网络地址、广播地址
默认网关地址
DNS服务器地址
DHCP配置
安装dhcp服务:
[root@dns admin]# yum -y install dhcp
[root@dns admin]# rpm -ql dhcp.x86_64 #查看主要的DHCP服务安装包
/etc/dhcp
/etc/dhcp/dhcpd.conf # DHCP的配置文件
/etc/dhcp/dhcpd6.conf
.......
/usr/sbin/dhcpd # DHCP的服务器端的主进程
/usr/sbin/dhcrelay # DHCP的中继服务器的进程
/var/lib/dhcpd/dhcpd.leases #DHCP的租约记录
关闭virbr0虚拟网卡
centos7上有virbr0虚拟网卡
[root@cos7:~ ]# yum list libvirt* libvirt-daemon
[root@cos7:~ ]# yum remove libvirt-daemon
#重启即可,不重启dhcp服务会报错;
如果关不掉virbr0执行
[root@cos7:~ ]#ifconfig virbr0 down
DHCP 对应端口:
服务器端 UDP 67、客户端 UDP 68
防火墙添加服务端口
[root@dns admin]# firewall-cmd --permanent --add-port=67/udp #防火墙添加67/udpd端口
[root@dns admin]#firewall-cmd –reload #重新加载防火墙配置,不然新添加的规则不生效;
设置DHCP服务开机自启动
[root@dns admin]# systemctl enable dhcpd
linux下DHCP配置:
DHCP服务的配置文件都放在/etc/dhcp目录下,主配置文件为dhcpd.conf。
可以将/usr/share/doc/dhcp-4.2.5/dhcpd.conf.sampleDHCP配置文件模板复制到配置文件目录下,并覆盖dhcpd.conf文件,即可获得主配置文件。
[root@dns admin]#cp /usr/share/doc/dhcp-4.2.5 /dhcpd.conf.sample /etc/dhcp/dhcpd.conf
#重新覆盖配置文件
[root@dns admin]#vim /etc/dhcp/dhcpd.conf #修改主配置文件
# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
#
# option definitions common to all supported networks... #全局配置区域;
ignore client-updates; #忽略客户端更新;
option domain-name "Moutai.com.cn"; #DNS的名称‘’
option domain-name-servers 10.0.16.136,10.0.16.137; #DNS地址多个DNS中间用逗号隔开;
default-lease-time 600; #地址池租约时间单位是秒;
max-lease-time 3000; #地址池租约时间单位是秒;
log-facility local7; #日志文件存放位置;
option ip-forwarding no; #禁用ip转发;
subnet 10.152.187.0 netmask 255.255.255.0 {
} #DHCP服务器基于本机的网卡,做一个地址申明,有几张业务网卡就做几个地址申明;
subnet 192.168.20.0 netmask 255.255.255.0 { #地址申明;
range 192.168.20.1 192.168.20.253; #地址池范围;
option routers 192.168.20.254; #该地址段的网关;
}
# will still come from the host declaration. #该区域可做地址的特殊绑定;
host passacaglia { #host 后与{前,这个字段可写主机名称;
hardware ethernet 00:c0:5d:bd:95;# hardware ethernet后做主机唯一的申明,即Mac地址大小写都可以;
fixed-address 10.0.20.91; #主机需要的特殊地址;
}
根据自己的需求自行对配置文件进行修改
dhcpd配置文件修改完成后需要重启DHCP服务,使得配置文件生效
[root@dhcp-2 ~]# systemctl restart dhcpd
如果有报错信息,先查看一下dhcpd的状态,根据dhcpd的服务状态去判断是配置文件哪里报错
[root@dns admin]# systemctl status dhcpd #查看dhcp服务状态
搭建DHCP高可用服务
具体的配置文件可参考我的,再根据自己的需求自行修改即可,这里有一个问题需要特别注意的是两台服务器做高可用服务,需要两台服务器的IP地址在同一个网段并且可以互相访问到对方的647/tcp端口。
DHCP-server-1高可用服务文件配置如下:
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
local-address 10.250.104.108;
ddns-update-style none;
ignore client-updates;
option domain-name-servers 10.0.16.136, 10.0.16.137;
default-lease-time 28800;
max-lease-time 28801;
log-facility local7;
option ip-forwarding on;
option serverip code 43 = string;
failover peer "dhcp-failover" { # 声明failover的名字
primary; # 指定本服务器为Master
address 10.250.104.108; # 监听failover消息的ip地址
port 519; # 本地监听failover消息的TCP端口
peer address 10.250.104.109; # 指定Slave服务器的ip地址
peer port 520; # Slave服务器上的监听failover消息的TCP端口
max-response-delay 5; # 同步信息最大延迟时间
max-unacked-updates 100; # 在收到对端BNDACK 消息之前最大可发送BNDUPD 消息的数量
load balance max seconds 3; # 负载平衡最大时间3秒
mclt 600; # 节点在互相通知之前更新一个租约的时间,ISC建议是600
split 128; # 本节点分担50%的负荷
}
# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.
subnet 10.250.104.0 netmask 255.255.255.0 {
}
subnet 10.132.3.0 netmask 255.255.255.0 {
option routers 10.132.3.254;
option subnet-mask 255.255.255.0;
pool {
failover peer "dhcp-failover";
range 10.132.3.11 10.132.3.239;
}
}
DHCP-server-2高可用服务文件配置如下:
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
local-address 10.250.104.109;
ddns-update-style none;
ignore client-updates;
option domain-name-servers 10.0.16.136, 10.0.16.137;
default-lease-time 7400;
max-lease-time 7401;
log-facility local7;
option ip-forwarding on;
option serverip code 43 = string;
failover peer "dhcp-failover" { # 声明failover的名字
secondary; # 指定本服务器为Auxiliary
address 10.250.104.109; # 监听failover消息的ip地址
port 520; # 本地监听failover消息的TCP端口
peer address 10.250.104.108; # 指定Slave服务器的ip地址
peer port 519; # Slave服务器上的监听failover消息的TCP端口
max-response-delay 5; # 同步信息最大延迟时间
max-unacked-updates 100; # 在收到对端BNDACK 消息之前最大可发送BNDUPD 消息的数量
mclt 600; # 节点在互相通知之前更新一个租约的时间,ISC建议是600
load balance max seconds 3;
}
# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.
subnet 10.250.104.0 netmask 255.255.255.0 {
}
# VN_Office_ZJ3CJ
subnet 10.132.3.0 netmask 255.255.255.0 {
option routers 10.132.3.254;
option subnet-mask 255.255.255.0;
pool {
failover peer "dhcp-failover";
range 10.132.3.11 10.132.3.239;
}
}