IPv4 и IPv6
Две версии интернет-протокола: IPv4 с 32-битными адресами вида 192.168.1.1 и IPv6 со 128-битными вида 2001:db8::1.
Что такое IPv4 и IPv6
IPv4 и IPv6 — две версии интернет-протокола, то есть два формата IP-адреса и правил его обработки. Они работают параллельно и напрямую друг с другом не совместимы: узел с одним только IPv6 не откроет сайт, у которого есть лишь IPv4-адрес, без промежуточного шлюза.
IPv4 — адрес длиной 32 бита, четыре числа 0–255 через точку: 93.184.216.34. Всего пространство даёт около 4,3 млрд адресов.
IPv6 — адрес длиной 128 бит, восемь групп по четыре шестнадцатеричные цифры через двоеточие: 2001:0db8:0000:0000:0000:0000:0000:0001. Адресов — 2¹²⁸, число порядка 3,4×10³⁸.
Зачем понадобился IPv6
4,3 млрд адресов казались бесконечностью в 1981 году. Свободные блоки IPv4 у региональных регистраторов закончились в 2010-х, и с тех пор адреса перепродаются на вторичном рынке. Провайдеры выкручиваются через NAT и CGNAT, пряча тысячи абонентов за одним публичным адресом. Это работает, но ломает входящие соединения: за CGNAT нельзя поднять сервер, к которому подключатся снаружи.
IPv6 закрывает вопрос радикально — публичный адрес достаётся каждому устройству, и NAT в нём в принципе не нужен.
Сравнение
| IPv4 | IPv6 | |
|---|---|---|
| Длина адреса | 32 бита | 128 бит |
| Запись | 192.168.1.1 |
2001:db8::1 |
| Размер пространства | ~4,3 млрд | 2¹²⁸ |
| Заголовок | 20–60 байт, переменный | 40 байт, фиксированный |
| Настройка адреса | вручную или DHCP | SLAAC или DHCPv6 |
| Broadcast | есть | нет, только multicast |
| Разрешение MAC | ARP | NDP |
| NAT | почти всегда | не нужен |
| Минимальный MTU | 576 | 1280 |
Как сокращают запись IPv6
Правила ровно два, и их достаточно:
2001:0db8:0000:0000:0000:ff00:0042:8329 полная форма
2001:db8:0:0:0:ff00:42:8329 убрали ведущие нули в группах
2001:db8::ff00:42:8329 заменили самую длинную цепочку нулей на ::
:: в адресе может встречаться только один раз — иначе восстановить число пропущенных групп невозможно. В URL адрес берут в квадратные скобки, чтобы двоеточие не спутали с портом: http://[2001:db8::1]:8080/.
Диапазоны, которые встречаются каждый день
| Назначение | IPv4 | IPv6 |
|---|---|---|
| Localhost | 127.0.0.1 |
::1 |
| Приватные адреса | 10/8, 172.16/12, 192.168/16 |
fc00::/7 (ULA) |
| Link-local | 169.254.0.0/16 |
fe80::/10 |
| Публичные | всё остальное | 2000::/3 |
Стандартная подсеть IPv6 — /64: адресов в ней столько, что сканировать её перебором бессмысленно. Провайдер обычно выдаёт клиенту /64 или /56, то есть целый блок подсетей, а не один адрес.
Практика на сервере
$ ip -6 addr show eth0
inet6 2001:db8:85a3::8a2e:370:7334/64 scope global
inet6 fe80::5054:ff:fe12:3456/64 scope link
$ ping6 -c1 ipv6.google.com
$ curl -6 https://example.com # принудительно по IPv6
$ curl -4 https://example.com # принудительно по IPv4
Адрес fe80:: есть на интерфейсе всегда — он link-local и наружу не маршрутизируется. Наличие scope global означает, что IPv6 реально работает.
Практические выводы для тех, кто держит сервер:
- Dual-stack — норма. Держите и A-, и AAAA-записи. Клиенты сами выберут протокол; при обеих записях браузеры предпочтут IPv6 и откатятся на IPv4, если он не отвечает.
- AAAA без работающего IPv6 — авария. Опубликовали запись, а маршрута нет — часть пользователей получит таймауты вместо сайта.
- Файрвол нужен отдельный. Правила
iptablesне действуют на IPv6-трафик: нуженip6tables, а в UFW и nftables — явная поддержка обеих семей. Открытый наружу IPv6-порт при закрытом IPv4 — частая и неприятная находка. - IPv6 бесплатен, IPv4 — нет. Публичный IPv4 у хостеров стал платной опцией, и это ещё один аргумент за dual-stack.
Связанные термины
Готовы запустить GPU-задачу?
Запустить GPU-сервер