Конфигурирование 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-сервер в качестве маршрутизатора:

  1. Включаем пересылку IPv6-пакетов:

    echo "net.ipv6.conf.all.forwarding=1" | sudo tee -a /etc/sysctl.conf
    sudo sysctl -p
  2. Устанавливаем демон 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. Записывайтесь на урок по ссылке.

Источник: https://habr.com/ru/companies/otus/articles/843186/


Интересные статьи

Интересные статьи

Продолжение первой части статьи Разбираемся со сканерами в Linux: получение информации об устройстве и поиск подходящего драйвера.Во второй части начнем работать со сканирующим устройством. Разбе...
Вдохновившись аргументами из статьи «IPv6 — прекрасный мир, стоящий скорого перехода на него», мне стало катастрофически не хватать IPv6. Конечная цель: обеспечить каждое из своих устройс...
Сервер Haproxy имеет встроенные средства для выполнения скриптов Lua. Идея использовать именно язык программирования Lua для расширения возможностей сервера не нова. Например, на Lua м...
Как стать DevOps инженером за полгода или даже быстрее. Часть 1. Введение Освежим память по-быстрому В первой части я утверждал, что работа инженера DevOps заключается в создании полностью ав...
Еще раз просмотрев функционал утилиты cryptoarmpkcs, обратил внимание на то, что она, в основном работая с криптографическими токенами/смаркартами PKCS#11, не имеет встроенного функционала для их...