Ubuntu DHCP客户端IP地址分配规则
Ubuntu系统中,DHCP客户端通过**ISC DHCP Client(dhclient)**工具实现IP地址的自动获取,其分配规则主要由DHCP服务器配置决定,客户端遵循服务器返回的参数设置网络属性。以下是核心分配规则及客户端行为逻辑:
客户端默认通过DHCP协议向服务器发送DHCPDISCOVER
广播请求,服务器响应DHCPOFFER
提供可用IP地址,客户端确认DHCPREQUEST
后,服务器发送DHCPACK
完成分配。分配的IP地址为临时租用,需遵循以下租约规则:
服务器可通过host声明将特定MAC地址与固定IP绑定,客户端每次请求时,服务器优先分配该固定IP。配置示例如下(需修改/etc/dhcp/dhcpd.conf
):
host specific-client {
hardware ethernet 00:11:22:33:44:55; # 客户端MAC地址
fixed-address 192.168.1.100; # 绑定的固定IP
}
客户端需保持MAC地址不变,重启后仍会获取绑定的固定IP。
服务器通过range
参数定义可动态分配的IP地址池,客户端从池中随机获取未被占用的IP。配置示例如下:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100; # 动态IP池范围
option routers 192.168.1.1; # 默认网关
option subnet-mask 255.255.255.0; # 子网掩码
option domain-name-servers 8.8.8.8; # DNS服务器
}
客户端获取的IP地址会在range
指定的区间内变动(如192.168.1.10-192.168.1.100)。
客户端获取IP后,会在租约到期前50%时间(如默认租约600秒,则300秒时)发送DHCPREQUEST
请求续约。若服务器响应DHCPACK
,则延长租约;若未收到响应,客户端会在到期前87.5%时间(如525秒时)再次尝试续约,若仍未成功,则释放IP并重新发起DHCPDISCOVER
请求。
Ubuntu客户端通过/etc/dhcp/dhclient.conf
配置DHCP行为,默认配置(如自动接受服务器返回的所有参数)即可满足需求。若需自定义,可修改以下参数:
request subnet-mask, routers, domain-name-servers;
)。hook
脚本在获取IP后执行自定义操作(如重启网络服务)。若服务器有多个网卡,需通过/etc/default/isc-dhcp-server
配置文件指定DHCP服务监听的网卡(如INTERFACESv4="ens33"
),客户端仅能从该网卡所在的子网获取IP地址。
以上规则共同确保Ubuntu客户端能从DHCP服务器获取合法的IP地址,并通过网络参数配置实现正常通信。