Table of Contents

Технології переходу з IPv4 до IPv6

Див. також:

Технології переходу можна встановити за допомогою таких пакунків:

Тунель 6in4 / HE.net Tunnel Broker

Див. також:

Тунелі 6in4 зазвичай надаються сторонніми провайдерами тунелів, такими як HE.net.

:!: Для використання цього протоколу необхідно встановити пакунок 6in4.

:!: 6in4 вимагає наявності публічної IPv4-адреси. Клієнти за CGNAT не підтримуються.

Статичний тунель IPv6-в-IPv4

Наведено приклад конфігурації статичного тунелю для брокера Hurricane Electric (he.net). Параметр `ipaddr` вказує локальну IPv4-адресу, `peeraddr` — адресу брокера, а `ip6addr` — локальну IPv6-адресу, маршрутизовану через тунель.

# /etc/config/network
config interface 'wan6'
        option proto        '6in4'
        option ipaddr       '178.24.115.19'
        option peeraddr     '216.66.80.30'
        option ip6addr      '2001:0DB8:1f0a:1359::2/64'

Динамічний тунель IPv6-в-IPv4 (тільки HE.net)

Наведено приклад конфігурації динамічного тунелю для брокера HE.net з увімкненим оновленням IP. Локальна IPv4-адреса визначається автоматично. Опції `tunnelid`, `username` і `updatekey` використовуються для оновлення IP.

# /etc/config/network
config interface 'wan6'
        option proto     '6in4'
        option mtu       '1424'                      # MTU тунелю IPv6 (необов’язково)
        option peeraddr  '216.66.80.30'              # Кінцева IPv4-адреса тунелю
        option ip6addr   '2001:0db8:1f0a:1359::2/64' # IPv6-адреса тунелю
        option ip6prefix '2001:db8:1234::/48'        # Ваш маршрутизований префікс (обов’язково)
        # нижченаведені опції застосовуються лише для тунелів HE.net
        option tunnelid  '12345'                     # ID тунелю HE.net
        option username  'username'                  # Ім’я користувача HE.net (не User ID)
        option updatekey 'updatekey'                 # Ключ оновлення HE.net (замість пароля)

Дивіться нижче для додаткових опцій конфігурації.

У типовій конфігурації тунелю (наприклад, HE.net) ви отримаєте дві різні IPv6-адреси/префікси:

Брандмауер

Деяким користувачам необхідно додати правила брандмауера для пропуску трафіку 6in4 до кінцевої точки тунелю. Потрібно встановити пакунок iptables-mod-ipopt для перевірки відповідності за довжиною.

# /etc/config/firewall
config rule
        option name      'Allow-protocol-41'
        option src       'wan'
        option proto     '41'
        option target    'ACCEPT'
 
config rule
        option name      'Allow-protocol-59'
        option src       'wan'
        option proto     '59'
        option target    'ACCEPT'
        option extra     '-m length --length 40'

Маршрут за замовчуванням

Встановлення маршруту за замовчуванням з перекриттям `sourcefilter`:

# /etc/config/network
config route6
        option interface 'wan6'
        option target    '::/0'

Протокол 6in4 (IPv6-в-IPv4 тунель)

Назва Тип Обов’язково Типово Опис
`ipaddr` IPv4-адреса ні Поточна WAN-адреса Локальна кінцева IPv4-адреса
`peeraddr` IPv4-адреса так (немає) Віддалена кінцева IPv4-адреса
`ip6addr` IPv6-адреса (CIDR) так (немає) Локальна IPv6-адреса тунельного інтерфейсу
`ip6prefix` IPv6-префікс ні (немає) Маршрутизований IPv6-префікс для внутрішніх інтерфейсів
`tunlink` Логічний інтерфейс ні (немає) Базовий інтерфейс тунелю (наприклад, WAN)
`defaultroute` булевий ні `1` Створювати маршрут за замовчуванням для IPv6 через тунель
`ttl` ціле число ні `64` TTL для тунельного інтерфейсу
`tos` рядок ні (немає) Тип сервісу (ToS), наприклад “inherit” або hex-значення
`mtu` ціле число ні `1280` MTU для тунельного інтерфейсу
`tunnelid` ціле число ні (немає) Глобальний ID тунелю HE.net
`username` рядок ні (немає) Ім’я користувача HE.net (не ID), використовується для оновлення
`password` рядок ні (немає) Пароль HE.net, застарілий
`updatekey` рядок ні (немає) Ключ оновлення HE.net, замінює пароль з 2014-02
`metric` ціле число ні `0` Метричне значення маршруту за замовчуванням

:!: Для цього типу протоколу не потрібно вказувати параметр `device` в розділі інтерфейсу. Назва інтерфейсу утворюється з назви секції, наприклад: `config interface sixbone` → `6in4-sixbone`.

:!: Хоча `ip6prefix` не є обов’язковим, параметр `sourcefilter` увімкнений за замовчуванням і блокує переадресацію пакетів без `ip6prefix`.

Тунель 6rd (Перехід на IPv6 від провайдера)

6rd — це механізм тунелювання на основі 6to4. На відміну від інших механізмів, 6rd зазвичай надається самим інтернет-провайдером.

:!: Для використання цього протоколу потрібно встановити пакунок 6rd.

:!: Налаштування 6rd зазвичай визначається автоматично. Достатньо встановити пакунок 6rd і перезавантажити маршрутизатор.

:!: Щоб автоматично налаштувати 6rd через DHCP, потрібно створити інтерфейс з `option auto 0` і вказати його ім’я як параметр `iface6rd`. Також потрібно додати цей інтерфейс до відповідної зони файрволу у файлі `/etc/config/firewall`.

# /etc/config/network
config interface 'wan6'
        option proto '6rd'
        option peeraddr '77.174.0.2'
        option ip6prefix '2001:838:ad00::'
        option ip6prefixlen '40'
        option ip4prefixlen '16'

Щоб налагодити 6rd через DHCP, увімкніть логування DHCP-клієнта, перезавантажте маршрутизатор і перегляньте логи:

# logread -e ip6rd
ip6rd=16 40 2001:0838:ad00:0000:0000:0000:0000:0000 77.174.0.2

Якщо цей рядок відсутній, потрібно отримати правильні значення `peeraddr`, `ip6prefix`, `ip6prefixlen` та `ip4prefixlen` від вашого провайдера. Наведені або отримані значення можна використовувати для ручного налаштування тунелю 6rd. Після цього видаліть або закоментуйте рядок `iface6rd` у розділі `wan`.

:!: Якщо ви використовуєте інше ім’я інтерфейсу, відмінне від `wan6`, не забудьте додати цю мережу до зони `wan` у файрволі.

Нижче наведені опції потрібні лише для ручного налаштування 6rd.

Протокол 6rd

Назва Тип Обов’язково Типово Опис
`peeraddr` IPv4-адреса так ні Шлюз 6rd
`ipaddr` IPv4-адреса ні Поточна WAN IPv4 Локальна кінцева точка IPv4
`ip6prefix` IPv6-префікс (без довжини) так ні IPv6-префікс 6rd
`ip6prefixlen` Довжина IPv6-префікса так ні Довжина IPv6-префікса 6rd
`ip4prefixlen` Довжина спільного IPv4-префікса ні 0 Кількість бітів з IPv4, які використовуються
`defaultroute` булевий ні `1` Чи створювати маршрут за замовчуванням через тунель
`ttl` ціле число ні `64` TTL для інтерфейсу тунелю
`tos` рядок ні (немає) Тип сервісу: “inherit” або hex-значення
`mtu` ціле число ні `1280` MTU для тунельного інтерфейсу
`iface6rd` логічний інтерфейс ні (немає) Шаблон логічного інтерфейсу для автоналаштування
`mtu6rd` ціле число ні системне значення MTU для інтерфейсу 6rd
`zone6rd` зона файрволу ні системна зона Зона файрволу для 6rd-інтерфейсу

:!: Цей тип протоколу не потребує параметру `device` в секції інтерфейсу. Ім’я інтерфейсу формується з назви секції, наприклад: `config interface wan6` → `6rd-wan6`.

:!: Деякі провайдери надають кількість байтів з вашої IPv4-адреси, які використовуються для побудови IPv6-адреси. `ip4prefixlen` очікує вказання кількості префіксних бітів IPv4. Наприклад, якщо провайдер вказує 14 біт, введіть 18 (32 - 14).

6pe, тунель L2TP (Провайдерське рішення для переходу до IPv6)

Це ще один механізм переходу до IPv6, що використовується деякими інтернет-провайдерами. Він ґрунтується на тунелі L2TPv2.

:!: Для використання цього протоколу потрібно встановити пакунок xl2tpd. Він обробляє як тунель L2TP, так і PPP-сесію.

Загальний опис процесу:

  1. Створюється тунель L2TP, інкапсульований у UDP над IPv4.
  2. Усередині тунелю встановлюється PPP-сесія.
  3. За допомогою IPv6CP (див. RFC 5072) погоджуються локальні IPv6-адреси.
  4. Отримується IPv6-префікс через DHCPv6.

Цей приклад базується на досвіді роботи з SFR (FTTH Франція), проте може застосовуватись і до інших провайдерів. У випадку SFR для кроків 1 і 2 потрібна аутентифікація. Пароль L2TP жорстко закодований. Пароль PPP не зафіксований, але передається у відкритому вигляді, тому його легко перехопити.

# /etc/config/network
config interface 6pe
        option proto l2tpv2
        option server <адреса LNS>
        option username '<ім’я PPP>'
        option password '<пароль PPP>'
        option keepalive '6'
        option ipv6 '1'
 
config interface 'wan6'
        option device '@6pe'
        option proto 'dhcpv6'

Для аутентифікації на рівні L2TP (до PPP):

# /etc/xl2tpd/xl2tp-secrets
* * my_l2tp_password

Після цього, виконання `service network reload` або `ifup wan6` має призвести до повноцінної IPv6-конфігурації. Для налагодження дивіться `logread`, `ifstatus 6pe` та `ifstatus wan6`.

Протокол l2tp (PPP через L2TP-тунель)

Більшість параметрів подібні до протоколу `ppp`.

Назва Тип Обов’язково Типово Опис
`server` рядок так (немає) Сервер L2TP (може бути IP або hostname, порт — через `:`)
`username` рядок ні (немає) Ім’я користувача для PAP/CHAP
`password` рядок так, якщо вказано username (немає) Пароль для PAP/CHAP
`ipv6` булевий ні `0` Увімкнути IPv6 на лінії PPP (IPv6CP)
`mtu` ціле число ні значення за замовчуванням pppd Максимальний розмір передаваного пакета
`keepalive` рядок ні (немає) Кількість спроб до втрати зв'язку (через 5 сек кожна)
`checkup_interval` ціле число ні (немає) Інтервал перевірки стани інтерфейсу після спроби підключення
`pppd_options` рядок ні (немає) Додаткові параметри для `pppd`

Фізичний інтерфейс буде називатись `l2tp-<назва логічного інтерфейсу>`.

Тунель 6to4

6to4 — це найпростіший механізм тунелювання IPv6, що базується на публічних шлюзах.

:!: Для використання потрібно встановити пакунок 6to4.

# /etc/config/network
config interface 'wan6'
        option proto '6to4'
 
# /etc/config/firewall
config rule
        option target 'ACCEPT' 
        option name '6to4' 
        option src 'wan' 
        option proto '41'

:!: Якщо ім’я вашого тунельного інтерфейсу відрізняється від `wan6`, не забудьте додати його до зони `wan`.

Протокол 6to4 (IPv6-в-IPv4 тунель)

Назва Тип Обов’язково Типово Опис
`ipaddr` IPv4-адреса ні Поточна WAN-адреса Локальна кінцева IPv4-адреса
`defaultroute` булевий ні `1` Створювати маршрут IPv6 за замовчуванням через тунель
`ttl` ціле число ні `64` TTL для тунельного інтерфейсу
`tos` рядок ні (немає) Тип сервісу: “inherit” або hex-значення
`mtu` ціле число ні `1280` MTU тунельного інтерфейсу
`metric` ціле число ні `0` Метричне значення маршруту за замовчуванням

:!: Цей протокол не потребує параметра `device`. Ім’я інтерфейсу формується з назви секції: `config interface wan6` → `6to4-wan6`.

Тунель Dual-Stack Lite (ds-lite — IPv4 over IPv6)

ds-lite — це механізм переходу, який використовують інтернет-провайдери для підтримки застарілих IPv4-з'єднань через нативне IPv6-з'єднання.

:!: Для використання цього протоколу потрібно встановити пакунок ds-lite.

:!: Конфігурація зазвичай визначається автоматично, і ручне налаштування не потрібне. Достатньо встановити пакунок ds-lite і перезапустити мережеві інтерфейси (аналогічно зміні конфігурації).

# /etc/config/network
config interface 'wan6'
        option device 'eth1'
        option proto 'dhcpv6'
 
config interface 'wan'
        option proto 'dslite'
        option peeraddr '2001:db80::1' # AFTR-адреса від вашого провайдера

:!: Якщо ви використовуєте інше ім’я тунельного інтерфейсу, відмінне від `wan`, не забудьте додати його до зони `wan` у файрволі.

Див. нижче розширені параметри конфігурації.

Протокол dslite (Dual-Stack Lite)

Назва Тип Обов’язково Типово Опис
`peeraddr` IPv6-адреса так ні AFTR-адреса DS-Lite, яку надає провайдер
`ip6addr` IPv6-адреса ні Поточна WAN IPv6-адреса Локальна кінцева IPv6-адреса
`tunlink` Логічний інтерфейс ні Поточний WAN-інтерфейс Базовий інтерфейс тунелю
`defaultroute` булевий ні `1` Чи створювати маршрут IPv6 за замовчуванням через тунель
`ttl` ціле число ні `64` TTL для тунельного інтерфейсу
`mtu` ціле число ні `1280` MTU тунельного інтерфейсу

:!: Для роботи ds-lite потрібно вимкнути NAT для IPv4. Необхідно відповідним чином налаштувати файл `/etc/config/firewall`.

:!: Цей тип протоколу не потребує параметра `device` у секції інтерфейсу. Ім’я інтерфейсу формується на основі назви секції, наприклад: `config interface wan` → `dslite-wan`.