在Linux系统中配置DHCPv6服务需要以下步骤,涵盖主流实现(如ISC DHCP和dnsmasq)及注意事项:
安装ISC DHCP服务器(需版本≥4.3.0)
# Debian/Ubuntu
sudo apt install isc-dhcp-server
# RHEL/CentOS
sudo yum install dhcp
编辑配置文件 /etc/dhcp/dhcpd6.conf
# 基本配置
authoritative;
default-lease-time 3600;
max-lease-time 7200;
# 子网声明(示例)
subnet6 2001:db8:1234::/64 {
range6 2001:db8:1234::100 2001:db8:1234::200;
option dhcp6.name-servers 2001:4860:4860::8888, 2001:4860:4860::8844;
option dhcp6.domain-search "example.com";
}
启动服务
sudo systemctl start isc-dhcp-server6
sudo systemctl enable isc-dhcp-server6
安装dnsmasq
sudo apt install dnsmasq # 或 yum install dnsmasq
编辑配置文件 /etc/dnsmasq.conf
# 启用DHCPv6
enable-ra
dhcp-range=::100,::200,64,3600
dhcp-option=option6:dns-server,2001:4860:4860::8888
dhcp-option=option6:domain-search,example.com
重启服务
sudo systemctl restart dnsmasq
Linux客户端获取IPv6地址
# 使用dhclient(需安装isc-dhcp-client)
sudo dhclient -6 -v <interface>
# 或使用NetworkManager(自动处理)
nmcli con mod <connection> ipv6.method dhcp
验证地址分配
ip -6 addr show
防火墙规则
# 开放DHCPv6端口(UDP 546/547)
sudo ip6tables -A INPUT -p udp --dport 547 -j ACCEPT
与SLAAC共存
Managed
标志位:
bash
sysctl -w net.ipv6.conf.all.accept_ra=2
日志检查
journalctl -u isc-dhcp-server6 -f # 或 dnsmasq
前缀委派(PD)
# ISC DHCP配置示例
subnet6 2001:db8:1234::/64 {
prefix6 2001:db8:5678:: 2001:db8:5678:: /56;
}
静态分配
host server1 {
host-identifier option dhcp6.client-id 00:01:00:01:aa:bb:cc:dd;
fixed-address6 2001:db8:1234::1;
}
bash
sudo tcpdump -i eth0 -vvv port 546 or port 547
bash
sudo dhcpd -6 -d -f # 前台运行并输出调试信息
通过以上配置,Linux系统可完整支持IPv6地址分配。实际部署时需根据网络拓扑调整子网范围和路由选项。