DHCPv6 Server в VyOS
DHCPv6 (Dynamic Host Configuration Protocol for IPv6) - это протокол автоматической конфигурации IPv6-адресов и параметров сети для клиентов. VyOS предоставляет полнофункциональный DHCPv6-сервер для централизованного управления IPv6-адресацией в сети.
Обзор
DHCPv6 используется для:
- Автоматическое назначение IPv6 адресов: Централизованное управление адресацией
- Конфигурация параметров: DNS-серверы, домен поиска, NTP-серверы
- Статические резервирования: Фиксированные адреса для серверов и оборудования
- Prefix delegation: Делегирование префиксов для роутеров (DHCPv6-PD)
- Интеграция с SLAAC: Работа совместно с Router Advertisement
DHCPv6 vs SLAAC
| Характеристика | DHCPv6 | SLAAC (Stateless) |
|---|---|---|
| Назначение адреса | Stateful (сервер контролирует) | Stateless (клиент генерирует) |
| DNS-серверы | Да | Через RDNSS (RA) |
| Домен поиска | Да | Через DNSSL (RA) |
| Централизованное управление | Да | Ограниченное |
| Статические резервирования | Да | Нет |
| Отслеживание клиентов | Да (lease tracking) | Нет |
Режимы работы:
- Stateful DHCPv6: Полное управление адресами (managed flag в RA)
- Stateless DHCPv6: Только параметры, адреса через SLAAC (other-config flag)
- Гибридный: SLAAC для адресов + DHCPv6 для параметров
Базовая конфигурация
Простой DHCPv6 сервер
# Shared network для DHCPv6
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 address-range start 2001:db8:1::100 stop 2001:db8:1::200
# DNS-серверы
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 name-server 2001:4860:4860::8888
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 name-server 2001:4860:4860::8844
# Домен поиска
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 domain-search example.com
# Применить на интерфейс
set service dhcpv6-server shared-network-name LAN interface eth1
commit
saveRouter Advertisement для managed режима
DHCPv6 требует Router Advertisement для информирования клиентов:
# Router Advertisement на интерфейсе
set service router-advert interface eth1 prefix 2001:db8:1::/64
# Managed flag (клиенты используют DHCPv6 для адресов)
set service router-advert interface eth1 managed-flag
# Other-config flag (клиенты используют DHCPv6 для параметров)
set service router-advert interface eth1 other-config-flag
commit
saveСтатическое резервирование (static mapping)
# Статическое резервирование по DUID
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 static-mapping server1 identifier 00:01:00:01:12:34:56:78:ab:cd:ef:01:23:45
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 static-mapping server1 ipv6-address 2001:db8:1::10
commit
saveПримечание: DHCPv6 использует DUID (DHCP Unique Identifier) вместо MAC-адреса.
Расширенная конфигурация
Stateless DHCPv6 (только параметры)
# DHCPv6 для параметров (без адресов)
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 name-server 2001:4860:4860::8888
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 name-server 2001:4860:4860::8844
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 domain-search example.com
# НЕ устанавливать address-range (клиенты получают адреса через SLAAC)
set service dhcpv6-server shared-network-name LAN interface eth1
# Router Advertisement без managed flag
set service router-advert interface eth1 prefix 2001:db8:1::/64
set service router-advert interface eth1 other-config-flag # Только параметры
commit
saveDHCPv6 Prefix Delegation (PD)
Prefix Delegation позволяет делегировать IPv6 префиксы downstream роутерам:
# Prefix delegation pool
set service dhcpv6-server shared-network-name LAN subnet 2001:db8::/48 prefix-delegation prefix 2001:db8:1000::/52 delegated-length 56
# Применить на интерфейс
set service dhcpv6-server shared-network-name LAN interface eth1
commit
saveDownstream роутер запросит /56 префикс из pool 2001:db8:1000::/52.
Множественные shared networks
# LAN 1
set service dhcpv6-server shared-network-name LAN1 subnet 2001:db8:1::/64 address-range start 2001:db8:1::100 stop 2001:db8:1::200
set service dhcpv6-server shared-network-name LAN1 subnet 2001:db8:1::/64 name-server 2001:4860:4860::8888
set service dhcpv6-server shared-network-name LAN1 interface eth1
# LAN 2
set service dhcpv6-server shared-network-name LAN2 subnet 2001:db8:2::/64 address-range start 2001:db8:2::100 stop 2001:db8:2::200
set service dhcpv6-server shared-network-name LAN2 subnet 2001:db8:2::/64 name-server 2001:4860:4860::8888
set service dhcpv6-server shared-network-name LAN2 interface eth2
commit
saveLease time configuration
# Настройка времени аренды
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 lease-time default 86400 # 24 часа
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 lease-time minimum 3600 # 1 час
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 lease-time maximum 172800 # 48 часов
commit
saveNTP и SIP серверы
# NTP серверы через DHCPv6
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 nis-server 2001:db8:1::50
# SIP серверы (для VoIP)
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 sip-server-address 2001:db8:1::60
commit
saveVendor options
# Vendor-specific options
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 vendor-option cisco option 1 value 'option-value'
commit
saveПримеры конфигураций
Пример 1: Базовый managed DHCPv6
# DHCPv6 сервер
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 address-range start 2001:db8:1::100 stop 2001:db8:1::200
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 name-server 2001:4860:4860::8888
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 name-server 2001:4860:4860::8844
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 domain-search example.com
set service dhcpv6-server shared-network-name LAN interface eth1
# Router Advertisement
set service router-advert interface eth1 prefix 2001:db8:1::/64
set service router-advert interface eth1 managed-flag
set service router-advert interface eth1 other-config-flag
# IPv6 на интерфейсе
set interfaces ethernet eth1 address 2001:db8:1::1/64
commit
saveПример 2: Stateless DHCPv6 + SLAAC
# DHCPv6 только для параметров (без адресов)
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 name-server 2001:4860:4860::8888
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 domain-search example.com
set service dhcpv6-server shared-network-name LAN interface eth1
# Router Advertisement для SLAAC (без managed flag)
set service router-advert interface eth1 prefix 2001:db8:1::/64
set service router-advert interface eth1 other-config-flag # Только параметры через DHCPv6
# IPv6 на интерфейсе
set interfaces ethernet eth1 address 2001:db8:1::1/64
commit
saveПример 3: Статические резервирования для серверов
# DHCPv6 pool
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 address-range start 2001:db8:1::100 stop 2001:db8:1::200
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 name-server 2001:4860:4860::8888
set service dhcpv6-server shared-network-name LAN interface eth1
# Статические резервирования
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 static-mapping web-server identifier 00:01:00:01:aa:bb:cc:dd:11:22:33:44:55:66
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 static-mapping web-server ipv6-address 2001:db8:1::10
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 static-mapping db-server identifier 00:01:00:01:aa:bb:cc:dd:77:88:99:aa:bb:cc
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 static-mapping db-server ipv6-address 2001:db8:1::11
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 static-mapping dns-server identifier 00:01:00:01:aa:bb:cc:dd:dd:ee:ff:00:11:22
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 static-mapping dns-server ipv6-address 2001:db8:1::53
# Router Advertisement
set service router-advert interface eth1 prefix 2001:db8:1::/64
set service router-advert interface eth1 managed-flag
commit
saveПример 4: DHCPv6 Prefix Delegation для филиалов
Головной офис (делегирует префиксы):
# DHCPv6 с Prefix Delegation
set service dhcpv6-server shared-network-name WAN subnet 2001:db8::/48 prefix-delegation prefix 2001:db8:1000::/52 delegated-length 56
set service dhcpv6-server shared-network-name WAN interface eth0
# Router Advertisement на WAN
set service router-advert interface eth0 prefix 2001:db8::/64
# IPv6 на WAN интерфейсе
set interfaces ethernet eth0 address 2001:db8::1/64
commit
saveФилиал (запрашивает prefix delegation):
# DHCPv6 client для получения префикса
set interfaces ethernet eth0 dhcpv6-options prefix-delegation interface eth1 address 1
set interfaces ethernet eth0 dhcpv6-options prefix-delegation interface eth1 sla-id 0
# Router Advertisement на LAN для клиентов
set service router-advert interface eth1 prefix ::/64 # Будет использован делегированный префикс
commit
saveПример 5: Множественные VLAN с DHCPv6
# VLAN 10 - Management
set interfaces ethernet eth1 vif 10 address 2001:db8:10::1/64
set service dhcpv6-server shared-network-name MGMT subnet 2001:db8:10::/64 address-range start 2001:db8:10::100 stop 2001:db8:10::150
set service dhcpv6-server shared-network-name MGMT subnet 2001:db8:10::/64 name-server 2001:db8:10::53
set service dhcpv6-server shared-network-name MGMT interface eth1.10
set service router-advert interface eth1.10 prefix 2001:db8:10::/64
set service router-advert interface eth1.10 managed-flag
# VLAN 20 - Users
set interfaces ethernet eth1 vif 20 address 2001:db8:20::1/64
set service dhcpv6-server shared-network-name USERS subnet 2001:db8:20::/64 address-range start 2001:db8:20::100 stop 2001:db8:20::500
set service dhcpv6-server shared-network-name USERS subnet 2001:db8:20::/64 name-server 2001:4860:4860::8888
set service dhcpv6-server shared-network-name USERS interface eth1.20
set service router-advert interface eth1.20 prefix 2001:db8:20::/64
set service router-advert interface eth1.20 managed-flag
# VLAN 30 - Guest (stateless)
set interfaces ethernet eth1 vif 30 address 2001:db8:30::1/64
set service dhcpv6-server shared-network-name GUEST subnet 2001:db8:30::/64 name-server 2001:4860:4860::8888
set service dhcpv6-server shared-network-name GUEST interface eth1.30
set service router-advert interface eth1.30 prefix 2001:db8:30::/64
set service router-advert interface eth1.30 other-config-flag # Stateless
commit
saveПример 6: DHCPv6 с VRF
# VRF для изоляции
set vrf name CUSTOMER-A table 100
# Интерфейс в VRF
set interfaces ethernet eth1 vrf CUSTOMER-A
set interfaces ethernet eth1 address 2001:db8:100::1/64
# DHCPv6 в VRF
set service dhcpv6-server shared-network-name VRF-A subnet 2001:db8:100::/64 address-range start 2001:db8:100::100 stop 2001:db8:100::200
set service dhcpv6-server shared-network-name VRF-A subnet 2001:db8:100::/64 name-server 2001:4860:4860::8888
set service dhcpv6-server shared-network-name VRF-A interface eth1
# Router Advertisement
set service router-advert interface eth1 prefix 2001:db8:100::/64
set service router-advert interface eth1 managed-flag
commit
saveМониторинг и диагностика
Просмотр active leases
# Показать все DHCPv6 leases
show dhcpv6 server leases
# Пример вывода:
# IPv6 address DUID State
# 2001:db8:1::100 00:01:00:01:12:34:56:78:aa:bb:cc:dd:ee:ff activeПросмотр статистики
# Статистика DHCPv6 сервера
show dhcpv6 server statistics
# Вывод включает:
# - Количество активных leases
# - Доступные адреса в pool
# - Использование pool (%)Проверка конфигурации
# Показать конфигурацию DHCPv6
show configuration service dhcpv6-server
# Показать Router Advertisement
show configuration service router-advertЛоги DHCPv6
# Логи DHCPv6 сервера
show log | match dhcpv6
# Real-time мониторинг
monitor log | match dhcpv6
# Детальные логи (если включен debug)
show log dhcp6Проверка DUID клиента
На клиенте (Linux):
# Просмотр DUID
cat /var/lib/dhcp/dhclient6.leases | grep ia-na
# Windows PowerShell
Get-NetIPConfiguration | Select-Object InterfaceAlias, IPv6Address
# macOS
ipconfig getv6packet en0Тестирование с клиента
# Linux - запрос DHCPv6 адреса
sudo dhclient -6 -v eth0
# Просмотр полученного адреса
ip -6 addr show eth0
# Просмотр DNS через DHCPv6
cat /etc/resolv.confПроверка Router Advertisement
# На роутере
show ipv6 route
# Отправка RA вручную (для теста)
sudo radvdump
# На клиенте (Linux)
ip -6 route showУстранение неполадок
Проблема: Клиенты не получают IPv6 адреса
Диагностика:
# 1. Проверка DHCPv6 конфигурации
show configuration service dhcpv6-server
# 2. Проверка Router Advertisement
show configuration service router-advert
# 3. Проверка IPv6 forwarding
sysctl net.ipv6.conf.all.forwarding
# 4. Логи
show log | match dhcpv6
# 5. Проверка интерфейса
show interfaces ethernet eth1Решение:
# Убедиться, что managed-flag установлен
set service router-advert interface eth1 managed-flag
# Проверить address-range
show configuration service dhcpv6-server shared-network-name LAN
# Перезапуск сервиса (если необходимо)
restart dhcpv6 server
commit
saveПроблема: DHCPv6 работает, но нет DNS
Причина: DNS передается только через DHCPv6 или RDNSS в RA.
Решение:
# Добавить name-server в DHCPv6
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 name-server 2001:4860:4860::8888
# Или использовать RDNSS в Router Advertisement
set service router-advert interface eth1 name-server 2001:4860:4860::8888
commit
saveПроблема: Статическое резервирование не работает
Причина: Неправильный DUID.
Диагностика:
# Проверка DUID в логах
show log | match dhcpv6 | match DUID
# На клиенте (Linux)
cat /var/lib/dhcp/dhclient6.leasesРешение:
# Использовать правильный DUID из логов
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 static-mapping server1 identifier <correct-duid>
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 static-mapping server1 ipv6-address 2001:db8:1::10
commit
save
# Обновить lease на клиенте
# Linux: sudo dhclient -6 -r eth0 && sudo dhclient -6 eth0Проблема: Prefix Delegation не работает
Диагностика:
# На сервере - проверка PD конфигурации
show configuration service dhcpv6-server | match prefix-delegation
# На клиенте - проверка dhcpv6-options
show configuration interfaces ethernet eth0 dhcpv6-options
# Логи
show log | match "prefix delegation"Решение:
# На сервере - убедиться, что PD настроен
set service dhcpv6-server shared-network-name WAN subnet 2001:db8::/48 prefix-delegation prefix 2001:db8:1000::/52 delegated-length 56
# На клиенте - настроить PD
set interfaces ethernet eth0 dhcpv6-options prefix-delegation interface eth1 address 1
set interfaces ethernet eth0 dhcpv6-options prefix-delegation interface eth1 sla-id 0
commit
saveПроблема: DHCPv6 pool исчерпан
Диагностика:
# Проверка leases
show dhcpv6 server leases
# Статистика использования
show dhcpv6 server statisticsРешение:
# Расширить address-range
delete service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 address-range
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 address-range start 2001:db8:1::100 stop 2001:db8:1::500
# Или уменьшить lease time
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 lease-time default 3600 # 1 час
commit
saveПроблема: Клиенты получают адреса через SLAAC вместо DHCPv6
Причина: Managed flag не установлен в RA.
Решение:
# Установить managed-flag
set service router-advert interface eth1 managed-flag
# Перезапуск RA
restart router-advert
commit
save
# На клиентах обновить конфигурацию
# Linux: sudo dhclient -6 -r eth0 && sudo dhclient -6 eth0Лучшие практики
1. Выбор правильного режима
# Managed DHCPv6 - для полного контроля
set service router-advert interface eth1 managed-flag
# Stateless - для простоты (SLAAC + DHCPv6 параметры)
set service router-advert interface eth1 other-config-flag2. Резервирование адресов для критичных сервисов
# Статические резервирования для серверов
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 static-mapping critical-server identifier <duid>
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 static-mapping critical-server ipv6-address 2001:db8:1::103. Правильный размер pool
Планируйте размер address-range с запасом:
# Для 100 клиентов - pool на 200-300 адресов
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 address-range start 2001:db8:1::100 stop 2001:db8:1::4004. DNS конфигурация
Всегда настраивайте DNS-серверы:
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 name-server 2001:4860:4860::8888
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 name-server 2001:4860:4860::8844
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 domain-search example.com5. Мониторинг использования pool
Регулярно проверяйте использование:
show dhcpv6 server statistics6. Lease time для различных сценариев
# Стабильная сеть - длинный lease time
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 lease-time default 86400 # 24 часа
# Guest network - короткий lease time
set service dhcpv6-server shared-network-name GUEST subnet 2001:db8:30::/64 lease-time default 3600 # 1 час7. Документирование статических резервирований
Документируйте все static mappings:
# Комментарии в конфигурации
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 static-mapping web-server ipv6-address 2001:db8:1::10
# Web server - Apache, production8. Безопасность
Используйте firewall для защиты DHCPv6:
set firewall ipv6 name LAN_LOCAL rule 100 action accept
set firewall ipv6 name LAN_LOCAL rule 100 protocol udp
set firewall ipv6 name LAN_LOCAL rule 100 destination port 546-5479. Интеграция с DHCPv4
Поддерживайте dual-stack:
# DHCPv4
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 default-router 192.168.1.1
# DHCPv6
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 address-range start 2001:db8:1::100 stop 2001:db8:1::20010. Логирование и мониторинг
Настройте логирование для аудита:
set system syslog file dhcpv6.log facility daemon level infoПолезные команды
# Показать DHCPv6 leases
show dhcpv6 server leases
# Статистика
show dhcpv6 server statistics
# Конфигурация DHCPv6
show configuration service dhcpv6-server
# Конфигурация Router Advertisement
show configuration service router-advert
# Логи
show log | match dhcpv6
monitor log | match dhcpv6
# Restart DHCPv6 server
restart dhcpv6 server
# Restart Router Advertisement
restart router-advert
# Проверка IPv6 connectivity
ping 2001:db8:1::100
# IPv6 routing table
show ipv6 route
# Проверка интерфейсов
show interfacesИнтеграция с другими функциями
DHCPv6 + DNS Forwarding
# DHCPv6 указывает на локальный DNS
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 name-server 2001:db8:1::1
# DNS Forwarding на роутере
set service dns forwarding listen-address 2001:db8:1::1
set service dns forwarding name-server 2001:4860:4860::8888DHCPv6 + Firewall
# Разрешить DHCPv6 трафик
set firewall ipv6 name WAN_LOCAL rule 100 action accept
set firewall ipv6 name WAN_LOCAL rule 100 protocol udp
set firewall ipv6 name WAN_LOCAL rule 100 source port 547
set firewall ipv6 name WAN_LOCAL rule 100 destination port 546DHCPv6 + High Availability
В HA setup DHCPv6 pool должен быть разделен между роутерами или использовать failover (пока не поддерживается в VyOS напрямую).
Заключение
DHCPv6 Server в VyOS предоставляет полнофункциональное управление IPv6 адресацией для современных сетей. Поддержка как stateful (managed), так и stateless режимов, prefix delegation, статических резервирований и интеграция с Router Advertisement делают VyOS мощной платформой для IPv6 развертывания.
Основные преимущества DHCPv6 в VyOS:
- Полный контроль над IPv6 адресацией
- Статические резервирования для критичных устройств
- Prefix Delegation для hierarchical networks
- Интеграция с SLAAC
- Централизованное управление параметрами (DNS, NTP)
Рекомендации для production:
- Выбирайте правильный режим (managed vs stateless)
- Планируйте размер pool с запасом
- Используйте статические резервирования для серверов
- Настраивайте DNS и domain-search
- Мониторьте использование pool
- Документируйте все резервирования
- Интегрируйте с dual-stack (IPv4 + IPv6)
- Применяйте firewall rules для защиты
DHCPv6 в VyOS обеспечивает enterprise-grade управление IPv6 инфраструктурой с гибкостью конфигурации и надежностью, необходимой для production environments.