Конфигурирование DHCPv6 и SLAAC в IPv6-сетях
Привет, Хабр!
С развитием интернета и исчерпанием адресного пространства IPv4 переход на IPv6 становится необходимым. IPv6 расширяет количество доступных адресов и предлагает некоторые улучшения в безопасности, производительности и упрощении сетевой архитектуры.
В некоторых случаях возможна комбинация обоих методов, что позволяет использовать преимущества каждого из них и создавать гибкие и масштабируемые сети.
IPv6 — это протокол следующего поколения, разработанный для решения ограничений IPv4. Его основные фичи:
Расширенное адресное пространство: 128-битные адреса позволяют использовать огромный диапазон уникальных IP-адресов.
Улучшенная безопасность: встроенная поддержка IPsec обеспечивает более надежную защиту данных.
Эффективность и производительность: оптимизированная заголовочная часть пакета и улучшенная маршрутизация.
Автоконфигурация адресов: упрощает процесс настройки устройств в сети.
Основные инструменты автоматической конфигурации в IPv6-сетях — DHCPv6 и SLAAC:
SLAAC (Stateless address autoconfiguration): позволяет устройствам самостоятельно генерировать свои IPv6-адреса на основе префиксов, объявленных маршрутизаторами. Подходит для сетей, где требуется минимальное вмешательство администратора.
DHCPv6 (Dynamic host configuration protocol for IPv6): централизованный контроль над распределением адресов и доп. сетевых параметров.Предпочтителен в средах, где необходим строгий контроль над адресным пространством и настройками клиентов.
В некоторых случаях возможна комбинация обоих методов.
Подготовка к настройке
Семь раз отмерь — один раз отрежь. Правильная подготовка сэкономит кучу времени и нервов в дальнейшем.
Оборудование:
Маршрутизатор с поддержкой IPv6: может быть коммерческий маршрутизатор от Cisco, Juniper, Mikrotik или даже старый ПК с двумя сетевыми картами и Linux на борту. Главное — поддержка IPv6 и возможность конфигурации DHCPv6 и SLAAC.
Клиентские устройства: компьютеры, ноутбуки или виртуальные машины с поддержкой IPv6.
Программное обеспечение:
Операционная система с поддержкой IPv6: современные версии Windows, Linux и macOS уже «из коробки» поддерживают IPv6.
DHCPv6-серверное ПО: например,
isc-dhcp-server
для Linux или встроенные службы DHCP в коммерческих маршрутизаторах.Демон Radvd: для отправки Router Advertisement сообщений при настройке SLAAC на Linux-маршрутизаторах.
Инструменты диагностики и мониторинга:
ping6
,traceroute6
,tcpdump
,Wireshark
— все это пригодится для отладки и проверки работоспособности настроек.
Прежде чем внедрять новые настройки в рабочую сеть, рекомендуется создать тестовую среду.
Используйте отдельный коммутатор или VLAN для сегментации тестовой сети. Если используете виртуальные машины, настройте виртуальный коммутатор для изоляции трафика.
Если вы используете Linux-сервер в качестве маршрутизатора:
Включаем пересылку IPv6-пакетов:
echo "net.ipv6.conf.all.forwarding=1" | sudo tee -a /etc/sysctl.conf sudo sysctl -p
Устанавливаем демон radvd для SLAAC:
sudo apt-get install radvd
Установим DHCPv6-сервер:
sudo apt-get install isc-dhcp-server
На клиентских устройствах должна быть включена автоматическая конфигурация IPv6-адресов. Обычно это настроено по умолчанию, но проверить не помешает.
Используемping6
для проверки доступности устройств:
ping6 -c 4 2001:db8:1::1
Используемые инструменты
1. ISC DHCP Server
Один из самых популярных DHCP-серверов с поддержкой IPv6.
Настройка /etc/dhcp/dhcpd.conf
:
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet6 2001:db8:1::/64 {
range6 2001:db8:1::100 2001:db8:1::ffff;
option dhcp6.name-servers 2001:db8::53;
option dhcp6.domain-search "example.com";
}
Запуск сервера:
sudo service isc-dhcp-server restart
2. Radvd
Используется для отправки сообщений Router Advertisement в сетях IPv6, необходим для SLAAC.
Настройка /etc/radvd.conf
:
interface eth0
{
AdvSendAdvert on;
MinRtrAdvInterval 30;
MaxRtrAdvInterval 100;
prefix 2001:db8:1::/64
{
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
};
};
Запуск демона:
sudo service radvd restart
Инструменты диагностики
ping6: Проверка доступности узлов по IPv6.
ping6 google.com
traceroute6: Трассировка маршрута до узла.
traceroute6 google.com
tcpdump: Захват трафика для анализа.
sudo tcpdump -i eth0 -n -vv ip6
Wireshark: Графический инструмент для детального анализа сетевого трафика.
Настройка клиентских устройств
Linux:
Настраиваем сетевой интерфейс для автоматической конфигурации IPv6.
Файл /etc/network/interfaces
(Debian/Ubuntu):
auto eth0
iface eth0 inet6 auto
Windows:
Открываем командную строку с правами администратора и вводим:
netsh interface ipv6 set interface "Ethernet" routerdiscovery=enable
macOS:
IPv6 обычно включен по умолчанию
Настройка DHCPv6 и SLAAC на Linux
Настройка DHCPv6
DHCPv6 позволяет централизованно управлять раздачей IPv6-адресов и дополнительных параметров сети.
Устанавливаем DHCP-сервер с поддержкой IPv6:
sudo apt install isc-dhcp-server -y
Настраиваем DHCPv6-сервер:
Файл конфигурации
Открываем файл /etc/dhcp/dhcpd.conf
для редактирования:
sudo nano /etc/dhcp/dhcpd.conf
Пример конфигурации
# Включаем логирование
log-facility local7;
# Определяем глобальные параметры
default-lease-time 600;
max-lease-time 7200;
# Определяем подсеть для DHCPv6
subnet6 2001:db8:1::/64 {
range6 2001:db8:1::100 2001:db8:1::FFFF;
option dhcp6.name-servers 2001:db8:1::53;
option dhcp6.domain-search "example.com";
}
subnet6: Определяет IPv6-подсеть.
range6: Задает диапазон IPv6-адресов для выдачи.
option dhcp6.name-servers: Указывает DNS-серверы.
option dhcp6.domain-search: Указывает доменные имена для поиска.
Указываем, на каком интерфейсе будет работать DHCPv6-сервер. Открываем файл /etc/default/isc-dhcp-server
:
sudo nano /etc/default/isc-dhcp-server
Находим строку INTERFACESv6
и указываем нужный интерфейс:
INTERFACESv6="eth0"
Для корректной работы IPv6 нужно включить форвардинг пакетов:
echo "net.ipv6.conf.all.forwarding=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
Перезапускаем сервис и добавляем его в автозагрузку:
sudo systemctl restart isc-dhcp-server
sudo systemctl enable isc-dhcp-server
Проверяем статус:
sudo systemctl status isc-dhcp-server
Убеждаемся, что порты DHCPv6 не блокируются:
sudo ip6tables -A INPUT -p udp --dport 546 -j ACCEPT
sudo ip6tables -A INPUT -p udp --dport 547 -j ACCEPT
На клиентской машине открываем файл /etc/network/interfaces
:
sudo nano /etc/network/interfaces
Добавляем или редактируем следующие строки:
auto eth0
iface eth0 inet6 dhcp
Перезапускаем етевой интерфейс:
sudo ifdown eth0 && sudo ifup eth0
На клиенте проверяем, получил ли он IPv6-адрес:
ip -6 addr show eth0
Должен появиться адрес из диапазона, указанного в range6
.
Пробуем пропинговать сервер:
ping6 2001:db8:1::1
Проверяем логи на сервере:
sudo tail -f /var/log/syslog | grep dhcpd
Используем tcpdump
для мониторинга DHCPv6-трафика:
sudo tcpdump -i eth0 port 546 or port 547 -n -vv
Настройка SLAAC
SLAAC позволяет устройствам самостоятельно настраивать свои IPv6-адреса на основе префиксов, объявленных маршрутизаторами.
Устанавливаем демон radvd
, который будет рассылать router advertisement сообщения:
sudo apt install radvd -y
Редактируем файл /etc/radvd.conf
:
sudo nano /etc/radvd.conf
Пример конфигурации
interface eth0
{
AdvSendAdvert on;
MinRtrAdvInterval 3;
MaxRtrAdvInterval 10;
AdvManagedFlag off;
AdvOtherConfigFlag off;
prefix 2001:db8:1::/64
{
AdvOnLink on;
AdvAutonomous on;
AdvValidLifetime 86400;
AdvPreferredLifetime 14400;
};
RDNSS 2001:db8:1::53
{
AdvRDNSSLifetime 3600;
};
DNSSL example.com
{
AdvDNSSLLifetime 3600;
};
};
AdvSendAdvert: Включает отправку RA-сообщений.
AdvManagedFlag: Указывает, использовать ли DHCPv6 для адресов (выключен).
AdvOtherConfigFlag: Указывает, использовать ли DHCPv6 для других опций (выключен).
prefix: Определяет префикс сети.
RDNSS: Указывает DNS-серверы.
DNSSL: Указывает доменные суффиксы поиска.
Включим пересылку IPv6-пакетов
Если не сделали этого ранее:
echo "net.ipv6.conf.all.forwarding=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
Перезапускаем сервис и добавляем его в автозагрузку:
sudo systemctl restart radvd
sudo systemctl enable radvd
Проверяем статус:
sudo systemctl status radvd
На клиентских машинах убеждаемся, что интерфейс настроен на автоматическую конфигурацию:
sudo nano /etc/network/interfaces
Добавляем или редактируем:
auto eth0
iface eth0 inet6 auto
Перезапускаем интерфейс:
sudo ifdown eth0 && sudo ifup eth0
На клиенте проверяем полученные IPv6-адреса:
ip -6 addr show eth0
Нужно увидеть адрес, начинающийся с 2001:db8:1::
, который был автоматически сгенерирован.
Убеждаемся, что маршруты настроены корректно:
ip -6 route show
Должен быть маршрут по умолчанию через ваш маршрутизатор.
Проверяем логи на сервере:
sudo tail -f /var/log/syslog | grep radvd
Используем tcpdump
для мониторинга RA-сообщений:
sudo tcpdump -i eth0 icmp6 -n -vv
Для повышения конфиденциальности можно включить Privacy Extensions на клиентах:
echo "net.ipv6.conf.all.use_tempaddr=2" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
Перезапускаем интерфейс:
sudo ifdown eth0 && sudo ifup eth0
Теперь у клиента будут временные IPv6-адреса.
Если нужно использовать SLAAC для адресов и DHCPv6 для дополнительных опций:
На сервере Radvd
Включаем флаг AdvOtherConfigFlag
:
AdvOtherConfigFlag on;
На сервере DHCPv6
Настраиваем сервер, чтобы он предоставлял только дополнительные опции без выдачи адресов. В dhcpd.conf
убераем секцию range6
и оставляем только необходимые опции:
option dhcp6.name-servers 2001:db8:1::53;
option dhcp6.domain-search "example.com";
Удачной настройки и стабильной работы вашей сети!
ISIS и IPv6: неужели опять новый протокол маршрутизации?
Обсудим на открытом уроке сегодня (18 сентября) вечером. В результате урока разберем основы реализации поддержки IPv6 в протоколе маршрутизации ISIS, а также на практике реализуем сеть с поддержкой IPv6 и ISIS. Записывайтесь на урок по ссылке.