IPv6 vs IPv4. Добавление адресов IPv6 в Linux

IPv6 (англ. Internet Protocol version 6) — новая версия протокола IP, призванная решить проблемы, с которыми столкнулась предыдущая версия (Структура межсетевого протокола IPv4) при её использовании в Интернете, за счёт использования длины адреса 128 бит вместо 32. В настоящее время протокол IPv6 уже используется в нескольких сотнях сетей по всему миру (более 1600 сетей на март 2009), но пока ещё не получил столь широкого распространения в Интернете, как IPv4. В России практически не используется. Протокол был разработан IETF.

По прогнозам, после того, как адресное пространство в IPv4 закончится (предположительно 2011—2012 г.), два стека протоколов — IPv6 и IPv4 будут использоваться параллельно (англ. dual stack), с постепенным увеличением доли трафика IPv6 по сравнению с IPv4. Такая ситуация станет возможной из-за наличия огромного количества устройств, в том числе устаревших, не поддерживающих IPv6 и требующих специального преобразования для работы с устройствами, использующими только IPv6.

  • Из IPv6 убраны вещи, усложняющие работу маршрутизаторов:

Маршрутизаторы больше не разбивают пакет на части (возможно разбиение пакета с передающей стороны). Соответственно оптимальный MTU придётся искать через Path MTU Discovery. Для лучшей работы протоколов, требовательных к потерям, минимальный MTU поднят до 1280 байтов. Информация о разбиении пакетов вынесена из основного заголовка в расширенные;

Исчезла контрольная сумма. С учётом того, что канальные (Ethernet) и транспортные (TCP) протоколы тоже проверяют корректность пакета, контрольная сумма на уровне IP воспринимается как излишняя. Тем более каждый роутер уменьшает hop limit на единицу, что в IPv4 приводило к пересчёту суммы.

Несмотря на огромный размер адреса IPv6, благодаря этим улучшениям заголовок пакета удлинился всего лишь вдвое: с 20 до 40 байт.

  • На сверхскоростных сетях возможна поддержка огромных пакетов (джамбограмм) — до 4 гигабайт;
  • Time to Live переименовано в Hop limit;
  • Появились метки потоков и классы трафика;
  • Появилось многоадресное вещание;
  • Протокол IPSec из желательного превратился в обязательный.

В достаточно свежих дистрибутивах ОС Linux уже присутствует полноценная поддержка IPv6. В более старых проверьте настройки ядра и установите значения двух переменных в 0:

net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.all.disable_ipv6 = 0

Для диагностики правильной работы IPv6, используйте команду ping6 или traceroute с ключами:

ping6 ipv6.google.com
traceroute -n -6 -I ipv6.google.com

В Debian, Ubuntu правим конфигурационный файл /etc/network/interfaces

# The primary network interface
auto ens3
iface ens3 inet static
        address 5.252.21.186/24
        gateway 5.252.21.1
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 1.1.1.1 8.8.8.8 2001:4860:4860::8888 2001:4860:4860::8844
        dns-search test
### Start IPV6 static configuration
iface ens3 inet6 static
address 2a09:7c44::8c6
netmask 32
gateway 2a09:7c44::1
### END IPV6 configuration

CentOS: /etc/sysconfig/network-scripts/ifcfg-eth0

IPV6INIT=yes
IPV6ADDR=2a01:4f8:231:1aa1::2/64
IPV6_DEFAULTGW=fe80::1
IPV6_DEFROUTE=yes
IPV6_DEFAULTDEV=eno1

FreeBSD v10.XX и выше в файле /etc/rc.conf

defaultrouter="185.XXX.209.1"
ifconfig_xn0="inet 185.XXX.209.41 netmask 255.255.255.0"
ipv6_defaultrouter="2a04:XXXX:1::1"
ifconfig_xn0_ipv6="2a04:XXXX:1:0:0:0:0:12/48"
ifconfig_xn0_aliases="inet6 2a04:XXXX:1:0:0:0:0:15/48 inet6 2a04:XXXX:1:0:0:0:0:16/48 inet 185.XXX.209.104 netmask 255.255.255.255 inet 185.XXX.209.131 netmask 255.255.255.255"
PQ VPS сервера в 28+ странах.