Linux常用命令-dhclient

命令

dhclient

描述

Dynamic Host Configuration Protocol Client
DHCP客户端

用法

1
2
3
4
5
6
7
8
dhclient [-4|-6] [-SNTPI1dvrxc] [-nw] [-p <port>] [-D LL|LLT]
[-s server-addr] [-cf config-file] [-lf lease-file]
[-pf pid-file] [--no-pid] [-e VAR=val]
[-I <dhcp-client-identifier>] [-B]
[-H <host-name> | -F <fqdn.fqdn>] [-timeout <timeout>]
[-V <vendor-class-identifier>]
[-R <request option list>]
[-sf script-file] [interface]

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Options:
-4 使用DHCPv4协议获取IPv4地址和配置参数,此为默认选项
-6 使用DHCPv6协议获取任何可用的IPv6地址以及配置参数
-1 尝试重新获取,失败退出代码为2
-d 强制dhclient作为前台进程运行,用于debug
-nw 以守护进程(nowait)方式运行
-q 静默模式,此为默认选项
-v 显示详情
-w 始终运行,通常如果dhclient没有发现任何网络接口就会自动退出,此选项用于热插拔的网络设备
-B 设置BOOTP广播标志
-I 指定dhcp客户端标识符
-H 指定主机名前缀,dhcp服务器将返回域名部分,注意此选项和-F选项互斥
-F 指定完整主机名FQDN,dhcp服务器可以使用该域名进行动态DNS更新,和-H选项互斥
-V 指定设备标识符
-R 指定客户端向服务器请求的选项列表,可选参数如下
subnet-mask, broadcast-address, time-offset, routers,
domain-search, domain-name, domain-name-servers, host-name,
nis-domain, nis-servers, ntp-servers, interface-mtu
-timeout 指定超时时间
-n 不配置任何接口,通常与-w一起使用
-e 为dhclient-script定义其他环境变量,可以重复该选项指定多个变量
-r 释放当前ip租约并停止dhclient
-x 停止dhclient而不释放当前ip租约
-p 指定dhclient要监听的UDP端口,默认端口68
-s 指定DHCP服务器地址,否则默认发送广播请求.注意DHCPv6(-6)不支持此选项
-cf 指定客户端配置文件,默认路径/etc/dhcp/dhclient.conf
-lf 指定租约数据库文件,默认路径/var/lib/dhclient/dhclient.leases
-pf 指定PID文件,默认/var/run/dhclient.pid
--no-pid 不生成PID文件
-sf 指定dhclient获取租约时调用的网络配置脚本的路径,默认/usr/sbin/dhclient-script

注意

释放ip租约可能导致连接中断,如果接口上配置有固定IP可能会被一起删除,如果有多块网卡,建议指定网卡配置dhcp
dhclient -r并没有真正释放IP,下一次执行dhclient eth1时,没有discover这个步骤,而是直接REQUEST上次IP
在网络拓扑或者配置变化的情况下,如果获取不到IP,需要删除/var/lib/dhclient/dhclient.leases文件
租约文件/var/lib/dhclient/dhclient.leases会随着租约内容的变化不断追加,推荐定时清理或在DHCP服务器上增加租约期限配置

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
$ dhclient --version
isc-dhclient-4.2.5

# 指定出接口
$ dhclient eth1
# 指定DHCP服务器地址
$ dhclient -s 192.168.10.1
$ dhclient -q -lf /var/lib/dhclient/dhclient-eth0.lease -pf /var/run/dhclient-eth0.pid -H centos7 eth0
# 注意以下两个命令在释放ip租约后可能会同步释放对应接口上的所有IP地址,导致连接中断
$ dhclient -r
$ dhclient -x

# 租约文件内容,注意以下租约期限为43200=12h,过期前将自动续约并追加租约内容到该文件,所以该文件会越来越大
$ more /var/lib/dhclient/dhclient.leases
lease {
interface "eth0";
fixed-address 192.168.31.212;
option subnet-mask 255.255.255.0;
option routers 192.168.31.1;
option dhcp-lease-time 43200;
option dhcp-message-type 5;
option domain-name-servers 192.168.31.1;
option dhcp-server-identifier 192.168.31.1;
option dhcp-renewal-time 21600;
option broadcast-address 192.168.31.255;
option dhcp-rebinding-time 37800;
option host-name "xxx";
option vendor-encapsulated-options "xxx";
renew 0 2022/01/16 09:39:07;
rebind 0 2022/01/16 14:09:18;
expire 0 2022/01/16 15:39:18;
}

# 以下租约期限为4294967295,过期时间为2158年,设置长期租约可以减少租约内容变化的次数,但需要DHCP服务器配置支持
lease {
interface "eth0";
fixed-address 10.0.8.4;
option subnet-mask 255.255.252.0;
option routers 10.0.8.1;
option dhcp-lease-time 4294967295;
option dhcp-message-type 5;
option domain-name-servers 1xx.2x.2x.1,1xx.x.3x.2;
option dhcp-server-identifier 10.0.8.1;
option classless-static-routes 0 10.0.8.1;
option broadcast-address 10.0.11.255;
renew 3 2090/02/01 12:30:42;
rebind 3 2141/02/15 20:56:11;
expire 1 2158/02/20 15:44:49;
}