
Большинство провайдеров выдают IPv6-префикс вместе с сервером, но он остаётся отключённым до ручной настройки. Эта статья описывает полный цикл: включить адрес, поднять маршрутизацию, закрыть порты через UFW/ip6tables и настроить PTR-запись - обратный DNS.
Тестовая среда: Ubuntu 22.04 LTS, ядро 5.15, провайдер выдаёт /64-префикс.
Проверяем, что провайдер выдал IPv6
Сначала убедитесь, что адрес вообще назначен интерфейсу:
ip -6 addr show
Если вывод пустой - адрес нужно прописать вручную или запросить у поддержки провайдера. Если адрес есть, но нет маршрута по умолчанию:
ip -6 route show
Строка default via fe80::1 dev eth0 означает, что шлюз настроен. Если её нет, маршрут нужно добавить вручную (раздел 3).

Назначаем статический IPv6-адрес через Netplan
Ubuntu 22.04 использует Netplan. Файл конфигурации обычно лежит в /etc/netplan/ - у разных провайдеров имя отличается (например 50-cloud-init.yaml).
ls /etc/netplan/
cat /etc/netplan/50-cloud-init.yaml
Пример конфигурации с добавленным IPv6:
network:
version: 2
ethernets:
eth0:
addresses:
- 192.0.2.10/24
- 2001:db8:abcd:1234::10/64
routes:
- to: default
via: 192.0.2.1
- to: ::/0
via: fe80::1
nameservers:
addresses:
- 8.8.8.8
- 2001:4860:4860::8888
Замените 2001:db8:abcd:1234::10/64 на реальный адрес из панели провайдера, а fe80::1 на IPv6-шлюз из документации хостера.
Применяем изменения:
sudo netplan apply
Проверяем связность:
ping6 -c 3 ipv6.google.com

Постоянный маршрут по умолчанию для IPv6
Если Netplan не используется (например, Debian 11 с /etc/network/interfaces), маршрут добавляют вручную:
# Временно (сбрасывается после перезагрузки):
sudo ip -6 route add default via fe80::1 dev eth0
# Постоянно - добавить в /etc/network/interfaces:
up ip -6 route add default via fe80::1 dev eth0
На CentOS/AlmaLinux 8–9 маршрут прописывают в /etc/sysconfig/network-scripts/route6-eth0:
::/0 via fe80::1 dev eth0Настройка брандмауэра: UFW для IPv6
По умолчанию UFW обрабатывает IPv4 и IPv6 вместе, но только если в /etc/default/ufw стоит IPV6=yes.
grep IPV6 /etc/default/ufw
# Должно быть: IPV6=yes
Базовые правила для IPv6-трафика:
# Разрешаем SSH
sudo ufw allow ssh
# Разрешаем HTTP/HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Включаем UFW (если ещё не включён)
sudo ufw enable
# Проверяем статус
sudo ufw status verbose
UFW автоматически создаёт зеркальные правила для IPv6. В выводе ufw status verbose будут строки вида ALLOW IN Anywhere (v6).
ip6tables напрямую
Если вы предпочитаете ip6tables без UFW:
# Разрешаем established-соединения
sudo ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Разрешаем ICMP6 (обязательно - без него не работает NDP)
sudo ip6tables -A INPUT -p ipv6-icmp -j ACCEPT
# Разрешаем SSH
sudo ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT
# Блокируем всё остальное
sudo ip6tables -A INPUT -j DROP
# Сохраняем правила
sudo apt install iptables-persistent -y
sudo netfilter-persistent save
Важно: не блокируйте ICMPv6. В отличие от IPv4, протокол NDP (Neighbor Discovery Protocol) работает именно через ICMPv6, и без него адресация IPv6 сломается полностью.
Проверка брандмауэра
# Смотрим текущие ip6tables правила
sudo ip6tables -L -n -v
# Тест подключения извне (с другого хоста с IPv6)
nc -6 -zv 2001:db8:abcd:1234::10 22

Настройка reverse DNS (PTR-запись)
PTR-запись позволяет определить имя хоста по IP-адресу. Без неё письма с вашего сервера часто попадают в спам, а host и nslookup возвращают "not found".
Настройка PTR для IPv6 делается в панели управления провайдера, а не на сервере. Порядок действий:
Войдите в панель управления VPS.
Найдите раздел "Networking" или "IP-адреса".
Напротив вашего IPv6-адреса нажмите "Edit PTR" или "Reverse DNS".
Введите полное доменное имя, например
vps.example.com.Сохраните. Изменение применяется за 1–24 часа в зависимости от провайдера.
Проверяем PTR-запись:
# Проверка через host
host 2001:db8:abcd:1234::10
# Или через dig
dig -x 2001:db8:abcd:1234::10
# Ожидаемый вывод:
# 0.1.0.0...ip6.arpa. IN PTR vps.example.com.
Для IPv6-адреса 2001:db8:abcd:1234::10 зона обратного DNS выглядит как 0.1.0.0.0.0.0.0.4.3.2.1.d.c.b.a.8.b.d.0.1.0.0.2.ip6.arpa - это 32 шестнадцатеричных символа адреса в обратном порядке.
Финальная проверка доступности
После всех настроек выполните итоговую проверку:
# Убеждаемся, что адрес активен
ip -6 addr show dev eth0
# Пингуем внешний IPv6-хост (Cloudflare DNS)
ping6 -c 5 2606:4700:4700::1111
# Проверяем исходящий IPv6 через curl
curl -6 https://ifconfig.me
Последняя команда должна вернуть ваш IPv6-адрес - это подтверждает, что исходящий трафик через IPv6 работает корректно.
Итог
Настройка IPv6 на VPS состоит из четырёх независимых шагов: назначение адреса (Netplan или /etc/network/interfaces), маршрут по умолчанию, правила брандмауэра с обязательным разрешением ICMPv6, и PTR-запись у провайдера. Каждый шаг проверяется отдельно: ip -6 addr, ping6, ip6tables -L, dig -x. Без PTR-записи почтовые серверы отклоняют письма с вашего IP, поэтому не откладывайте этот шаг, даже если основная цель - просто добавить IPv6-адрес к сайту.