Настройка IPv6 на VPS и выделенных серверах
Уровень: Начальный / Средний
Ориентировочное время: ~30 минут
Цель: Включить и настроить сеть IPv6 на выделенном сервере или VPS, чтобы сервер был доступен по IPv6, и все сетевые службы корректно работали с новым адресом.
Введение
Ваш сервер INTROSERV, вероятно, уже имеет назначенный IPv6-адрес — он просто ещё не настроен. В этом руководстве по настройке сети IPv6 на VPS вы включите сеть IPv6 на Linux-сервере, назначите статический IPv6-адрес, выполните настройку шлюза IPv6 в Linux и проверите подключение. Руководство охватывает Ubuntu (Netplan), Debian (/etc/network/interfaces) и AlmaLinux (nmcli).
Что такое IPv6?
IPv6 (Internet Protocol version 6) — это текущее поколение Интернет-протокола, разработанное для замены IPv4. Наиболее важные практические различия для администраторов серверов:
- IPv6-адрес имеет длину 128 бит и записывается в виде восьми групп из четырёх шестнадцатеричных цифр, разделённых двоеточиями:
2001:db8:85a3::8a2e:370:7334. - Глобальный юникаст-адрес (GUA) — это IPv6-эквивалент публичного IPv4-адреса, маршрутизируемый в Интернете. Вашему VPS будет назначен один из таких адресов.
- Локальный адрес канала (link-local) автоматически назначается каждому IPv6-совместимому интерфейсу (префикс
fe80::/10). Он не маршрутизируется за пределы локального сегмента, но необходим для обнаружения соседей и протоколов маршрутизации. - Подсеть (IPv6-префикс) определяет, какая часть адреса идентифицирует сеть. Для типичного VPS вы увидите префикс
/64или/128. - Шлюз по умолчанию (IPv6) — это маршрутизатор, на который ваш сервер отправляет пакеты, когда адрес назначения не принадлежит локальному каналу. Ваш провайдер предоставит этот адрес.
Предварительные требования
Перед началом убедитесь, что выполнены следующие условия:
- Операционная система: Ubuntu 20.04/22.04/24.04 LTS, Debian 11/12/13 или AlmaLinux/RHEL 8/9/10
- Доступ: sudo или root-доступ к серверу через SSH
- Выделение IPv6: IPv6-адрес, префикс подсети и шлюз по умолчанию, предоставленные вашим хостинг-провайдером. Найдите эти данные в панели управления перед началом.
- Необходимые знания: Уверенное использование командной строки Linux и базовое редактирование конфигурационных файлов
В INTROSERV вы можете найти назначенный IPv6-адрес, префикс и шлюз в Личном кабинете — перейдите к вашей услуге, затем откройте вкладку Network или IP Addresses. VPS-тарифы INTROSERV обычно получают префикс /112, а выделенные серверы — префикс /64. Если IPv6-адрес не указан, обратитесь в поддержку INTROSERV, чтобы запросить выделение.
Шаг 1: Проверка текущего состояния IPv6
Прежде чем изменять какую-либо конфигурацию, посмотрите, что ядро уже знает.
Выполните:
ip -6 addr show
Ожидаемый вывод на сервере без применённой конфигурации IPv6:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP inet6 fe80::250:56ff:fe00:1/64 scope link valid_lft forever preferred_lft forever
Адрес fe80:: — это локальный адрес канала, автоматически назначаемый ядром вне зависимости от конфигурации. Отсутствие записи scope global означает, что глобальный юникаст-адрес ещё не настроен.
Также проверьте, включён ли IPv6 в ядре:
sudo sysctl net.ipv6.conf.all.disable_ipv6
В Debian 13 у обычных пользователей нет /usr/sbin в $PATH, поэтому запуск sysctl без sudo вернёт command not found. Кроме того, минимальная установка Debian 13 не включает sudo по умолчанию. Вам потребуется переключиться на пользователя root (su -), установить sudo (apt install sudo) и добавить вашего пользователя в группу sudoers, прежде чем продолжить.
Ожидаемый вывод:
net.ipv6.conf.all.disable_ipv6 = 0
Значение 0 означает, что IPv6 включён. Если вы видите 1, IPv6 был отключён на уровне ядра.
Чтобы временно повторно включить:
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=0
Чтобы сделать это постоянным, проверьте /etc/sysctl.conf или файлы в /etc/sysctl.d/ на наличие строки net.ipv6.conf.all.disable_ipv6 = 1 и удалите или закомментируйте её, затем выполните:
sudo sysctl -p
Шаг 2: Определение имени интерфейса
Вам нужно точное имя вашего публичного сетевого интерфейса перед редактированием какого-либо конфигурационного файла.
Выполните:
ip -br link
Ожидаемый вывод:
lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> eth0 UP 00:50:56:00:00:01 <BROADCAST,MULTICAST,UP,LOWER_UP>
Интерфейс в состоянии UP с MAC-адресом — это ваш основной интерфейс. Распространённые имена: eth0, ens3, ens18, ens33, ens160 (часто встречается на VMware и современных ядрах) и аналогичные вариации ensXX/enpXsX. Используйте точное имя, которое показывает ip -br link, во всех последующих шагах конфигурации.
Шаг 3: Настройка статического IPv6-адреса
Метод конфигурации зависит от вашего дистрибутива. Ubuntu 18.04 и новее используют Netplan; Debian по умолчанию использует /etc/network/interfaces; AlmaLinux использует NetworkManager или скрипты интерфейсов в /etc/sysconfig/network-scripts/.
Соберите следующие значения из панели управления вашего провайдера перед тем, как продолжить:
| Поле | Пример |
|---|---|
| IPv6-адрес |
2001:db8:1000::10
|
| Длина префикса |
64
|
| Шлюз по умолчанию (IPv6) |
2001:db8:1000::1
|
Замените эти примеры значений на реальные во всех последующих шагах.
3.1 Ubuntu (Netplan)
Ubuntu использует конфигурацию IPv6 через Netplan. Конфигурационные файлы находятся в /etc/netplan/.
Сначала просмотрите содержимое каталога /etc/netplan/, чтобы найти ваш конфигурационный файл:
ls /etc/netplan/
Жёстко заданного имени файла, такого как 00-installer-config.yaml, на большинстве VPS не существует. На cloud-init образах файл обычно называется 50-cloud-init.yaml. Используйте настоящее имя файла, найденное предыдущей командой, в шагах ниже.
Сделайте резервную копию существующего файла (замените 50-cloud-init.yaml на ваше фактическое имя файла):
sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.bak
Откройте файл:
sudo nano /etc/netplan/50-cloud-init.yaml
Добавьте блоки addresses и routes под вашим интерфейсом. Полный файл с IPv4 (уже настроенным) и новой настройкой статического IPv6-адреса выглядит так:
network: version: 2 ethernets: eth0: addresses: - 203.0.113.10/24 # existing IPv4 address - 2001:db8:1000::10/64 # new IPv6 address routes: - to: default via: 203.0.113.1 # existing IPv4 gateway - to: default via: 2001:db8:1000::1 # IPv6 default gateway nameservers: addresses: - 8.8.8.8 - 2001:4860:4860::8888 # Google public DNS over IPv6
Если ваш сервер получает IPv4-адрес через DHCP (что типично для многих свежих VPS), ваш файл будет выглядеть немного иначе. Не копируйте бездумно настройку статического IPv4, приведённую выше, иначе вы потеряете работающее IPv4-соединение. Вот пример с dhcp4: true:
network: version: 2 ethernets: eth0: dhcp4: true addresses: - 2001:db8:1000::10/64 # new IPv6 address routes: - to: default via: 2001:db8:1000::1 # IPv6 default gateway nameservers: addresses: - 2001:4860:4860::8888 # Google public DNS over IPv6
Netplan использует YAML. Отступы имеют значение — используйте пробелы, никогда не табуляцию. Одна смещённая строка приведёт к тому, что конфигурация не применится или применится с ошибкой без предупреждения.
Проверьте конфигурацию перед её применением:
sudo netplan try
netplan try применяет конфигурацию с 120-секундным таймером. Если вы не подтвердите, она автоматически откатится — безопасно для выполнения через SSH. Если вывод выглядит правильно, подтвердите:
# Press Enter when prompted, or type: sudo netplan apply
Всегда используйте netplan try вместо netplan apply, когда работаете через SSH. Если новая конфигурация нарушит ваше соединение, автоматический откат вернёт вам доступ.
3.2 Debian (/etc/network/interfaces)
В Debian классический способ добавить IPv6 в /etc/network/interfaces — это добавить вторую строфу iface для того же интерфейса с семейством inet6.
Сначала сделайте резервную копию:
sudo cp /etc/network/interfaces /etc/network/interfaces.bak
Откройте файл:
sudo nano /etc/network/interfaces
Ваш существующий блок IPv4 будет выглядеть примерно так:
auto eth0 iface eth0 inet static address 203.0.113.10 netmask 255.255.255.0 gateway 203.0.113.1
Добавьте строфу IPv6 непосредственно под ним:
iface eth0 inet6 static address 2001:db8:1000::10 netmask 64 gateway 2001:db8:1000::1
Не добавляйте вторую строку auto eth0. Единственная директива auto поднимает обе строфы, inet и inet6, при инициализации интерфейса.
Примените новую конфигурацию без полной перезагрузки:
sudo ifdown eth0 && sudo ifup eth0
Выполнение ifdown eth0 через SSH разрывает ваше соединение. Выполните эту команду из серийной/веб-консоли провайдера или воспользуйтесь ifreload -a. Обратите внимание, что ifreload -a требует пакет ifupdown2, который не входит в базовую установку Debian. Установите его командой sudo apt install ifupdown2, чтобы перезагружать интерфейсы без разрыва активных сессий.
3.3 AlmaLinux / RHEL (nmcli)
На AlmaLinux и RHEL 8/9 NetworkManager является сетевым менеджером по умолчанию. Используйте nmcli для добавления IPv6-адреса без ручного редактирования файлов.
Найдите имя вашего соединения:
nmcli connection show
Ожидаемый вывод:
NAME UUID TYPE DEVICE eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0
Добавьте настройку статического IPv6-адреса:
sudo nmcli connection modify eth0 \ ipv6.method manual \ ipv6.addresses "2001:db8:1000::10/64" \ ipv6.gateway "2001:db8:1000::1"
Примените конфигурацию без разрыва SSH-соединения:
sudo nmcli device reapply eth0
Шаг 4: Проверка IPv6-подключения
После применения конфигурации убедитесь, что адрес назначен и маршрутизация работает.
4.1 Проверка назначения адреса
ip -6 addr show eth0
Ожидаемый вывод:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP inet6 2001:db8:1000::10/64 scope global valid_lft forever preferred_lft forever inet6 fe80::250:56ff:fe00:1/64 scope link valid_lft forever preferred_lft forever
Вы должны увидеть ваш глобальный юникаст-адрес с scope global. Локальный адрес канала (scope link) также будет присутствовать.
4.2 Проверка шлюза по умолчанию
ip -6 route show
Ожидаемый вывод:
2001:db8:1000::/64 dev eth0 proto kernel metric 100 default via 2001:db8:1000::1 dev eth0 proto static metric 100
Строка default via подтверждает, что ваш IPv6-шлюз по умолчанию настроен правильно.
4.3 Тестирование IPv6-подключения
Чтобы проверить IPv6-подключение к известному публичному хосту, используйте ping6 (или ping -6 на более новых системах):
ping6 -c 4 2606:4700:4700::1111
Ожидаемый вывод:
PING 2606:4700:4700::1111(2606:4700:4700::1111) 56 data bytes 64 bytes from 2606:4700:4700::1111: icmp_seq=1 ttl=57 time=1.23 ms 64 bytes from 2606:4700:4700::1111: icmp_seq=2 ttl=57 time=1.19 ms 64 bytes from 2606:4700:4700::1111: icmp_seq=3 ttl=57 time=1.21 ms 64 bytes from 2606:4700:4700::1111: icmp_seq=4 ttl=57 time=1.20 ms
Если ping6 не работает, но адрес назначен, проблема почти всегда в одном из трёх: шлюз по умолчанию неправильный, брандмауэр вашего провайдера блокирует ICMPv6, или выделение IPv6 не было активировано с их стороны.
Вы также можете проверить подключение снаружи с помощью публичного инструмента, например https://ipv6-test.com. Введите IPv6-адрес вашего сервера и запустите проверку доступности.
4.4 Проверка DNS-разрешения через IPv6
Сначала убедитесь, что утилита dig установлена.
На AlmaLinux 10 dig не входит в базовую установку:
sudo dnf install -y bind-utils
На минимальных образах Debian пакет также может отсутствовать:
sudo apt install -y dnsutils
Проверьте, может ли ваш сервер разрешать имена хостов через IPv6 DNS-сервер:
dig AAAA google.com @2001:4860:4860::8888
Успешный ответ будет содержать ANSWER SECTION с одной или несколькими записями AAAA.
Шаг 5: Настройка брандмауэра для IPv6
Если на вашем сервере работает программный брандмауэр, вы должны явно разрешить IPv6-трафик. По умолчанию многие конфигурации брандмауэра охватывают только IPv4.
В INTROSERV все порты по умолчанию открыты на сетевом уровне для VPS и выделенных серверов, за небольшим исключением (почтовые порты 25, 465, 587, 2525 и порт LDAP 389 фильтруются для защиты репутации IP). Это означает, что вам не нужно открывать порты в брандмауэре на стороне провайдера для стандартного веб-трафика или SSH. Вы по-прежнему самостоятельно отвечаете за брандмауэр уровня ОС на вашем сервере. Подробнее см. в руководстве Сетевая безопасность и фильтрация портов.
Ubuntu/Debian (UFW)
В Debian UFW не входит в базовую установку. Сначала установите его, если необходимо:
sudo apt install -y ufw
UFW применяет правила как к IPv4, так и к IPv6, когда в конфигурации установлено IPV6=yes. Проверьте:
grep IPV6 /etc/default/ufw
Ожидаемый вывод:
IPV6=yes
Если там написано IPV6=no, откройте файл и измените:
sudo nano /etc/default/ufw
Затем перезагрузите UFW:
sudo ufw reload
Если UFW ещё не активирован, ufw reload вернёт Firewall not enabled. Это нормально; правила применятся автоматически, когда вы в итоге включите брандмауэр командой sudo ufw enable.
Ваши существующие правила ufw allow (SSH, HTTP, HTTPS) теперь также будут применяться к IPv6.
AlmaLinux / RHEL (firewalld)
firewalld нативно обрабатывает IPv6 через свою модель зон. Если ваш интерфейс находится в правильной зоне, IPv6-трафик управляется автоматически. Проверьте:
sudo firewall-cmd --get-active-zones
Для служб, таких как SSH и HTTPS:
sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
Если служба уже разрешена в зоне, firewall-cmd выведет Warning: ALREADY_ENABLED. Это нормально и не является ошибкой. В AlmaLinux ssh и dhcpv6-client разрешены в зоне public по умолчанию.
ICMPv6 необходим для корректной работы IPv6. Он отвечает за обнаружение соседей, обнаружение MTU пути и router advertisements — IPv6-эквиваленты ARP. Не блокируйте ICMPv6 полностью. Большинство инструментов брандмауэра разрешают его по умолчанию; если вы пишете «сырые» правила nftables или ip6tables, явно разрешите icmpv6.
Откат
Ubuntu (Netplan)
Восстановите резервную копию и примените (замените 50-cloud-init.yaml на ваше фактическое имя файла):
sudo cp /etc/netplan/50-cloud-init.yaml.bak /etc/netplan/50-cloud-init.yaml sudo netplan apply
Debian (/etc/network/interfaces)
Восстановите резервную копию:
sudo cp /etc/network/interfaces.bak /etc/network/interfaces sudo ifdown eth0 && sudo ifup eth0
AlmaLinux (nmcli)
Удалите настройки IPv6 из соединения:
sudo nmcli connection modify eth0 ipv6.method auto sudo nmcli connection modify eth0 ipv6.addresses "" ipv6.gateway "" sudo nmcli connection modify eth0 ipv6.method ignore sudo nmcli device reapply eth0
NetworkManager не позволяет установить ipv6.method ignore, пока существуют статические ipv6.addresses. Предварительная установка метода auto позволяет корректно очистить адреса.
Отключение IPv6 на уровне всей системы (аварийное)
Если вам нужно полностью отключить IPv6 на всех интерфейсах:
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1 sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
Чтобы сделать это постоянным, добавьте следующее в /etc/sysctl.d/99-disable-ipv6.conf:
net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1
Затем выполните sudo sysctl -p /etc/sysctl.d/99-disable-ipv6.conf.
Устранение неполадок
Ping6 сразу завершается с ошибкой "Network unreachable"
Шлюз по умолчанию (IPv6) отсутствует или неправильный. Выполните ip -6 route show и убедитесь, что запись default via существует и соответствует шлюзу из панели вашего провайдера.
Адрес появляется, но scope только link, а не global
Адрес был добавлен к неправильному интерфейсу, или в конфигурационном файле есть опечатка в адресе или префиксе. Внимательно перечитайте выделение от вашего провайдера.
Netplan apply возвращает ошибку парсинга
Отступы YAML неправильные. Выполните cat -A /etc/netplan/50-cloud-init.yaml (или ваше фактическое имя файла), чтобы обнаружить символы табуляции (отображаются как ^I) — замените их на пробелы.
SSH-соединение обрывается после ifdown на Debian
Используйте веб-консоль или VNC/IPMI-доступ провайдера для восстановления. Восстановите /etc/network/interfaces из резервной копии и выполните ifup eth0.
UFW всё ещё блокирует IPv6 после установки IPV6=yes
Правила, добавленные до изменения, были сохранены только для IPv4. Выполните sudo ufw reset, затем повторно добавьте ваши правила — теперь они будут применяться к обоим семействам протоколов.
Команда sudo ufw reset является деструктивной. Она сбрасывает все правила брандмауэра к значениям по умолчанию. Убедитесь, что знаете, какие порты нужно разрешить заново (например, SSH), прежде чем выполнять её, чтобы не заблокировать себе доступ.
Заключение
Готово. Ваш сервер INTROSERV теперь имеет рабочий IPv6-адрес, правильно настроенный шлюз по умолчанию и брандмауэр, охватывающий оба семейства протоколов. Следующие шаги: запросите PTR-запись через Личный кабинет INTROSERV и обновите конфигурацию виртуальных хостов Nginx или Apache, чтобы они слушали на новом IPv6-адресе.
Версия документа: 1.0
Последнее обновление: Май 2026
Владелец: Команда технической документации