VPN-туннели IPIP, GRE и EoIP: архитектура, настройка и безопасность

Подробное руководство по туннелям IPIP, GRE и EoIP: принципы работы, настройка на роутерах, интеграция с IPsec, ограничения и практические примеры для безопасного объединения сетей.

Что такое VPN-туннели и зачем они нужны

VPN-туннель — это защищённое сетевое соединение, которое позволяет передавать данные между двумя или более удалёнными узлами через интернет так, как если бы они находились в одной локальной сети. Внутри туннеля данные упаковываются в специальные пакеты и шифруются, что исключает их перехват и изменение злоумышленниками.

Технология туннелирования решает несколько ключевых задач:

  • Объединение географически распределённых сетей — филиалы компании могут работать как единая сеть.
  • Безопасный удалённый доступ — сотрудники подключаются к корпоративным ресурсам из любой точки мира.
  • Обход ограничений — туннель может маскировать трафик, позволяя работать в заблокированных сетях.

Существует несколько протоколов туннелирования, среди которых особое место занимают IPIP, GRE и EoIP. Они работают на разных уровнях модели OSI и имеют свои особенности, преимущества и ограничения.

Туннели IPIP, GRE и EoIP: обзор и отличия

IPIP (IP in IP) — простейший туннельный протокол, который инкапсулирует IP-пакеты внутрь других IP-пакетов. Он работает на сетевом уровне (L3) и использует номер IP-протокола 4. IPIP не обеспечивает шифрования и аутентификации, поэтому его часто комбинируют с IPsec для защиты.

GRE (Generic Routing Encapsulation) — более гибкий протокол L3, который может инкапсулировать не только IP, но и другие протоколы (например, IPv6, IPX). GRE использует номер протокола 47. Он также не имеет встроенной защиты, но поддерживает туннелирование multicast-трафика, что важно для некоторых приложений.

EoIP (Ethernet over IP) — протокол уровня L2, разработанный MikroTik. Он инкапсулирует целые Ethernet-кадры, позволяя объединять две локальные сети на канальном уровне. Через EoIP можно передавать любой трафик: ARP, DHCP, PPPoE, IPv6 и т.д. EoIP также использует номер протокола 47 (как GRE) и требует уникального идентификатора туннеля (ID от 1 до 65535).

Ключевые отличия:

  • IPIP и GRE — L3-туннели, видят IP-адреса сторон.
  • EoIP — L2-туннель, видит MAC-адреса и может объединять сети на уровне Ethernet.
  • GRE поддерживает multicast, IPIP — только unicast IP.
  • EoIP требует совпадения ID на обоих концах.

Как работают туннели IPIP, GRE и EoIP

Все три типа туннелей являются connectionless — они не поддерживают постоянное соединение и не могут самостоятельно определить, работоспособен ли туннель. Проверка осуществляется только путём отправки трафика (например, ping).

Принцип инкапсуляции:

  • Исходный пакет (IP или Ethernet-кадр) помещается внутрь нового IP-пакета.
  • Новый заголовок содержит адреса конечных точек туннеля (source и destination).
  • Промежуточные маршрутизаторы видят только внешние адреса, внутренняя структура скрыта.

Ограничение по NAT: Туннели в чистом виде не проходят через NAT, так как используют собственные IP-протоколы (4 для IPIP, 47 для GRE/EoIP). Для работы через NAT требуется дополнительная инкапсуляция, например, с помощью IPsec NAT Traversal, который превращает трафик в UDP-пакеты на портах 500/4500.

MTU и фрагментация: Добавление заголовков увеличивает размер пакета, что может превысить MTU сетевого интерфейса. Для EoIP рекомендуется вручную выставлять MTU 1500 перед включением в bridge, чтобы избежать проблем с фрагментацией. В современных версиях ПО фрагментация включается автоматически.

Настройка туннелей IPIP, GRE и EoIP на примере Keenetic

Настройка туннелей на роутерах Keenetic (начиная с прошивки 2.08.A.10.0-0) производится через CLI. Рассмотрим базовые примеры.

Настройка IPIP-туннеля:

(config)> interface IPIP0
(config-if)> tunnel destination router1.example.com
(config-if)> ip address 192.168.100.1 255.255.255.0
(config-if)> security-level private
(config-if)> up

На удалённой стороне — зеркальные настройки с другим IP-адресом.

Настройка GRE-туннеля: Аналогично, но имя интерфейса — Gre0.

Настройка EoIP-туннеля:

(config)> interface EoIP0
(config-if)> tunnel destination router1.example.com
(config-if)> tunnel eoip id 1500
(config-if)> ip address 192.168.100.1 255.255.255.0
(config-if)> security-level private
(config-if)> up

ID туннеля должен совпадать на обоих концах.

Важные моменты:

  • В качестве destination можно указать доменное имя (но не через KeenDNS) или IP-адрес WAN-интерфейса.
  • Для EoIP можно задать MAC-адрес интерфейса.
  • После настройки проверка выполняется ping-ом адреса удалённой стороны в подсети туннеля.

Интеграция с IPsec: защита туннелей

IPsec (Internet Protocol Security) — набор протоколов для шифрования, аутентификации и обеспечения целостности данных на сетевом уровне. При добавлении компонента ipsec к туннелям IPIP, GRE или EoIP решаются следующие проблемы:

  • Шифрование — трафик становится недоступным для перехвата.
  • Аутентификация — используется предварительный общий ключ (PSK) или цифровые сертификаты.
  • Прохождение через NAT — IPsec NAT Traversal превращает трафик в UDP на портах 500/4500.
  • Connection-oriented — туннель становится управляемым, можно определить клиента и сервера.

Пример настройки EoIP с IPsec (серверная сторона):

(config)> interface EoIP0
(config-if)> tunnel source ISP
(config-if)> tunnel eoip id 1500
(config-if)> ipsec preshared-key mytestingkey
(config-if)> ip address 192.168.100.1 255.255.255.0
(config-if)> security-level private
(config-if)> up

Клиентская сторона:

(config)> interface EoIP0
(config-if)> tunnel destination 8.6.5.4
(config-if)> tunnel eoip id 1500
(config-if)> ipsec preshared-key mytestingkey
(config-if)> ip address 192.168.100.2 255.255.255.0
(config-if)> security-level private
(config-if)> up

PSK должен совпадать на обоих концах. Вместо интерфейса можно указать IP-адрес, но использование интерфейса предпочтительнее для автоматической перенастройки при смене адреса.

Ограничения и совместимость туннелей

Несовместимость с PPTP: Туннели на базе EoIP/IPsec и GRE/IPsec принципиально несовместимы с PPTP-подключениями, так как оба используют протокол GRE (номер 47). В таких случаях остаётся только вариант IPIP/IPsec.

Совместимость с оборудованием:

  • GRE и IPIP совместимы с Zyxel ZyWall, MikroTik, Linux-роутерами, а также с оборудованием Cisco, Juniper и другими, поддерживающими GRE.
  • EoIP разработан MikroTik, поэтому совместим с устройствами MikroTik и Linux-роутерами, поддерживающими EoIP.

Ограничение по NAT: Без IPsec туннели не работают через NAT. Если между конечными точками есть трансляция адресов, необходимо использовать IPsec NAT Traversal.

Connectionless природа: Туннели не имеют встроенного механизма проверки работоспособности. Администратор должен самостоятельно мониторить состояние (например, с помощью ping или скриптов).

MTU: Автоматический расчёт MTU может привести к проблемам. Для EoIP рекомендуется вручную устанавливать MTU 1500 перед включением в bridge.

Практические сценарии использования

Объединение филиалов (Site-to-Site): Компания с двумя офисами может настроить GRE или IPIP-туннель между роутерами, добавив IPsec для шифрования. Это позволит сотрудникам работать с общими ресурсами (файловые серверы, ERP) как в единой сети.

Удалённый доступ к домашней сети: Пользователь может настроить EoIP-туннель с IPsec на домашнем роутере и подключаться к нему из любого места, получая доступ ко всем устройствам в локальной сети (принтеры, NAS, умный дом).

Прозрачное L2-объединение: EoIP позволяет объединить две сети на канальном уровне. Например, можно создать bridge между EoIP-интерфейсом и домашним коммутатором, чтобы устройства из разных городов видели друг друга как в одной подсети. Это полезно для игр, VoIP или тестирования.

Резервирование каналов: При использовании нескольких WAN-интерфейсов можно настроить туннели с разными источниками (tunnel source auto) для автоматического переключения при сбое основного канала.

Безопасность и шифрование в туннелях

Без IPsec туннели IPIP, GRE и EoIP не обеспечивают никакой защиты — данные передаются в открытом виде. IPsec добавляет несколько уровней безопасности:

  • Аутентификация — PSK или цифровые сертификаты (PKI) подтверждают подлинность сторон.
  • Шифрование — симметричные алгоритмы (AES-256, ChaCha20) защищают данные.
  • Целостность — хэш-функции (SHA-1, SHA-256) проверяют, что данные не были изменены.
  • Anti-replay — защита от повторного использования перехваченных пакетов.

Уровни шифрования в IPsec: В Keenetic доступны уровни weak, normal, strong, которые определяют набор предложений (proposals) для IKE и SA. Например, strong использует AES256-SHA1-modp1536 и выше. Рекомендуется оставлять уровень по умолчанию (normal), который обеспечивает совместимость с большинством устройств и аппаратное ускорение.

Влияние на MSS и MTU: IPsec добавляет заголовки ESP (до 50-60 байт), что уменьшает эффективный MSS. Для избежания фрагментации рекомендуется уменьшить MSS на уровне TCP или настроить MTU на интерфейсе туннеля.

Сравнение с другими VPN-протоколами

IPsec vs SSL VPN:

  • IPsec работает на сетевом уровне (L3), шифрует весь трафик, требует настройки клиента и сервера.
  • SSL VPN работает на транспортном (L4) или прикладном (L7) уровне, использует TLS, проще в использовании (через браузер), но защищает только трафик приложений.

IPsec vs WireGuard:

  • WireGuard — более новый протокол, использует ChaCha20 и Poly1305, проще в настройке, быстрее.
  • IPsec — более зрелый, поддерживает больше алгоритмов и режимов, но сложнее в конфигурации.

IPsec vs OpenVPN:

  • OpenVPN — гибкий, работает на пользовательском уровне, поддерживает TCP/UDP, легко обходит NAT.
  • IPsec — встроен в ядро ОС, обеспечивает более низкую задержку, но требует больше знаний для настройки.

Когда выбирать IPIP/GRE/EoIP с IPsec:

  • Когда нужно объединить сети на уровне L2 (EoIP).
  • Когда требуется поддержка multicast (GRE).
  • Когда важна производительность и низкая задержка (IPIP).
  • Когда оборудование поддерживает аппаратное ускорение IPsec.

Вопросы и ответы

В чём разница между туннелями IPIP, GRE и EoIP?

IPIP и GRE работают на сетевом уровне (L3) и инкапсулируют IP-пакеты, причём GRE поддерживает больше протоколов (включая multicast). EoIP работает на канальном уровне (L2) и инкапсулирует Ethernet-кадры, позволяя объединять сети на уровне MAC-адресов. EoIP требует уникального ID туннеля, а IPIP и GRE — нет.

Можно ли использовать туннели IPIP/GRE/EoIP без IPsec?

Да, можно, но они не обеспечивают шифрования и аутентификации. Данные будут передаваться в открытом виде, что небезопасно. Рекомендуется всегда добавлять IPsec для защиты трафика, особенно при передаче через интернет.

Как настроить EoIP-туннель для объединения двух домашних сетей?

На обоих роутерах создайте EoIP-интерфейс с одинаковым ID (например, 1500). На одном укажите tunnel source (интерфейс или IP), на другом — tunnel destination. Затем включите EoIP-интерфейс в bridge на каждой стороне. После этого устройства из разных сетей будут видеть друг друга как в одной локальной сети.

Почему туннели не работают через NAT?

Туннели IPIP, GRE и EoIP используют собственные IP-протоколы (4 и 47), которые не поддерживаются NAT-устройствами. Для работы через NAT необходимо использовать IPsec NAT Traversal, который инкапсулирует трафик в UDP-пакеты на портах 500/4500.

Как проверить работоспособность туннеля?

После настройки выполните ping с одной стороны туннеля на IP-адрес удалённой стороны в подсети туннеля (например, 192.168.100.2). Если ping проходит, туннель работает. Также можно проверить маршруты и статистику интерфейсов.

Какие ограничения по MTU для туннелей?

Добавление заголовков увеличивает размер пакета. Для EoIP рекомендуется вручную выставить MTU 1500 перед включением в bridge, чтобы избежать фрагментации. Для IPIP и GRE MTU обычно вычисляется автоматически, но может потребоваться ручная настройка при использовании IPsec.

Совместимы ли туннели GRE/IPsec с PPTP?

Нет, они несовместимы, так как оба используют протокол GRE (номер 47). Если необходимо использовать PPTP, остаётся только вариант IPIP/IPsec.