DHCP(动态主机配置协议)用于自动分配IP地址及相关网络配置给客户端。在Linux环境中,DHCP选项的配置主要涉及客户端调整(修改获取的配置)和服务器端设置(定义分配的配置)两部分,以下是具体方法:
客户端需调整DHCP客户端软件的配置,以修改从服务器获取的网络参数(如DNS、主机名等)。
dhclient命令(临时生效)dhclient是Linux下常用的DHCP客户端工具,可通过命令行临时修改选项。例如,强制客户端向服务器发送特定主机名:
sudo dhclient -H my-hostname eth0
其中,-H指定主机名,eth0为目标网络接口。
不同发行版的接口配置文件路径不同:
/etc/network/interfaces,在对应接口配置中添加DHCP选项:auto eth0
iface eth0 inet dhcp
dns-nameservers 8.8.8.8 8.8.4.4 # 指定DNS服务器
domain-name example.com # 指定域名
/etc/sysconfig/network-scripts/ifcfg-eth0,添加:DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
DNS1=8.8.8.8
DNS2=8.8.4.4
DOMAIN=example.com
nmcli命令(NetworkManager)若系统使用NetworkManager管理网络,可通过nmcli修改连接配置:
nmcli connection modify "Wired connection 1" ipv4.dns "8.8.8.8 8.8.4.4" ipv4.ignore-auto-dns yes
nmcli connection up "Wired connection 1"
其中,ipv4.ignore-auto-dns yes表示忽略服务器分配的DNS,使用指定的DNS。
dhclient.conf文件(自定义选项)修改/etc/dhcp/dhclient.conf可自定义DHCP请求选项,例如:
send host-name "my-hostname"; # 发送固定主机名给服务器
supersede domain-name-servers 8.8.8.8, 8.8.4.4; # 强制使用指定DNS,覆盖服务器分配
修改后重启DHCP客户端:
sudo systemctl restart isc-dhcp-client # Debian/Ubuntu
sudo systemctl restart dhcpd # CentOS/RHEL
服务器端需通过配置文件定义DHCP服务的行为,包括IP地址池、选项分配等。常用软件为ISC DHCP Server(isc-dhcp-server)。
根据发行版选择安装命令:
sudo apt update
sudo apt install isc-dhcp-server
sudo yum install dhcp
编辑主配置文件/etc/dhcp/dhcpd.conf,添加全局选项(适用于所有子网):
# 设置默认/最大租约时间(秒)
default-lease-time 600;
max-lease-time 7200;
# 设置域名及DNS服务器
option domain-name "example.com";
option domain-name-servers 8.8.8.8, 8.8.4.4;
# 设置NTP服务器
option ntp-servers 192.168.1.2;
# 设置时区偏移(UTC-5)
option time-offset -18000;
在dhcpd.conf中定义子网,指定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 broadcast-address 192.168.1.255; # 广播地址
option domain-name-servers 8.8.8.8, 8.8.4.4; # DNS服务器
}
为特定MAC地址的设备分配固定IP,添加host声明:
host server1 {
hardware ethernet 00:11:22:33:44:55; # 设备MAC地址
fixed-address 192.168.1.100; # 分配的固定IP
option host-name "server1.example.com"; # 指定主机名
}
编辑/etc/default/isc-dhcp-server,设置DHCP服务器监听的网络接口:
INTERFACESv4="eth0" # 仅监听eth0接口的DHCP请求
保存配置后,重启服务使更改生效:
sudo systemctl restart isc-dhcp-server # Debian/Ubuntu
sudo systemctl restart dhcpd # CentOS/RHEL
sudo systemctl status isc-dhcp-server
tcpdump捕获DHCP流量,验证请求与响应:sudo tcpdump -i eth0 port 67 or port 68
| 选项名称 | 作用 | 示例值 |
|---|---|---|
routers |
默认网关 | 192.168.1.1 |
subnet-mask |
子网掩码 | 255.255.255.0 |
domain-name-servers |
DNS服务器地址 | 8.8.8.8, 8.8.4.4 |
domain-name |
域名 | example.com |
broadcast-address |
广播地址 | 192.168.1.255 |
ntp-servers |
NTP服务器地址 | 192.168.1.2 |
time-offset |
时区偏移(秒) | -18000(UTC-5) |
fixed-address |
固定分配的IP地址 | 192.168.1.100 |
hardware ethernet |
客户端MAC地址 | 00:11:22:33:44:55 |
通过以上配置,可实现Linux环境下DHCP选项的灵活调整,满足客户端动态获取配置或服务器端集中管理的需要。