Нестача адреси IPv4
За словами Вінта Серфа (батька IP), 32-бітний розмір адреси IPv4 був обраний довільно. ІР було експериментом спільного уряду / академії, і нинішній публічний Інтернет ніколи не передбачався. Парадигма IP полягала в тому, що кожен підключений пристрій матиме унікальну IP-адресу (усі пакети, що надсилаються між IP-пристроями, будуть підключені до кінця від вихідної IP-адреси до цільової IP-адреси), і багато протоколів, що використовують IP, залежать від кожного пристрою маючи унікальну IP-адресу.
Якщо припустити, що ми могли використовувати всі можливі адреси IPv4 *, існує лише 4 294 967 296 можливих IPv4 адрес, але (станом на вересень 2018 року) поточне населення світу становить 7 648 290 311. Як бачите, для кожної людини недостатньо можливих IPv4-адрес, але багато людей мають комп'ютер, принтер, стільниковий телефон, планшет, ігрову консоль, смарт-телевізор тощо, для кожного потрібна IP-адреса та це навіть не стосується потреб бізнесу в IP-адресах. Ми також знаходимось в інтернеті IoT (Інтернет речей), де кожному пристрою потрібна IP-адреса: лампочки, термостати, термометри, датчики та спринклерні системи, датчики тривоги, прилади, транспортні засоби, відкривачі дверних гаражів, розважальні системи, нашийники для домашніх тварин, і хто знає, що все ще.
* Є блоки IPv4-адрес, які не можна використовувати для адреси хостів. Наприклад, багатоадресна передача має блок з 268 455 456 адрес, який не можна використовувати для адреси хостів. IANA підтримує спеціальне призначення адрес IPv4 реєстр IANA в https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml документувати всі спеціальні адресні блоки і свої цілі .
IANA (Internet Assigned Numbers Authority) закінчився з адресних блоків IPv4 для призначення RIR (регіональних реєстрів Інтернету), які призначаються у відповідних регіонах, і тепер RIR також не вистачає IPv4-адрес для призначення у кожному регіоні. Інтернет-провайдери (Інтернет-провайдери) та компанії, які хочуть або потребують IPv4-адреси, більше не можуть отримувати адреси IPv4 від своїх RIR і тепер повинні намагатися купувати IPv4-адреси у підприємств, які можуть мати додаткові послуги (оскільки дефіцит адреси IPv4 поглиблюється, ціна IPv4-адреси йде вгору).
Навіть якби всі IPv4 адреси, які зарезервовані для спеціальних цілей і не можуть бути використані для адресації хостів, стали доступними для використання, ми все одно знаходимося в тому самому положенні, оскільки просто не вистачає IPv4 адрес через обмежений розмір адрес IPv4.
Пом'якшення нестачі адреси IPv4
IANA та RIR мали б втратити адреси IPv4 за багато років до цього, якби IANA та IETF (Internet Engineering Task Force) не прийняли рішення про зменшення нестачі адреси IPv4. Одним із важливих пом'якшень було припинення мережевих класів IPv4 на користь CIDR (Classless Inter-Domain Routing). Класифікована адресація передбачає лише три призначені розміри мережі (16,777,216, 65,536 або 256 загальних адрес хостів на одну мережу), тобто багато запитуються на адреси адрес (для бізнесу, що потребує лише 300 адрес хоста, потрібно виділити класну мережу, яка має 65 536 можливих хостів адреси, витрачаючи більше 99% адрес у класовій мережі),
Безумовно, пом’якшення, яке справило найбільший вплив на продовження терміну служби IPv4, - це використання приватної адресації та варіанту NAT (трансляція мережевих адрес) під назвою NAPT (Network Address Port Translation), що саме означає більшість людей, коли вони посилаються на NAT або PAT (PAT - специфічний для постачальника термін NAPT). На жаль, NAPT - це некрасиве вирішення, яке порушує парадигму IP-кінця і порушує протоколи, які залежать від унікальної IP-адреси, вимагаючи ще більш некрасивих способів вирішення.
NAT / NAPT
Концепція NAT досить проста: вона замінює один або обидва вихідні та цільові IPv4 адреси в заголовку пакета, коли пакет проходить через NAT-пристрій. На практиці він вимагає обчислення, оскільки в заголовку IPv4 є обчислене поле для перевірки цілісності заголовка IPv4, і будь-яка зміна, внесена до заголовка IPv4, вимагає перерахунку поля, а деякі транспортні протоколи в корисному навантаженні пакету також мають власні обчислені поля, які необхідно перерахувати, використовуючи обчислювальні ресурси в пристрої NAT, які можна використовувати для переадресації пакетів.
У Basic NAT пристрій NAT має пул адрес IPv4, який він використовує для заміни вихідних IPv4 адрес заголовків пакетів для пакетів IPv4, що надсилаються з внутрішньої мережі у зовнішню мережу, і він підтримує таблицю перекладу з метою перекладу IPv4 адреси призначення трафіку, що повертається із зовнішньої мережі, щоб доставити пакети до правильних хостів всередині мережі. Для цього також потрібні ресурси на пристрої NAT для складання та підтримки таблиці перекладу, а також для пошуку таблиць. Це використання ресурсів може уповільнити переадресацію пакетів, оскільки ресурси, які використовує NAT, взяті з ресурсів, які можуть використовуватися для переадресації пакетів.
NAPT надає базовий NAT далі, також перекладаючи адреси транспортних протоколів (портів) для TCP та UDP та ідентифікатори запитів для ICMP. Також перекладаючи адреси транспортного рівня, NAPT дозволяє використовувати одну зовнішню адресу IPv4 для багатьох внутрішніх IPv4 адрес хостів. NAPT навіть більш ресурсоємний, ніж Basic NAT, оскільки він вимагає окремої таблиці для кожного протоколу транспортного рівня, а також повинен виконувати обчислення цілісності для транспортних протоколів.
Використання приватної IPv4-адресації, яку можна повторно використовувати в декількох мережах (можливо, ви помітили, що більшість домашніх / житлових мереж за замовчуванням використовують ту саму мережу 192.168.1.0/24, яка знаходиться в одному з виділених IANA приватних діапазонів адрес IPv4) разом із NAPT дозволяє діловим та домашнім користувачам використовувати по одній зовнішній (загальнодоступній) адресі для великої внутрішньої (приватної адреси) мережі. Це економить багато-багато IPv4-адрес (у кілька разів більше загальної кількості можливих IPv4-адрес) і продовжує термін служби IPv4 далеко за межі точки, в якій він би згорів без NAPT. У НАПТ є серйозні недоліки:
- NAPT порушує парадигму IP-кінця і працює лише з TCP, UDP та ICMP, порушуючи інші транспортні протоколи. Існують також протоколи прикладного рівня, які використовують TCP або UDP, які розбиваються NAPT, навіть незважаючи на те, що TCP і UDP номінально працюють з NAPT. Інші пом'якшення, наприклад STUN / TURN, можуть бути доступні для деяких протоколів на рівні додатків, але вони можуть додати вартість та складність.
- NAPT - це дуже ресурсомістке, уповільнює переадресацію пакетів порівняно з можливим без використання будь-якої форми NAT. Деякі виробники додають спеціальне обладнання, щоб зменшити необхідність викрадення ресурсів від переадресації пакетів, але це відбувається за рахунок додаткових витрат, розміру, складності та енергоспоживання.
- Під час використання NAPT трафік, ініційований за межами мережі NAPT, не може бути доставлений у внутрішню мережу, оскільки в таблиці перекладу немає запису перекладу, який додається внутрішньо ініційованим трафіком. Єдина зовнішня (загальнодоступна) адреса налаштована на пристрої NAT, і будь-які пакети з цією адресою IPv4 адреси та відсутність запису для вихідної IPv4 адреси в таблиці перекладу транспортного протоколу вважаються такими самими пристроями NAPT, як не внутрішня мережа. Для цієї проблеми існує пом’якшення, яке називається Port Forwarding.
- Переадресація порту в основному налаштовує вручну постійний запис у таблиці перекладу, щоб дозволити зовнішній ініційований трафік, призначений для певного транспортного протоколу, та адресу для передачі протоколу певному внутрішньому хосту. Це має недолік лише в тому, що лише один внутрішній хост може бути цільовим для конкретного транспортного протоколу та адреси. Наприклад, якщо у внутрішній мережі є кілька веб-серверів, лише один із веб-серверів може бути відкритий на порту TCP 80 (за замовчуванням для веб-серверів).
- Оскільки дефіцит адреси IPv4 настільки серйозний, у провайдерів Інтернет-послуг (постачальників послуг Інтернету) не вистачає публічних адрес, які призначати своїм клієнтам. Інтернет-провайдери більше не можуть отримувати публічні адреси, тому вони прийняли деякі пом'якшення, які особливо шкодять домашнім або житловим користувачам. Інтернет-провайдери хочуть зарезервувати свій дорогоцінний пул загальнодоступних адрес для своїх ділових клієнтів, які готові платити за привілей отримання публічних адрес. З цією метою зараз Інтернет-провайдери починають призначати приватні або спільні адреси своїм домашнім / житловим клієнтам, а Інтернет-провайдери використовують NAPT на власних маршрутизаторах для полегшення використання декількох приватних або загальних адрес на одній публічній адресі. Це створює ситуацію, коли домашня / житлова мережа стоїть за двома перекладами NAPT (ISP NAPT для клієнта NAPT),
- Багато людей роблять помилку прирівнюючи NAPT та безпеку, оскільки внутрішні хости не можуть бути безпосередньо адресовані ззовні. Це помилкове почуття безпеки. Оскільки брандмауер, що підключає мережу до загальнодоступного Інтернету, є зручним місцем для запуску NAPT, що просто заплутує ситуацію. Це створює небезпечне уявлення про те, що саме NAPT є брандмауером, а справжній брандмауер - зайвим. Мережева безпека надходить від брандмауерів, які за замовчуванням блокують весь зовнішній ініційований трафік, лише дозволяючи трафіку, який явно налаштований для дозволу, можливо, проводячи глибоку перевірку вмісту пакета, щоб скинути небезпечні корисні навантаження пакетів. Що деякі люди не усвідомлюють, це те, що без брандмауера, як апаратного, так і програмного забезпечення зовні або вбудованого в пристрій NAPT, для захисту пристрою NAPT, сам пристрій NAPT є вразливим. Якщо пристрій NAPT порушено, він, і внаслідок розширення, зловмисник має повний доступ до приватної адреси всередині мережі. Пакети, ініційовані зовні, які не відповідають таблиці перекладу, призначені для самого пристрою NAPT, оскільки саме цей пристрій адресовано зовнішньою адресою, тому пристрій NAPT може бути безпосередньо атакований.
Рішення нестачі адреси IPv4
IETF передбачив дефіцит адреси IPv4, і він створив рішення: IPv6, в якому використовуються 128-бітні адреси, тобто 340,282,366,920,938,463,463,374,607,431,768,211,456 можливі адреси IPv6. Майже немислима кількість IPv6-адрес усуває потребу в NAPT (IPv6 не має жодних стандартів NAT, як це робить IPv4, а експериментальний IPv6 NAT RFC спеціально забороняє NAPT), відновлюючи початкову IP-парадигму в кінці. Пом'якшення дефіциту адреси IPv4 мають на меті продовжити термін служби IPv4 до тих пір, поки IPv6 не буде всюдисущим, і тоді IPv4 повинен згасати.
Люди справді не можуть зрозуміти цифри розміру, використовуваного для IPv6. Наприклад, стандартна мережа IPv6 використовує 64 біта для кожної мережі та хост-частини мережевої адреси. Це 18446,744,073,709,551,616 можливих стандартних / 64 мереж IPv6, і стільки ж (величезна) кількість хост-адрес для кожної з цих мереж. Щоб спробувати зрозуміти велике число, розгляньте інструменти, які сканують усі можливі адреси в мережі. Якщо такий інструмент міг би сканувати 1 000 000 адрес в секунду (малоймовірно), для виконання сканування в одній / 64 мережі IPv6 знадобиться понад 584 532 роки. Наразі лише 1/8 всього адресного простору IPv6 виділено на глобальні адреси IPv6, що працює в 2 305 843 009 213 693 952 стандартних мережах IPv6 / 64, і якщо населення світу в 2100 році складає 21 мільярд (дещо реальна кількість), кожен з цих 21 мільярдів може мати 109 802,048 стандартних мереж IPv6 / 64, кожна мережа має 18,446,744,073,709,551,616 можливих хост-адрес. На жаль, дефіцит (десятиліття) IPv4 адреси настільки вроджене збереження адрес у людей, що багато людей просто не можуть його відпустити, і вони намагаються застосувати його до IPv6, що безглуздо і насправді згубно. IPv6 фактично розроблений для маркування адрес.
IETF також мав перевагу заднього огляду, і він покращив IP (у IPv6), видаливши функції IPv4, які не працювали добре, покращивши деякі функції IPv4 та додавши функції, яких у IPv4 не було, створивши новий та покращений IP . Оскільки IPv6 є повністю відокремленим протоколом від IPv4, його можна запускати паралельно з IPv4, оскільки перехід здійснюється з IPv4 в IPv6. Хости та мережеві пристрої можуть одночасно запускати і IPv4, і IPv6 на одному інтерфейсі (з двосхилим складом), і кожен є невидимим для іншого; між двома протоколами немає перешкод.
Проблема з IPv6 полягає в тому, що це насправді зовсім інший протокол, несумісний з всюдисущим IPv4, і пом'якшення дефіциту адреси IPv4 багато людей вважають "досить хорошим". Результатом є те, що його було більше 20 років з моменту стандартизації IPv6, і ми лише зараз отримуємо деяку реальну тягу у використанні IPv6 (звіти Google, станом на вересень 2018 року, у світі прийняття IPv6 перевищує 20%, а рівень прийняття IPv6 у США - понад 35%). Причина, з якої ми нарешті переходимо до IPv6, полягає в тому, що більше немає невикористаних IPv4 адрес для призначення.
Є й інші перешкоди, всі частини культури IPv4, яким людям просто важко оглянути минуле. Багато людей також лякаються IPv6, подорослішавши та відчувши комфорт із IPv4, бородавками та всім іншим. Наприклад, адреси IPv6 виглядають великими та некрасивими порівняно з адресами IPv4, і це, здається, багатьох людей відключає. Реальність полягає в тому, що IPv6 часто простіший і гнучкіший, ніж IPv4, особливо для адреси, а уроки, засвоєні в IPv4, застосовуються до IPv6 з самого початку.