Если сервер пока не отвечает по IPv6, скорее всего, адрес выдан, но не настроен в системе. В этом руководстве показано, как задать его статически на Ubuntu, Debian и AlmaLinux, проверить связь и защитить брандмауэром. Оно подходит для любого VPS Linux Infrawire с выделенным IPv6.
📋 Требования
- VPS с SSH-доступом root под Ubuntu 24.04, Debian 12 или AlmaLinux 9 / Rocky 9. В личном кабинете вы найдёте IP-адрес и пароль root.
- Ваш IPv6-адрес, длина префикса и шлюз, обозначенные ниже как
VPS_IPV6,PREFIX(часто64) иIPV6_GATEWAY. - Имя интерфейса (в примерах
eth0):
Baship -br link ip -6 addr show ip -6 route show
Пока вы правите сетевые файлы, держите открытой вторую SSH-сессию, чтобы ошибка не лишила вас доступа.
🟠 Ubuntu 24.04: Netplan
Файлы Netplan находятся в /etc/netplan/. В облачных образах файл часто создаётся cloud-init и может быть перезаписан при перезагрузке, поэтому сначала отключите управление сетью в cloud-init:
Bashsudo nano /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
YAMLnetwork: {config: disabled}
Затем отредактируйте ваш файл Netplan (например, /etc/netplan/50-cloud-init.yaml) и добавьте IPv6-адрес и маршрут. Строки IPv4 оставьте:
YAML1network: 2 version: 2 3 ethernets: 4 eth0: 5 addresses: 6 - VPS_IP/IPV4_PREFIX 7 - VPS_IPV6/PREFIX 8 routes: 9 - to: default 10 via: IPV4_GATEWAY 11 - to: default 12 via: IPV6_GATEWAY 13 nameservers: 14 addresses: [1.1.1.1, 2606:4700:4700::1111]
Bashsudo chmod 600 /etc/netplan/*.yaml sudo netplan try
Если не подтвердить изменения, netplan try автоматически откатит их через 120 секунд, что защищает от неверной конфигурации. Подтвердите клавишей Enter или выполните sudo netplan apply, когда будете уверены.
🔴 Debian 12: /etc/network/interfaces
Bashsudo nano /etc/network/interfaces
Добавьте блок для того же интерфейса:
INIiface eth0 inet6 static address VPS_IPV6/PREFIX gateway IPV6_GATEWAY dns-nameservers 2606:4700:4700::1111
Строка dns-nameservers работает только при установленном пакете resolvconf; иначе укажите резолвер в /etc/resolv.conf. Примените изменения:
Bashsudo systemctl restart networking
Перезапуск службы может ненадолго оборвать соединение. Если интерфейс получает IPv4 по DHCP и вы хотите лишь добавить IPv6, можно также выполнить из консоли sudo ifdown eth0 && sudo ifup eth0.
🔵 AlmaLinux 9 / Rocky 9: nmcli
Интерфейсом управляет NetworkManager. Сначала выведите названия подключений:
Bashnmcli connection show
Используйте увиденное имя (CON_NAME, например System eth0 или cloud-init eth0):
Bashsudo nmcli connection modify 'CON_NAME' ipv6.method manual \ ipv6.addresses VPS_IPV6/PREFIX \ ipv6.gateway IPV6_GATEWAY \ ipv6.dns 2606:4700:4700::1111 sudo nmcli connection up 'CON_NAME'
Изменение сохраняется в профиле подключения и переживает перезагрузки.
✅ Проверка соединения
Baship -6 addr show dev eth0 ip -6 route show default ping -6 -c 3 IPV6_GATEWAY ping -6 -c 3 2606:4700:4700::1111 curl -6 -I https://www.debian.org
В старых системах ping6 делает то же, что ping -6. Проверьте также с другой машины, где есть IPv6, используя адрес вашего VPS:
Bashping -6 -c 3 VPS_IPV6 ssh root@VPS_IPV6
🔥 Брандмауэр для IPv6
Правило, существующее только для IPv4, оставляет сторону IPv6 открытой. В UFW убедитесь, что поддержка IPv6 включена:
Bashgrep IPV6 /etc/default/ufw # должно быть IPV6=yes sudo ufw allow 22/tcp sudo ufw allow 80,443/tcp sudo ufw enable sudo ufw status verbose
Каждое правило тогда появится дважды, второй раз с пометкой (v6). В AlmaLinux firewalld охватывает оба семейства теми же командами:
Bashsudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
🛠️ Устранение неполадок
Адрес есть, но ping до шлюза не проходит. Проверьте длину префикса и шлюз. Некоторые сети используют link-local шлюз вроде fe80::1; тогда укажите его в качестве шлюза и добавьте dev eth0 к маршруту, если этого требует ваш инструмент.
Работает до следующей перезагрузки. Конфигурацию переписывает другой инструмент: cloud-init в Ubuntu (см. первый раздел) либо команда ip -6 addr add, результат которой так и не попал в конфигурационные файлы. Команды, выполненные через ip, временные.
IPv6 отвечает на ping, но сайты не открываются. Брандмауэр или служба слушают только IPv4. Проверьте через ss -tlnp: веб-сервер должен показывать [::]:80, а не только 0.0.0.0:80. В nginx добавьте listen [::]:80; в блок server.
🚀 Ваш VPS теперь работает по IPv6: опубликуйте запись AAAA, и сервисы станут доступны по обоим протоколам.