Skip to main content

Руководство пользователя

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

В интернет-центрах Keenetic, начиная с версии KeeneticOS 2.08, появилась возможность создавать туннели IPIP (IP over IP), GRE (Generic Routing Encapsulation), EoIP (Ethernet over IP) как в простом виде, так и в сочетании с туннелем IPSec, что позволит использовать для защиты этих туннелей стандарты безопасности IPSec VPN.

Поддержка туннелей IPIPGREEoIP в интернет-центрах Keenetic позволяет установить VPN-соединение с аппаратными шлюзами, Linux-маршрутизаторами, компьютерами и серверами c ОС UNIX/Linux, а также c другим сетевым и телекоммуникационным оборудованием, имеющих поддержку указанных туннелей.

Для работы с туннелями нужно в настройках интернет-центра дополнительно установить соответствующие компоненты системы KeeneticOS:

  • Туннели EoIP (Позволяет создавать туннели Ethernet over IP);

  • Туннели GRE (Позволяет создавать туннели GRE);

  • Туннели IP-IP (Позволяет создавать туннели IP-over-IP).

Сделать это можно на странице "Общие настройки" в разделе "Обновления и компоненты", нажав на "Изменить набор компонентов".

ipip-comp-en.png
Краткое описание

IPIP и GRE-туннели — это туннели сетевого уровня (L3) модели OSI, при создании которых доступны IP-адреса обеих сторон. Они представляются в системе в виде интерфейсов GreX и IPIPX, и через них можно настраивать маршрутизацию (в том числе и default route) точно также, как и через любые другие интерфейсы. Плюс ко всему для этих интерфейсов можно настроить уровень доступа security level — private, protected или public (информацию по описаниям уровней доступа можно найти в статье "Настройка правил межсетевого экрана из командного интерфейса").

IPIP (IP over IP) один из самых простых в настройке туннелей (инкапсулирует только unicast IPv4-трафик). Его можно настроить как на UNIX/Linux-системе, так и на различных маршрутизаторах (например, Cisco).

GRE (Generic Routing Encapsulation) туннель является одной из популярных разновидностей VPN. Туннели GRE совместимы с аппаратными шлюзами безопасности, маршрутизаторами Mikrotik, Linux-роутерами, а также с оборудованием, которое умеет работать с GRE (например, Cisco, Juniper и др).

EoIP-туннель (Ethernet over IP) — это туннель канального уровня (L2модели OSI поверх сетевого уровня (L3). Данные через этот туннель передаются на уровне Ethernet-кадров. EoIP позволяет создать прозрачную сетевую среду, эмулирующую прямое Ethernet-подключение между сетями. При этом видны все MAC-адреса, и можно объединить две локальные сети на уровне L2 через Интернет при помощи этого типа туннеля. В качестве транспорта EoIP использует GREEoIP-туннель может работать поверх IPIPPPTP и любых других соединений, способных передавать IP-пакеты. Через него кроме IP можно передавать любой трафик, в том числе и ARPDHCPPPPoEIPv6 и др. По умолчанию в туннеле при смене security level на private/protected будет работать сканирование подсети посредством ARP. В системе представлен в виде интерфейса EoIPX.

EoIP разработан компанией MikroTik, потому присутствует совместимость с ними, а также с Linux-роутерами, которые умеют работать с EoIP.

Важно

Туннели IPIPGREEoIP относятся к типу точка-точка. Оба участника туннеля должны иметь внешние IP-адреса (или находиться в одной сети) и между ними не должно быть никакой трансляции адресов NAT. Это необходимые условия для установки туннеля.

В простом виде, никаких механизмов безопасности для этих туннелей не предусмотрено (отсутствуют механизмы шифрования и аутентификации).

Туннели IPIPGRE и EoIP работают без сохранения состояния соединения (их называют stateless или connectionless), то есть невозможно понять находится ли в работоспособном состоянии туннель или нет. Мы можем только настроить обе стороны и после этого проверить передачу данных.

Начиная с версии KeeneticOS 2.10 была добавлена возможность использовать механизм Ping Check на туннельных интерфейсах IPIPGRE и EoIP.

Туннели IPIPGRE и EoIP работают непосредственно поверх IPv4-протокола. IPIP использует номер IP-протокола 4GRE и EoIP используют номер IP-протокола 47.

Примеры

Важно

Настройка туннелей IPIPGRE и EoIP реализована как в веб-интерфейсе интернет-центра, так и в интерфейсе командной строки (CLI). Полный синтаксис указанных в статье команд вы найдете в справочнике командного интерфейса (CLI) в Центр загрузки.

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

Настройка туннеля GRE/IPIP между двумя интернет-центрами Keenetic.

  1. Пример 1. Настройка на одном конце туннеля:

    (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
    (config-if)> exit
    (config)> system configuration save

    На другом конце туннеля задаются "зеркальные" настройки:

    (config)> interface IPIP0
    (config-if)> tunnel destination 8.6.5.4
    (config-if)> ip address 192.168.100.2 255.255.255.0
    (config-if)> security-level private
    (config-if)> up
    (config-if)> exit
    (config)> system configuration save

    После этого можно попробовать пропинговать с любой из сторон адрес удаленной стороны в туннеле для проверки работоспособности туннеля.

    Стоит обратить внимание, что в качестве destination можно указать как доменное имя (через Cloud-режим в KeenDNS работать не будет!), так и IP-адрес удаленной стороны (WAN-интерфейса устройства).

    Для GRE имя интерфейса будет Gre0, для IPIP имя интерфейса IPIP0.

  2. Пример 2. Настройка на одном конце туннеля:

    (config)> interface IPIP0
    (config-if)> tunnel destination router1.example.com
    (config-if)> ip address 192.168.100.1 255.255.255.0
    (config-if)> up
    (config-if)> exit
    (config)> no isolate-private
    (config)> ip route 10.10.2.0 255.255.255.0 IPIP0 /*static route to a remote private subnet 10.10.2.0/24 through the tunnel*/
    (config)> system configuration save

    На другом конце туннеля:

    (config)> interface IPIP0
    (config-if)> tunnel destination 8.6.5.4
    (config-if)> ip address 192.168.100.2 255.255.255.0
    (config-if)> up
    (config-if)> exit
    (config)> no isolate-private
    (config)> ip route 10.10.1.0 255.255.255.0 IPIP0 /*static route to a remote private subnet 10.10.1.0/24 through the tunnel*/
    (config)> system configuration save

Настройка туннеля EoIP между двумя интернет-центрами Keenetic.

В случае с туннелем EoIP настройки будут абсолютно те же, кроме двух моментов:

  • можно задать MAC-адрес интерфейса;

  • необходимо задать EoIP tunnel ID, идентификатор туннеля (число в диапазоне от 1 до 65535), причем на обеих сторонах он должен совпадать.

Настройка на одном конце туннеля:

(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
(config-if)> exit
(config)> system configuration save

"Зеркальная" настройка на другом конце туннеля:

(config)> interface EoIP0
(config-if)> tunnel destination 8.6.5.4
(config-if)> tunnel eoip id 1500
(config-if)> ip address 192.168.100.2 255.255.255.0
(config-if)> security-level private
(config-if)> up
(config-if)> exit
(config)> system configuration save

После этого можно попробовать пропинговать с любой из сторон адрес удаленной стороны в туннеле для проверки работоспособности туннеля.

Интерфейс EoIPx можно включить в Bridge для объединения локальных сетей. Для этого на обеих сторонах нужно настроить EoIP-интерфейс без IP-адреса, и затем включить в Bridge Home:

(config)> interface Home
(config-if)> include EoIP0
(config-if)> exit
(config)> system configuration save

Важно

Для интерфейсов туннелей IPIPGRE и EoIP значение MTU автоматически вычисляется на основе интерфейса, через который будет проходить трафик, но также его можно и задать руками через команду interface ip mtu

При объединении локальных сетей с помощью туннеля EoIP рекомендуем на хостах использовать статические (постоянные) IP-адреса, указанные вручную. Если клиенты настроены на автоматическое получение IP-адресов от DHCP-сервера, то после установки туннеля могут возникнуть проблемы с присвоением IP-адресов, т.к. DHCP-запросы будут уходить в туннель, т.е. удаленную сеть.

Использование туннелей IPIP, GRE и EoIP совместно с IPSec

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

  • правильно выставляется значение MTU;

  • соединение становится connection-oriented, и нужно выбирать, кто из концов туннеля становится клиентом, а кто сервером;

  • автоматически решается проблема с проходом через NAT, поскольку используется IPSec NAT Traversal (NAT-T), при котором весь туннельный трафик превращается в поток UDP на порт 500/4500;

  • используется шифрование и проверка целостности данных.

Компонент IPSec VPN добавляет следующие настройки к туннелям:

  • interface ipsec preshared-key <key>  — PSK для шифрования

  • interface ipsec encryption-level <level>  — уровень шифрования, по умолчанию задан таким, чтобы охватывал максимально большое число устройств и ускорялся аппаратно. Можно не менять.

Поскольку IPSec разграничивает клиента и сервер, то теперь для настройки клиента (инициатора, той стороны, которая будет пытаться установить соединение) необходимо использовать команду interface tunnel destination, а для включения режима сервера (той стороны, которая будет отвечать на попытки установления соединения) необходимо использовать команду interface tunnel source.

Пример настройки туннеля EoIP с IPsec (в нашем примере сторона с WAN-адресом 8.6.5.4 является сервером):

Сервер:

(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)> ipsec ikev2
(config-if)> security-level private
(config-if)> up
(config-if)> exit
(config)> system configuration save

Клиент:

(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)> ipsec ikev2
(config-if)> security-level private
(config-if)> up
(config-if)> exit
(config)> system configuration save

Важно

Нужно, чтобы предварительно согласованный ключ IPSec PSK (preshared-key) совпадал на обеих сторонах туннеля.

В команде interface tunnel source можно указать как интерфейс-источник, так и IP-адрес, на котором будет ожидать подключения сервер. Однако предпочтение отдается интерфейсу, поскольку в данном случае вся перенастройка при смене адреса и прочих событиях будет происходить автоматически.

Примечание

Туннели на базе EoIP/IPSec и GRE/IPSec несовместимы с PPTP-подключениями из-за использования одного и того же протокола GRE. В этом случае остается использовать всего лишь один доступный вариант: IPIP/IPsec

Важно

Обращайте внимание на параметр isolate-private

Между интерфейсами private устанавливать соединение запрещено по умолчанию, но при необходимости, доступ можно разрешить. Если вам нужно разрешить соединения между интерфейсами типа private (т.е. не изолировать доступ), для этого выполните команду no isolate-private

Используйте команду system configuration save для сохранения настроек роутера.