У міру зростання вашого онлайн-бізнесу у вас може виникнути питання: "Чи потрібний мені виділений сервер?" При відповіді на це питання необхідно враховувати без...
Блог компанії 3v-Hosting
10 хв.
IPv6 з’явився понад двадцять років тому, але суперечки навколо нього не вщухають і досі. Одні адміністратори вмикають підтримку нового протоколу за замовчуванням і вважають це нормою для будь-якого сучасного сервера. Інші вимикають IPv6 одразу після встановлення системи - іноді з міркувань безпеки, а іноді заради простішої мережевої конфігурації.
Найчастіше це питання виникає під час налаштування VPS, виділених серверів, Docker-інфраструктури та корпоративних Linux-систем, особливо якщо сам проєкт працює лише через IPv4 і додаткових переваг від IPv6 поки що не отримує.
Ну і, як у будь-якому іншому питанні, тут універсальної відповіді теж немає, адже все залежить від того, які завдання виконує сервер, які сервіси на ньому запущені та як влаштована мережа навколо нього. В одних випадках відключення IPv6 допомагає усунути зайву складність, а в інших може призвести до несподіваних проблем. Давайте в цій статті розберемося, коли такий крок дійсно має сенс, які наслідки він може спричинити та як правильно вимкнути IPv6 в Ubuntu Server, якщо ви вирішили це зробити.
IPv6 - це мережевий протокол, який з’явився як заміна IPv4. Причина була досить простою: вільних IPv4-адрес ставало дедалі менше, а кількість пристроїв в Інтернеті продовжувала зростати не по днях, а по годинах. Про це ми писали в окремій статті.
Усе полягає в тому, що в IPv4 використовується 32-бітна адресація, і цього вистачає приблизно на 4,3 мільярда адрес, чого творцям протоколу здавалося більш ніж достатньо на всі часи (наївні). У IPv6 адреса складається вже зі 128 бітів, тому доступний адресний простір збільшується до практично невичерпних масштабів - принаймні, ми зараз так думаємо :)
Для серверної інфраструктури використання IPv6 надає кілька корисних можливостей, таких як, наприклад:
І справді, багато великих інтернет-компаній вже давно працюють з IPv6. Серед них - Google, Cloudflare, Meta та Microsoft. Все більше операторів зв’язку та провайдерів надають клієнтам IPv6 за замовчуванням, особливо в мобільних мережах.
Але тут є нюанс, оскільки наявність підтримки протоколу IPv6 ще не означає, що конкретному серверу він дійсно потрібен. Багато проєктів роками працюють лише через IPv4 і взагалі не стикаються з жодними обмеженнями. Саме тому питання відключення IPv6 досі виникає регулярно.
Сам по собі IPv6 не створює проблем. Більшість причин для його відключення пов’язані з конкретною інфраструктурою, налаштуваннями мережі або особливостями програмного забезпечення, що використовується.
Візьмемо, наприклад, звичайний VPS із корпоративним сайтом, внутрішніми сервісами та базою даних. Провайдер видає лише IPv4, DNS-записів AAAA немає, весь трафік працює за звичною схемою маршрутизації. У такій конфігурації IPv6 може роками залишатися увімкненим, але фактично ніяк не використовуватися.
Тому адміністратори часто відключають його, щоб спростити роботу системи.
Одна з поширених причин пов’язана з мережевою безпекою. Налаштуванню брандмауера для IPv4 зазвичай приділяють багато уваги, а про IPv6 іноді забувають. У результаті сервер виявляється добре захищеним за одним протоколом і частково відкритим за іншим. Особливо це характерно для старих серверів, які пережили кілька міграцій та оновлень без повного аудиту конфігурації.
Іноді проблеми виникають через програмне забезпечення. Деякі старі додатки досі не надто впевнено працюють у режимі Dual Stack, коли одночасно доступні IPv4 та IPv6. Таке можна зустріти серед застарілих VPN-рішень, корпоративних систем, промислового ПЗ та саморобних сервісів, створених ще в епоху домінування IPv4. Буває, що відключення IPv6 усуває проблему буквально за кілька хвилин.
Є й більш прозаїчна причина - діагностика. Коли сервер використовує одразу два мережеві стеки, пошук несправностей стає набагато складнішим. Додаток може спочатку намагатися встановити з’єднання через IPv6, чекати тайм-ауту, а потім перемикатися на IPv4. У результаті користувач бачить лише повільне завантаження сайту чи API, хоча справжня причина криється набагато глибше.
Для внутрішніх сервісів ситуація часто ще простіша. Якщо сервер працює всередині корпоративної мережі, обслуговує тестове середовище або використовується для внутрішніх завдань компанії, то IPv6 може не давати жодних відчутних переваг. Зайва функціональність - це зайві налаштування, які теж потрібно підтримувати.
При цьому відключення IPv6 не можна вважати універсальною рекомендацією, оскільки існує чимало сценаріїв, де його краще залишити увімкненим. Наприклад, якщо провайдер надає повноцінну підтримку IPv6, проєкт орієнтований на міжнародну аудиторію або активно використовує сучасні хмарні сервіси та CDN. Багато великих платформ вже давно розглядають IPv6 як стандартну частину інфраструктури, а не як додаткову можливість.
Є ще один важливий фактор. У ряді країн частка IPv6-трафіку вже становить значну частину всього інтернет-трафіку. Тому для публічних сайтів, SaaS-проєктів, інтернет-магазинів та інших сервісів із широкою аудиторією відмова від IPv6 може обмежити доступність ресурсу для частини користувачів.
Виходячи з цього, рішення формулюється досить просто: якщо IPv6 реально використовується або може знадобитися в найближчому майбутньому, тоді залишаємо. Якщо протокол не задіяний, ускладнює супровід системи та не приносить практичної користі, тоді його відключення цілком виправдане.
Перш ніж вимикати IPv6, варто переконатися, що сервер дійсно не використовує цей протокол. Іноді IPv6 виявляється задіяним там, де адміністратор цього навіть не очікує, наприклад через DNS, мережеві інтерфейси або окремі сервіси.
Тому спочатку перевірте, чи ввімкнено IPv6 у системі взагалі. Зробити це можна за допомогою команди:
sysctl net.ipv6.conf.all.disable_ipv6
Якщо команда повертає 0, це означає, що IPv6 активний:
net.ipv6.conf.all.disable_ipv6 = 0
Якщо ж вона повертає 1, протокол уже вимкнено:
net.ipv6.conf.all.disable_ipv6 = 1
Після цього варто перевірити, чи призначено вашому серверу IPv6-адреси:
ip -6 addr
І заодно перевірити таблицю маршрутизації:
ip -6 route
Звичайно, наявність адрес і маршрутів ще не свідчить про реальне використання IPv6, але зате показує, що система готова працювати через цей протокол.
Наступний крок - перевірка DNS. Якщо для домену, спрямованого на ваш сервер, опубліковано AAAA-записи, то частина користувачів може підключатися до сайту саме через IPv6. Для перевірки виконайте команду:
dig AAAA yourdomain.com
Якщо запис існує, то, ймовірно, відключати IPv6 без попередньої підготовки не варто, оскільки ви можете заблокувати доступ для деяких існуючих користувачів.
Окрему увагу варто приділити мережевим сервісам. Навіть якщо ви спеціально не налаштовували IPv6 - деякі програми автоматично відкривають IPv6-сокети під час запуску.
Перевірити це можна так:
ss -tulpn | grep tcp6
або:
netstat -tulpn | grep tcp6
У списку нерідко зустрічаються SSH, Nginx, Apache, Docker Proxy, панелі керування серверами та інші мережеві служби.
Якщо такі служби вже приймають з’єднання через IPv6, просте відключення протоколу може призвести до несподіваних наслідків. Особливо на серверах, які вже давно працюють у виробничому середовищі й за цей час набрали безліч додаткових компонентів.
Тому перед зміною мережевої конфігурації корисно відповісти на три запитання:
Зазвичай цього достатньо, щоб зрозуміти, наскільки безпечно відключати протокол у конкретній системі.
Якщо рішення про відключення IPv6 уже прийнято, то спочатку варто виконати його в тестовому режимі. Такий підхід дозволяє перевірити роботу сервера без внесення постійних змін до конфігурації системи. Для цього можна скористатися sysctl.
Виконайте команди:
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1 sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
Налаштування застосовуються одразу. Після цього нові IPv6-з’єднання перестануть встановлюватися, а сервер продовжить працювати через IPv4.
Перевірити результат можна за допомогою такої команди:
sysctl net.ipv6.conf.all.disable_ipv6
Якщо у відповіді відображається значення 1, IPv6 вимкнено.
За бажанням можна додатково переглянути стан IPv6-адрес на інтерфейсах:
ip -6 addr
І перевірити, чи залишилися сервіси, які продовжують відкривати IPv6-сокети:
ss -tulpn | grep tcp6
Тимчасове відключення зручне тим, що не впливає на постійну конфігурацію системи. А якщо після перевірки з’ясується, що програми, сайти та мережеві служби працюють у штатному режимі, тоді вже можна переходити до повного вимкнення IPv6.
Після перезавантаження сервера встановлені нами вище параметри автоматично повернуться до попередніх значень. Саме тому такий спосіб зазвичай використовують як проміжний етап перед внесенням постійних змін.
Після перевірки шляхом тимчасового відключення можна перейти до постійного налаштування. В Ubuntu для цього є кілька варіантів. Вони відрізняються глибиною впливу на систему та вимогами до перезавантаження сервера.
Найпоширеніший спосіб - це зміна параметрів sysctl.
Для цього відкрийте файл:
sudo nano /etc/sysctl.conf
і додайте в кінець файлу такі рядки:
net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1
Застосуйте зміни:
sudo sysctl -p
Перевірити результат можна так:
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
Якщо команда повертає значення 1, це означає, що налаштування застосовано успішно, і для більшості серверів цього достатньо.
Іноді завдання полягає не у повному вимкненні IPv6, а лише у забороні отримання IPv6-адрес на мережевому інтерфейсі. У системах з Netplan це можна зробити через мережеву конфігурацію.
Приклад файлу мережевої конфігурації для вимкнення можливості отримання IPv6-адрес через DHCP:
network: version: 2 ethernets: eth0: dhcp4: true dhcp6: false
Після зміни конфігурації виконайте:
sudo netplan apply
Цей варіант відключає отримання адрес через DHCPv6, але сам стек IPv6 у системі продовжує працювати. Тому його зазвичай використовують у випадках, коли потрібно змінити параметри мережі, а не повністю відмовитися від IPv6.
Є й більш жорсткий варіант, наприклад, вимкнення IPv6 на рівні ядра Linux ще до запуску мережевих служб.
Для цього відкрийте файл:
sudo nano /etc/default/grub
Знайдіть рядок:
GRUB_CMDLINE_LINUX_DEFAULT=«quiet splash»
І додайте параметр вимкнення IPv6:
GRUB_CMDLINE_LINUX_DEFAULT=«quiet splash ipv6.disable=1»
Після збереження оновіть конфігурацію завантажувача та перезавантажте сервер:
sudo update-grub sudo reboot
Такий спосіб вимикає IPv6 ще на етапі завантаження ядра і вважається найрадикальнішим варіантом.
Якщо коротко порівняти всі три підходи, то картина виглядає так:
| Спосіб | Потрібне перезавантаження | Рівень відключення |
|---|---|---|
| Sysctl | Ні | Підходить для більшості сценаріїв |
| Netplan | Ні | Вимикає отримання IPv6-адрес |
| GRUB | Так | Повністю вимикає IPv6 на рівні ядра |
У більшості випадків достатньо налаштування через sysctl. Netplan підходить для керування параметрами мережевих інтерфейсів. Ну а варіант із GRUB зазвичай використовують тоді, коли підтримка IPv6 не повинна завантажуватися в системі взагалі.
Трохи повторимося. Після внесення змін корисно швидко перевірити, чи IPv6 дійсно перестав працювати в системі.
Перевірте, чи залишилися IPv6-адреси на мережевих інтерфейсах:
ip -6 addr
Перевірте таблицю маршрутизації:
ip -6 route
Переконайтеся, що сервіси більше не слухають IPv6-порти:
ss -lnpt | grep tcp6
Для додаткової перевірки можна спробувати виконати IPv6-пінг:
ping6 google.com
Якщо протокол вимкнено повністю, то ця команда завершиться помилкою. Це означатиме, що IPv6 більше не використовується ні на рівні мережі, ні на рівні додатків.
Якщо сервер використовується для запуску контейнерів Docker, то з’являється ще один нюанс.
У стандартній конфігурації Docker зазвичай працює через IPv4, і для більшості проєктів цього цілком достатньо. Але Docker підтримує IPv6, тому за відповідного налаштування контейнери можуть отримувати власні IPv6-адреси та використовувати окремі маршрути.
Через це мережева схема стає складнішою, з’являються додаткові маршрути, збільшується кількість правил у брандмауері, а перенесення контейнерів між різними серверами та середовищами іноді вимагає додаткової перевірки мережевих налаштувань. Через це в умовах корпоративної інфраструктури можуть виникати питання й з боку внутрішніх політик безпеки.
Звісно, сам Docker від цього працювати не перестане. Тут мова радше про додаткові точки контролю, за якими доводиться стежити адміністратору.
Тому в інфраструктурах, повністю побудованих навколо IPv4, IPv6 часто відключають не тільки на хостовій системі, але й у Docker-мережах. Такий підхід спрощує супровід і робить мережеву конфігурацію більш передбачуваною. Особливо на невеликих VPS і серверах, де контейнери запускаються для типових завдань і підтримка IPv6 просто не потрібна.
Саме по собі відключення IPv6 не робить сервер безпечнішим. Усе залежить від налаштувань брандмауера, мережевих правил та контролю доступу. Якщо IPv6 налаштовано правильно і для нього діють ті самі обмеження, що й для IPv4, додаткового ризику він не створює.
Так. У більшості випадків IPv6 можна вимкнути за допомогою засобів самої операційної системи без будь-яких обмежень з боку провайдера. Винятки трапляються рідко і зазвичай пов’язані зі спеціалізованими хмарними платформами або нестандартною мережевою архітектурою.
Особливої потреби в цьому немає. Ubuntu 24.04 повноцінно підтримує IPv6 і коректно працює з ним «з коробки». Рішення залежить від завдань сервера та особливостей інфраструктури. Якщо IPv6 не використовується, його можна вимкнути для спрощення конфігурації.
Так. Більшість Docker-контейнерів використовують лише IPv4 і не мають жодних обмежень. Для типових веб-проектів, API, баз даних та внутрішніх сервісів підтримка IPv6 найчастіше не потрібна.
Так. Для цього достатньо скасувати раніше внесені зміни в sysctl, Netplan або GRUB, після чого застосувати нову конфігурацію та, за необхідності, перезавантажити сервер. Повернення до початкових налаштувань зазвичай займає кілька хвилин.
IPv6 давно перестав бути експериментальною технологією і поступово стає звичною частиною інтернет-інфраструктури. Багато провайдерів, хмарних платформ і великих онлайн-сервісів уже активно використовують його у повсякденній роботі.
При цьому необхідність використання IPv6 значною мірою залежить від конкретного сервера. Якщо проєкт використовує сучасні хмарні сервіси, орієнтований на міжнародну аудиторію або вже працює з IPv6-трафіком, то відключати протокол без вагомої причини навряд чи варто.
Однак зворотна ситуація також трапляється досить часто. Внутрішні сервіси, тестові середовища, невеликі VPS та корпоративні системи нерідко працюють виключно через IPv4, і в таких випадках відмова від IPv6 допомагає трохи спростити мережеву конфігурацію та скоротити кількість налаштувань, які потрібно підтримувати.
Універсального правила тут немає. Належна практика полягає в тому, що спочатку потрібно перевірити, чи використовується IPv6 на сервері, потім оцінити наслідки відключення і лише після цього вносити зміни. Такий підхід майже завжди виявляється надійнішим, ніж сліпе дотримання старих рекомендацій або шаблонних інструкцій з Інтернету.
Налаштування часового поясу та NTP на Linux-сервері: перевірка часу, вибір часового поясу, синхронізація за допомогою Chrony та systemd-timesyncd, робота Docker...
Netdata дозволяє швидко налагодити моніторинг VPS без складних налаштувань. Розбираємо процес встановлення, основні показники, моніторинг Docker, сповіщення та ...
Що таке reverse DNS (PTR), навіщо він потрібен і чому без нього виникають проблеми з доставкою пошти. Розбираємо налаштування PTR, перевірку записів та типові п...