Lake PowayLake Poway // 2016-11-19

Історія питання

На початку створення Інтернету ще не було відомо, що за 20-30 років він ввійде в майже усі сфери життя людини. Тому був розроблений протокол IPv4 лише з 4.3 мільярдами адрес (типу 123.123.123.123).

Здавалося цих адрес має вистачити майже усім людям на Землі, але з самого початку IP-адреси роздавались компаніям, організаціям та університетам великими пачками «про запас» (зараз деякі американські виші мають більше IP-адрес ніж вся Україна). Також ІР-адреси потрібні не лише комп’ютерам користувачів, але й серверам, маршрутизаторам та іншому мережевому обладнанню. Ну і ще до всього почалася ера мобільних телефонів з доступом до Інтернету, таким чином кожній людині вже потрібно як мінімум 2-3 IP-адреси.

Як тимчасове вирішення проблеми з лімітом IP-адрес з’явився NAT. Це коли локальна мережа має одну «білу» IP-адресу а всі комп’ютери в цій мережі використовують «сірі» адреси типу 192.168.0.1. Але такий підхід має й недоліки — два комп’ютера з різних мереж з «сірими» IP-адресами не можуть спілкуватися напряму (актуально для програм типу Skype, eMule чи BitTorrent). Також комп’ютери з «сірими» IP-адресами важко однозначно ідентифікувати на сайті (бо за межами своєї мережі вони використовують одну і ту саму «білу» IP-адресу).
Для прикладу, на Укрбаші якщо хтось з «сірою» ІР-адресою проголосував за цитату то більше з цієї мережі за цю цитату голосувати не можна (це компроміс між зручністю та захистом від накруток).

На початку 90х (через 10 років після запровадження IPv4) почали працювати над новим протоколом, який пізніше назвали IPv6. Основна відмінність IPv6 від IPv4 — на кожну людину припадає по 300 мільйонів адрес (непоганий запас, правда?). Офіційно протокол був прийнятий в 1996 році і з того часу провайдерам рекомендовано переходити на нього.

Але пройшло вже 15 років але ми й досі використовуємо IPv4. Справа в тому, що для глобального впровадження IPv6 потрібно, щоб його підтримували на всьому маршруті від користувача до сайту (ПЗ на комп’ютері, обладнання в локальній мережі, обладнання провайдера, обладнання магістрального провайдера, ПЗ на сервері і т.п.) а це не так просто 🙂

В цьому дописі я опишу 2 випадки — як додати підтримку IPv6 на сервер та в свою локальну мережу (чи лише комп’ютер).

Сервер
Я маю віртуальний сервер на Linode.com але мій хостер поки не надає IPv6 адреси. Тому я використав тунель, наданий компанією Hurricane Electric. Реєструємось на сайті і маємо можливість отримати до 5 тунелів безкоштовно.

На сервері в мене Ubuntu, для інших ОС налаштування можна глянути тут.
Для налаштування потрібно додати в файл /etc/network/interfaces ось такі рядки (замінивши виділене):

auto hetunnel # to have the interface auto restart on every reboot
iface hetunnel inet6 v4tunnel
	address HESupplied-ClientIPv6address
	netmask 64
	ttl 64
	gateway HESupplied-ServerIPv6address
	endpoint HESupplied-ServerIPv4address
	local localIPv4address # needed if you have more than one v4 address

Після цього потрібно або підняти інтерфейс hetunnel або просто перевантажити сервер.

Якщо все пройшло добре то буде працювати ось така команда:

ping6 ipv6.google.com
PING ipv6.google.com(2a00:1450:8006::68) 56 data bytes
64 bytes from 2a00:1450:8006::68: icmp_seq=1 ttl=57 time=7.57 ms
64 bytes from 2a00:1450:8006::68: icmp_seq=2 ttl=57 time=7.60 ms
^C
--- ipv6.google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 7.575/7.589/7.604/0.088 ms

Після цього потрібно переглянути усе ПЗ, що має якийсь стосунок до ІР-адрес, і додати підтримку IPv6 (змінити конфіги, переписати скрипти і т.п.). Я перевів свій сайт mrgall.com на IPv6 досить швидко, для цього було досить переписати пару функцій в php скриптах та трохи змінити mysql базу (бо IPv6 адреси довші за IPv4).
Щоб домен був доступний для клієнтів з IPv6 потрібно в ньому прописати запис типу AAAA:

Локальна мережа / Комп’ютер
Спробуйте зайти на ipv6.google.com (або ipv6.mrgall.com), якщо ці сторінки у вас відкрилися — вітаю, вам нічого робити не потрібно 🙂

В моєму випадку мій провайдер теж поки не надає адрес IPv6, тому довелося налаштовувати тунель від HE на Airport Express.
Реєструємо новий тунель, відкриваємо AirPort Utility, шукаємо вкладку IPv6 і вводимо свої дані:

Після цього чекаємо перевантаження Airport Express, перепідключамо свої залізяки до мережі і пробуємо щось пропінгувати:

ping6 ipv6.google.com
PING6(56=40+8+8 bytes) 2001:470:c98a::xxx --> 2a00:1450:8007::6a
16 bytes from 2a00:1450:8007::6a, icmp_seq=0 hlim=56 time=58.366 ms
16 bytes from 2a00:1450:8007::6a, icmp_seq=1 hlim=56 time=58.293 ms
^C
--- ipv6.l.google.com ping6 statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 58.293/58.329/58.366/0.037 ms

Висновки
Налаштувати IPv6 на своєму сервері чи в локальній мережі можна вже зараз (в обхід провайдера). Звісно цей протокол поки використовується лише для тестування, потрібно чекати його глобального впровадження провайдерами. Але щоб бути готовим до переходу в майбутньому, варто почати тестувати IPv6 вже зараз.

До речі, 8 червня 2011 року великі гравці Інтернету (Google, Yahoo, Facebook) будуть публічно тестувати IPv6 щоб дізнатися, чи готовий Інтернет до IPv6. Я думаю в цей день в невеликої частки людей будуть проблеми (таке можливо, коли провайдер роздає IPv6-адреси клієнтам але не забезпечує нормальну роботу цього протоколу в своїй мережі) але в цілому експеримент буде вдалий і за 2-3 роки ми всі перейдемо на IPv6.