EUR
european

EUR

usa

USD

Russian Ru
Ex. VAT Ex. VAT 0%

Настройка 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 и базовое редактирование конфигурационных файлов

Info

В 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

Info

В 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/

Info

Жёстко заданного имени файла, такого как 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

Warning

Netplan использует YAML. Отступы имеют значение — используйте пробелы, никогда не табуляцию. Одна смещённая строка приведёт к тому, что конфигурация не применится или применится с ошибкой без предупреждения.

Проверьте конфигурацию перед её применением:

sudo netplan try

netplan try применяет конфигурацию с 120-секундным таймером. Если вы не подтвердите, она автоматически откатится — безопасно для выполнения через SSH. Если вывод выглядит правильно, подтвердите:

# Press Enter when prompted, or type: sudo netplan apply

Tip

Всегда используйте 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

Info

Не добавляйте вторую строку auto eth0. Единственная директива auto поднимает обе строфы, inet и inet6, при инициализации интерфейса.

Примените новую конфигурацию без полной перезагрузки:

sudo ifdown eth0 && sudo ifup eth0

Warning

Выполнение 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 не было активировано с их стороны.

Tip

Вы также можете проверить подключение снаружи с помощью публичного инструмента, например 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.

Info

В 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

Info

Если 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

Info

Если служба уже разрешена в зоне, firewall-cmd выведет Warning: ALREADY_ENABLED. Это нормально и не является ошибкой. В AlmaLinux ssh и dhcpv6-client разрешены в зоне public по умолчанию.

Info

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

Info

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, затем повторно добавьте ваши правила — теперь они будут применяться к обоим семействам протоколов.

Warning

Команда sudo ufw reset является деструктивной. Она сбрасывает все правила брандмауэра к значениям по умолчанию. Убедитесь, что знаете, какие порты нужно разрешить заново (например, SSH), прежде чем выполнять её, чтобы не заблокировать себе доступ.

Заключение

Готово. Ваш сервер INTROSERV теперь имеет рабочий IPv6-адрес, правильно настроенный шлюз по умолчанию и брандмауэр, охватывающий оба семейства протоколов. Следующие шаги: запросите PTR-запись через Личный кабинет INTROSERV и обновите конфигурацию виртуальных хостов Nginx или Apache, чтобы они слушали на новом IPv6-адресе.

Версия документа: 1.0
Последнее обновление: Май 2026
Владелец: Команда технической документации

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA