Что такое 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)> upID туннеля должен совпадать на обоих концах.
Важные моменты:
- В качестве 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)> upPSK должен совпадать на обоих концах. Вместо интерфейса можно указать 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.