Налаштування 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
Власник: Команда технічної документації