opened image

Настройка IPv6 на VPS: адресация, брандмауэр, reverse DNS

 

Большинство провайдеров выдают 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 делается в панели управления провайдера, а не на сервере. Порядок действий:

  1. Войдите в панель управления VPS.

  2. Найдите раздел "Networking" или "IP-адреса".

  3. Напротив вашего IPv6-адреса нажмите "Edit PTR" или "Reverse DNS".

  4. Введите полное доменное имя, например vps.example.com.

  5. Сохраните. Изменение применяется за 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-адрес к сайту.