插件窝 干货文章 Linux DHCP如何支持IPv6

Linux DHCP如何支持IPv6

DHCP 配置 dnsmasq bash 577    来源:    2025-05-04

在Linux系统中配置DHCPv6服务需要以下步骤,涵盖主流实现(如ISC DHCP和dnsmasq)及注意事项:


一、ISC DHCP服务器配置(支持IPv6的版本)

  1. 安装ISC DHCP服务器(需版本≥4.3.0)

    # Debian/Ubuntu
    sudo apt install isc-dhcp-server
    
    # RHEL/CentOS
    sudo yum install dhcp
    
  2. 编辑配置文件 /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";
    }
    
  3. 启动服务

    sudo systemctl start isc-dhcp-server6
    sudo systemctl enable isc-dhcp-server6
    

二、dnsmasq配置(轻量级方案)

  1. 安装dnsmasq

    sudo apt install dnsmasq  # 或 yum install dnsmasq
    
  2. 编辑配置文件 /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
    
  3. 重启服务

    sudo systemctl restart dnsmasq
    

三、客户端配置

  1. Linux客户端获取IPv6地址

    # 使用dhclient(需安装isc-dhcp-client)
    sudo dhclient -6 -v <interface>
    
    # 或使用NetworkManager(自动处理)
    nmcli con mod <connection> ipv6.method dhcp
    
  2. 验证地址分配

    ip -6 addr show
    

四、关键注意事项

  1. 防火墙规则

    # 开放DHCPv6端口(UDP 546/547)
    sudo ip6tables -A INPUT -p udp --dport 547 -j ACCEPT
    
  2. 与SLAAC共存

    • 如果网络同时使用SLAAC(无状态自动配置),需在路由器广告(RA)中设置Managed标志位: bash sysctl -w net.ipv6.conf.all.accept_ra=2
  3. 日志检查

    journalctl -u isc-dhcp-server6 -f  # 或 dnsmasq
    

五、高级功能(可选)

  1. 前缀委派(PD)

    # ISC DHCP配置示例
    subnet6 2001:db8:1234::/64 {
       prefix6 2001:db8:5678:: 2001:db8:5678:: /56;
    }
    
  2. 静态分配

    host server1 {
       host-identifier option dhcp6.client-id 00:01:00:01:aa:bb:cc:dd;
       fixed-address6 2001:db8:1234::1;
    }
    

六、排错工具

  1. 抓包分析 bash sudo tcpdump -i eth0 -vvv port 546 or port 547
  2. DHCPv6调试模式 bash sudo dhcpd -6 -d -f # 前台运行并输出调试信息

通过以上配置,Linux系统可完整支持IPv6地址分配。实际部署时需根据网络拓扑调整子网范围和路由选项。