Публічна адресація IPv6 у хмарі: кінець NAT, але не мережевого екрана
Блог WebDisk · категорія: Хмарні обчислення · час читання: ~8 хвилин
Коротко:- У Європі пул вільних адрес IPv4 вичерпався 2019 року – публічна адреса IPv4 стала дефіцитним ресурсом, який купують на вторинному ринку й дедалі частіше тарифікують окремо.- IPv6 повертає первісну модель інтернету: кожна віртуальна машина може мати власну публічну адресу й обмінюватися даними напряму, без трансляції адрес (NAT).- Публічна адреса – це не відчинені двері: те, що видно з інтернету, визначає мережевий екран; розумним стандартом на сьогодні є dual-stack, тобто IPv4 та IPv6 паралельно. >Не працюєте з терміналом? Можете пропустити розділ із командами – решта статті читається без нього.
Щороку до інтернету підключаються мільярди нових пристроїв: телефони, датчики, камери, а в хмарах – віртуальні машини та контейнери, нерідко з часом життя, що вимірюється хвилинами. Натомість протокол IPv4, на якому інтернет працює з 1980-х років, пропонує неповні 4,3 мільярда адрес. Цього замало вже давно – і це не віддалений прогноз, а фактичний стан речей: 2019 року RIPE NCC, реєстр, що розподіляє адреси в Європі, роздав останні вільні блоки зі свого основного пулу.
Технічна відповідь існує вже понад два десятиліття й називається IPv6. Це не «IPv4 з більшою кількістю адрес», а повернення до первісної ідеї інтернету, у якій кожен пристрій має власну унікальну адресу й спілкується з іншими напряму – без посередників, що на льоту перекладають адреси.
У цій статті пояснюємо, звідки взявся дефіцит адрес і чому він підвищує витрати, що на практиці дає публічна адресація IPv6 у хмарі, чому публічна адреса не звільняє від налаштування мережевого екрана – і як за кілька хвилин перевірити, чи ваша машина справді користується IPv6. Концептуальні розділи прочитає кожен, хто ухвалює рішення про ІТ-архітектуру в компанії; практичний розділ – для адміністраторів.
Чому адрес IPv4 бракує і скільки це коштує?
Адреса IPv4 – це 32-бітове число, тож усіх можливих адрес близько 4,3 мільярда – менше, ніж людей на Землі, не кажучи вже про пристрої. Інтернет не зупинився завдяки протезу під назвою NAT (Network Address Translation – трансляція мережевих адрес): одну публічну адресу спільно використовує багато пристроїв, а маршрутизатор перекладає трафік в обидва боки. Оператори пішли ще далі й застосовують CGNAT – NAT у масштабі цілих житлових масивів, у якому ту саму публічну адресу ділять сотні клієнтів.
NAT працює, але має свою ціну. Сервіс, схований за трансляцією, недосяжний ззовні, доки ми не налаштуємо переспрямування портів; прямі з’єднання (інтернет-телефонія, відеоконференції, ігри, мережі P2P) потребують обхідних шляхів; діагностика «хто ж насправді до нас підключається» ускладнюється, коли за однією адресою ховаються сотні пристроїв.
Дефіцит видно й у витратах. Вільних адрес IPv4 у реєстрах практично немає, тож ними торгують на вторинному ринку, а частина великих хмарних провайдерів тарифікує публічну адресу IPv4 як окрему позицію в рахунку. Ми вже писали в блозі про те, з чого складається ціна публічної хмари – публічна адресація належить до тих складників, яких не видно в таблиці зі специфікацією, доки вони не почнуть коштувати.
IPv6: не «більше того самого», а інша модель мережі
Адреса IPv6 має 128 бітів. Кількість можливих адрес настільки велика (39 цифр), що перестає бути інтуїтивною, тож практичнішою є інша міра: стандартною окремою мережею в IPv6 є блок /64, який сам собою містить понад 18 квінтильйонів адрес – пул понад чотири мільярди разів більший, ніж увесь інтернет IPv4. Ця марнотратність навмисна: настільки велика підмережа уможливлює автоконфігурацію без збереження стану (SLAAC), у якій машина сама виводить свою адресу з префікса, що його оголошує маршрутизатор – без сервера DHCP і без ручного призначення адрес.
Проте найважливіша зміна – архітектурна. Якщо адрес вистачає для кожного пристрою, NAT перестає бути потрібним: віртуальна машина, контейнер чи датчик можуть мати власну, глобально унікальну адресу й спілкуватися з будь-яким іншим пристроєм напряму. Зникають переспрямування портів, зникає жонглювання однією публічною адресою між сервісами, зникає цілий клас проблем «це не працює через подвійний NAT». Топологія мережі стає простішою для проєктування і – що не менш важливо – для розуміння через рік, коли її треба змінити.
Що дає публічна адресація IPv6 у хмарі?
У хмарному середовищі різниця відчувається особливо, бо саме там кількість адресованих сутностей зростає найшвидше: кожна віртуальна машина, кожен контейнер і кожен сервіс можуть потребувати досяжності ззовні.
З публічною адресацією IPv6:
- сервіс виставляєте напряму – без резервування чергової адреси IPv4 й без мапування портів; адреса сервісу є його адресою, а не «портом 8443 на спільній адресі»;
- архітектура є прозорішою – трафік не проходить крізь шар трансляції, тож логи й діагностика показують реальні адреси обох кінців комунікації;
- масштабування не вичерпує пулу – десята, сота й тисячна машина отримують адреси так само легко, як перша.
У WebDisk Cloud – публічній хмарі, побудованій на платформі Apache CloudStack – публічна адресація IPv4 та IPv6 є частиною мережевої пропозиції, поряд із мережами VPC, NAT/SNAT, мережевим екраном, переспрямуванням портів і балансувальниками навантаження. Те, які машини та сервіси досяжні з інтернету, визначають правила мережевого екрана, що їх встановлює клієнт, а не обмеження адресного пулу. Подробиці знайдете на сторінці публічної хмари WebDisk, а якщо переносите наявне середовище – загляньте також до посібника з міграції з VMware до WebDisk Cloud.
Публічна адреса ≠ відчинені двері: мережевий екран обов’язковий
Найчастіше побоювання щодо IPv6 звучить так: «якщо кожна машина має публічну адресу, то кожна відкрита для атаки». Це побоювання плутає дві речі: адресованість і досяжність.
NAT ніколи не проєктувався як механізм безпеки – його побічним ефектом було лише те, що машини без переспрямування портів були важкодосяжними ззовні. У світі IPv6 такий самий (і кращий) контроль дає мережевий екран: за замовчуванням блокуємо вхідний трафік і відкриваємо виключно те, що свідомо виставляємо назовні. Різниця в тому, що рішення є явним і придатним до аудиту, а не випливає з випадкової властивості трансляції адрес.
У хмарі правила варто підтримувати на двох рівнях: мережевий екран на рівні платформи (правила мережі, що визначаються в панелі хмари) та мережевий екран у самій операційній системі машини. Два шари – це не надмірна ретельність, а захист від помилки в одному з них.
Дві пастки заслуговують на окремі речення. По-перше, сервіси можуть слухати на IPv6, хоча їх налаштовували «лише по IPv4» – багато серверів за замовчуванням прив’язуються до адреси ::, яка охоплює обидва протоколи; варто це перевірити (покажемо як). По-друге, не варто розраховувати, що «у /64 нас ніхто не знайде» – сканування 18 квінтильйонів адрес справді непрактичне, але адреси однаково стають відомими: через DNS, логи, заголовки, сертифікати. Приховування не замінює ані мережевого екрана, ані оновлень. А якщо машина публічно досяжна, тим важливіше знати, що на ній відбувається – про самостійний моніторинг стану VM ми писали у статті про Watchdog.
Що таке dual-stack і чому вам досі потрібен IPv4?
Хоча частка IPv6 зростає роками, частина інтернету досі спілкується виключно по IPv4. Тому перехідним стандартом – «перехідним» уже десятиліття й, імовірно, ще на роки – є dual-stack: машина має водночас адресу IPv4 та IPv6, а операційна система обирає протокол для кожного з’єднання.
Для сервісу, виставленого в інтернет, це на практиці означає: публікуємо в DNS як запис A (адреса IPv4), так і AAAA (адреса IPv6). Сучасні клієнти застосовують механізм Happy Eyeballs – пробують IPv6 і швидко відступають до IPv4, якщо той шлях не відповідає. Це добра новина з одним застереженням: зламаний IPv6 буває гіршим за його відсутність. Якщо опублікуєте запис AAAA, а трафік IPv6 блокуватиме мережевий екран або не працюватиме маршрут, частина клієнтів відчує затримки. Висновок: після ввімкнення IPv6 тестуємо й моніторимо сервіс на обох протоколах, а не лише на тому, яким саме зараз під’єднується наш власний комп’ютер.
Як перевірити, чи ваша машина користується IPv6?
Наведені нижче команди працюють на типовій машині з Linux і нічого не змінюють у конфігурації – лише зчитують стан.
# 1. Чи має машина глобальну адресу IPv6?# (шукаємо область "global"; сама лише fe80::... – це локальна адреса каналу – цього замало)ip -6 addr show scope global# 2. Чи є маршрут за замовчуванням для IPv6?ip -6 route show default# 3. Чи справді трафік виходить у світ по IPv6?ping -6 -c 3 2001:4860:4860::8888 # публічний DNS-резолвер Googlecurl -6 https://ifconfig.co # виведе вашу публічну адресу IPv6# 4. Що слухає на IPv6 – тобто що побачить інтернет після відкриття мережевого екранаss -6tulnp# 5. Чи охоплює системний мережевий екран IPv6?sudo nft list ruleset # таблиці типу "inet" охоплюють IPv4 та IPv6sudo ip6tables -L -n # старіші системи на основі iptables
Якщо пункт 1 або 2 нічого не повертає, адресацію IPv6 шукайте насамперед у конфігурації мережі в панелі хмари – машина не вичаклує адреси, якої мережа їй не оголошує. Якщо команди з пункту 3 працюють, а сервіс попри це не відповідає по IPv6 ззовні, майже завжди винен мережевий екран (на одному з двох рівнів) або відсутність запису AAAA в DNS.
Чого IPv6 не вирішить?
Щоб картина була повною, випишімо також, чого публічна адресація IPv6 не дає:
- Не пришвидшить автоматично застосунки. Шлях без NAT буває простішим, але реальна продуктивність залежить від маршрутів між операторами – по IPv6 буває швидше, а буває й повільніше.
- Не підвищить безпеку сама собою. Мережевий екран, оновлення та моніторинг потрібні точно так само, як і при IPv4.
- Не дозволить сьогодні вимкнути IPv4. Доки частина клієнтів і сервісів живе виключно в IPv4, dual-stack залишається необхідністю.
- Потребує перегляду інструментів. Логи, списки дозволених адрес, механізми банування, поля бази даних для IP-адрес (текстовий запис IPv6 має до 45 символів), геолокація та моніторинг мусять розуміти новий формат – це зазвичай дрібні, але численні правки.
Часті запитання
Чи замінить IPv6 протокол IPv4? Зрештою так, але горизонт вимірюється роками, а не місяцями. Тому практичне запитання звучить не «IPv4 чи IPv6», а «чи підтримує моє середовище обидва».
Чи не є ризиком публічна адреса на кожній машині? Ризиком є відсутність мережевого екрана, а не адреса. Правило те саме, що й завжди: за замовчуванням блокуй вхідний трафік, відкривай свідомо й точково, підтримуй правила на рівні платформи та операційної системи.
Чи IPv6 швидший за IPv4? Сам протокол такої гарантії не дає. Відсутність трансляції спрощує шлях пакетів, але затримки визначають насамперед маршрути між операторами. Можливий виграш сприймайте як приємну несподіванку, а не бізнес-аргумент.
Чому публічна адреса IPv4 коштує додатково? Пул вільних адрес IPv4 у європейському реєстрі RIPE NCC вичерпався 2019 року, тож адреси здобувають на вторинному ринку. Тому частина хмарних провайдерів тарифікує публічну адресу IPv4 як окрему позицію в рахунку. IPv6 цієї проблеми не має – адрес вистачає для кожної машини.
Мій застосунок зберігає IP-адреси користувачів. Чи треба щось змінювати? Імовірно, так: перевірте довжину полів (текстовий IPv6 – це до 45 символів), валідацію формату й усі місця, де адресу порівнюють або фільтрують. Пам’ятайте також, що IP-адреса – незалежно від версії – залишається інформацією, яку ви обробляєте відповідно до правил захисту даних.
З чого почати в наявному середовищі? З інвентаризації: які сервіси мають бути досяжними з інтернету, а які лише всередині. Потім dual-stack на межових сервісах, тести ззовні на обох протоколах, наостанок записи AAAA в DNS. Запис DNS навмисно останній – від моменту публікації клієнти справді почнуть користуватися цим шляхом.
Підсумок
Дефіцит адрес IPv4 є сталим і дедалі частіше просто коштує грошей. IPv6 розв’язує його в корені: повертає модель, у якій кожна машина може мати власну публічну адресу, а доступність сервісів визначають явні правила мережевого екрана, а не акробатика з трансляцією адрес. Розумний шлях на сьогодні – це dual-stack, впроваджений свідомо, з тестами обох шляхів. А якщо принагідно замислюєтеся, де таке середовище розмістити, про переваги локального провайдера пишемо у статті про польську хмару обчислень.
Якщо плануєте середовище з публічною адресацією IPv6, перегляньте пропозицію публічної хмари WebDisk або напишіть нам – допоможемо спланувати адресацію та правила мережевого екрана.