Технології переходу з IPv4 до IPv6
Див. також:
Технології переходу можна встановити за допомогою таких пакунків:
- Тунелі IPv4-в-IPv6: ds-lite
Тунель 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-адреси/префікси:
- ip6addr — адреса кінцевої точки тунелю, наприклад `2001:DB8:2222:EFGH::2/64`. Вона використовується лише для з’єднання з іншою стороною тунелю (...::1).
- ip6prefix — маршрутизований префікс, зазвичай `/48` або `/64`, наприклад `2001:DB8:1112::/48`. Клієнти вашої локальної мережі отримають адреси з цього префікса. Ширший префікс дозволяє делегування 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-сесію.
Загальний опис процесу:
- Створюється тунель L2TP, інкапсульований у UDP над IPv4.
- Усередині тунелю встановлюється PPP-сесія.
- За допомогою IPv6CP (див. RFC 5072) погоджуються локальні IPv6-адреси.
- Отримується 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`.