Привет, Хабр!

С развитием интернета и исчерпанием адресного пространства 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. Записывайтесь на урок по ссылке.

Комментарии (0)