DHCP 动态分配主机地址¶
动态分配 IP (Dynamic Host Configuration Protocol)
主要用途¶
- 用于内部网络和网络服务供应商自动分配IP地址给用户
- 用于内部网络管理员作为对所有电脑作集中管理的手段
- 使用场景
- 自动化安装系统
- 解决IPV4资源不足问题
名词¶
dhcp客户端
:需要获取ip等信息dhcp服务端
:提供ip等信息作用域
:一个完整的IP地址段,DHCP协议根据作用域来管理网络的分布、分配IP地址及其他配置参数。超级作用域
:用于管理处于同一个物理网络中的多个逻辑子网段。超级作用域中包含了可以统一管理的作用域列表。排除范围
:把作用域中的某些IP地址排除,确保这些IP地址不会分配给DHCP客户端。保留地址
:(地址绑定)将ip和mac地址绑定共享作用域
:(dhcp超级作用域)一堆作用域的集合地址池
:在定义了DHCP的作用域并应用了排除范围后,剩余的用来动态分配给DHCP客户端的IP地址范围。租约
:DHCP客户端能够使用动态分配的IP地址的时间。租约时间到期后自动回收主机的IP地址,以免造成IP地址的浪费。预约
:保证网络中的特定设备总是获取到相同的IP地址。中继代理
:用于在不同网段中,转发DHCP请求信息的设备
租约更新¶
过去50%时
:客户端主动联系服务端,如果收到回应,会使用服务端重新分配的ip(可能是之前的,可能为新),如果没有收到回应,继续使用过去75%时
:客户端主动联系服务端,如果收到回应,会使用服务端重新分配的ip(可能是之前的,可能为新),如果没有收到回应,继续使用-
过去87.5%时
:客户端主动联系服务端,如果收到回应,会使用服务端重新分配的ip(可能是之前的,可能为新),如果没有收到回应,客户端会重新开始租约过程,使用网内其它dhcp服务端提供的ip。如果网内没有dhcp服务端回应,客户端仍可使用之前的地址,直到租约到期注意
:客户端重启时会自动释放掉获取的 IP,重启后会主动联系 dhcp 服务端,如果租约没有到期,且得到服务端回应,客户机会继续使用之前的 IP,否则会每五分钟尝试一次 IP 租用。
租用失败
:windows 会自动设置成169.254..
安装 dhcp 服务¶
yum install -y dhcp
systemctl start dhcpd
默认配置示例文件¶
cat /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
option domain-name "example.org";
# 定义默认的搜索域
option domain-name-servers ns1.example.org, ns2.example.org;
# 定义客户端的 DNS 地址,这里我们设为DHCP服务器的IP地址
#option subnet-mask 255.255.255.0;
# 定义客户端默认的子网掩码
default-lease-time 600;
# 默认的租约时间,秒为单位
max-lease-time 7200;
# 最大的租约时间,秒为单位
#ddns-update-style none;
# 定义DNS服务动态更新的类型,类型包括:none(不支持动态更新)、interim(互动更新模式)与 ad-hoc(特殊更新模式)
#authoritative;
# 指定当一个客户端试图获得一个不是该DHCP服务器分配的IP信息,DHCP将发送一个拒绝消息,而不会等待请求超时。当请求被拒绝,客户端会重新向当前DHCP发送IP请求获得新地址。
#ignore client-updates;
# 忽略客户端更新DNS记录
log-facility local7;
# 定义日志服务,可以在日志配置文件中查看具体日志位置,默认是:/var/log/boog.log,但是在/var/log/messages里面也会记录dhcp日志
# 子网网段声明
subnet 10.152.187.0 netmask 255.255.255.0 {
}
subnet 10.254.239.0 netmask 255.255.255.224 {
# 分配的网段及子网掩码,代表只在 10.254.239.0 这个 C 类网段里生效,子网掩码设为255.255.255.0
range 10.254.239.10 10.254.239.20;
# 定义用于分配的 IP 地址池,起始到结束,尽量不要包含DHCP服务器的IP地址
option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
# 定义客户端的网关地址
}
subnet 10.254.239.32 netmask 255.255.255.224 {
range dynamic-bootp 10.254.239.40 10.254.239.60;
option broadcast-address 10.254.239.31;
# 定义客户端的广播地址
option routers rtr-239-32-1.example.org;
}
subnet 10.5.5.0 netmask 255.255.255.224 {
range 10.5.5.26 10.5.5.30;
option domain-name-servers ns1.internal.example.org;
option domain-name "internal.example.org";
option routers 10.5.5.1;
option broadcast-address 10.5.5.31;
default-lease-time 600;
max-lease-time 7200;
}
host passacaglia {
hardware ethernet 0:0:c0:5d:bd:95;
# 指定网卡接口的类型与 MAC 地址
filename "vmunix.passacaglia";
# 启动文件名称,用于无盘工作站
server-name "toccata.fugue.com";
# 向 DHCP 客户端通知 DHCP 服务器的主机名
}
host fantasia {
hardware ethernet 08:00:07:26:c0:a5;
fixed-address fantasia.fugue.com;
# 将某个固定的 IP 地址分配给指定主机
}
class "foo" {
# 定义多个子网,class 后面写组名
match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
}
shared-network 224-29 {
# 定义多个子网,要从大往小写
subnet 10.17.224.0 netmask 255.255.255.0 {
option routers rtr-224.example.org;
}
subnet 10.0.29.0 netmask 255.255.255.0 {
option routers rtr-29.example.org;
}
pool {
allow members of "foo";
# 允许范围
range 10.17.224.10 10.17.224.250;
}
pool {
deny members of "foo";
# 拒绝范围
range 10.0.29.10 10.0.29.230;
}
}
虚拟机模拟 dhcp¶
关闭虚拟机自带 dhcp 功能,添两块网卡,两块网卡模式均设置为仅主机模式,一块网卡作为 dhcp 服务器网卡,另一张作为客户端测试网卡。
自动 ip 分配¶
nmcli con show
nmcli con mod ens32 ipv4.addr 192.168.10.10/24 gw4 192.168.10.2 ipv4.dns 192.168.10.2
nmcli con up ens32
cat <<EOF> /etc/dhcp/dhcpd.conf
ddns-update-style none;
ignore client-updates;
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.50 192.168.10.150;
option routers 192.168.10.1;
option domain-name "linuxprobe.com";
option domain-name-servers 192.168.10.1;
default-lease-time 21600;
max-lease-time 43200;
}
EOF
systemctl start dhcpd
systemctl enable dhcpd
nmcli con mod ens34 ipv4.method auto
nmcli con up ens34
ip addr
固定 ip 分配¶
ip link show ens34|grep link|awk '{print $2}'
cat <<EOF> /etc/dhcp/dhcpd.conf
ddns-update-style none;
ignore client-updates;
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.50 192.168.10.150;
option routers 192.168.10.1;
option domain-name "linuxprobe.com";
option domain-name-servers 192.168.10.1;
default-lease-time 21600;
max-lease-time 43200;
host linuxprobe {
hardware ethernet 00:0c:29:27:c6:12;
fixed-address 192.168.10.88;
}
}
EOF
systemctl start dhcpd
nmcli con del ens34
nmcli con add con-name ens34 type ethernet ifname ens34 ipv4.method auto
nmcli con up ens34
ip addr
最后更新: 2024年12月12日