Перейти к содержанию

IPv6: адреса, шлюзы и диагностика

IPv6 — отдельное семейство IP, с 128-битными адресами, протоколом обнаружения соседей NDP и механизмами Router Advertisement. В НАЙС.ОС CLOUD адресацией управляет systemd-networkd, DNS обслуживает systemd-resolved, фильтрация IPv6 выполняется через ip6tables. Настроить IPv4 недостаточно, если сервер имеет публичный IPv6.

1. Сначала определите фактическое состояние

ip -6 -br address
ip -6 route show
ip -6 rule show
networkctl list
resolvectl status
ip6tables -S
ss -lntup

Адрес fe80::/10 — link-local. Наличие только link-local не доказывает, что сервер подключён к глобальному IPv6. Адреса 2001:db8::/32 ниже зарезервированы для документации и не маршрутизируются в Интернет.

2. SLAAC и Router Advertisement

При обычной конфигурации интерфейс может принимать маршрутизаторные объявления и получать IPv6-адрес/маршрут без ручного статического IP. Поведение зависит от IPv6AcceptRA, параметров ядра, роли узла и особенностей облака. Не включайте RA слепо на маршрутизаторе, где требуется явная политика.

Пример профиля с IPv4 DHCP и разрешённым приёмом RA:

[Match]
Name=ens3

[Network]
DHCP=ipv4
IPv6AcceptRA=yes

Конкретный профиль объединяйте с уже выбранным конфигурационным файлом; не создавайте второй конфликтующий .network.

3. Статический IPv6

# Иллюстрация секций внутри существующего профиля ens3
[Match]
Name=ens3

[Network]
Address=2001:db8:120::10/64
DNS=2001:db8:120::53
IPv6AcceptRA=no

[Route]
Gateway=2001:db8:120::1

В реальной сети шлюз может быть link-local вида fe80::..., и тогда настройки маршрута требуют указания правильного интерфейса и, возможно, дополнительных параметров. Уточните схему провайдера до применения.

4. Фильтрация: отдельные правила IPv6

iptables не фильтрует IPv6. Для него применяется ip6tables. Проверяйте обе политики, в особенности INPUT и OUTPUT:

iptables -S
ip6tables -S
ip6tables -L -n -v --line-numbers

Для IPv6 критично не блокировать весь ICMPv6: Neighbor Discovery, Packet Too Big и часть служебных сообщений необходимы для корректной работы сети. Более подробный подход — в отдельной статье ip6tables.

5. Разделение диагностики

ip -6 route get 2001:db8:120::1
ping -6 -c 3 2001:db8:120::1
resolvectl query niceos.ru
getent ahostsv6 niceos.ru
ss -lntup
journalctl -b -u systemd-networkd --no-pager -n 80

Проверки с примерным адресом проведите только после замены его реальным узлом вашей сети. Если IP-связь есть, а имя не разрешается, смотрите resolved. Если адреса и маршрут есть, но приложения не соединяются, смотрите ip6tables и политику провайдера.

Типовые причины сбоев

  • В интерфейсе есть IPv6, но маршрут по умолчанию отсутствует.
  • По IPv6 слушает SSH/веб-сервис, хотя в IPv4 он закрыт.
  • ICMPv6 полностью блокируется и ломает NDP/PMTU.
  • Облачный провайдер передаёт IPv6 через специфичную модель RA/DHCPv6.
  • IPv6AcceptRA отключён из-за включённого маршрутизаторного режима.

Источники: Core/systemd/SPECS/systemd.spec, Core/iptables/SPECS/iptables.spec; systemd.network, IPv6 Linux kernel documentation.