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

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

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

Для работы с туннелями нужно в настройках интернет-центра дополнительно установить соответствующие компоненты системы NDMS:
Туннели IP-IP (Позволяет создавать туннели IP-over-IP);
Туннели GRE (Позволяет создавать туннели GRE);
Туннели EoIP (Позволяет создавать туннели Ethernet over IP).

t01.png

Краткое описание

IPIP и GRE-туннели — это туннели 3-го сетевого уровня 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 совместимы со всеми шлюзами безопасности Zyxel серии ZyWALL/USG, маршрутизаторами Mikrotik, Linux-роутерами, а также с оборудованием, которое умеет работать с GRE (например, Cisco, Juniper и др).

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

Важно! Туннели IPIP, GRE, EoIP относятся к типу точка-точка. Оба участника туннеля должны иметь внешние IP-адреса (или находится в одной сети) и между ними не должно быть никакой трансляции адресов NAT. Это необходимые условия для установки туннеля.
В простом виде, никаких механизмов безопасности для этих туннелей не предусмотрено (отсутствуют механизмы шифрования и аутентификации).
Обращаем ваше внимание, что сами по себе туннели IPIP, GRE и EoIP являются connectionless (без сохранения состояния соединения), то есть невозможно понять находится ли в работоспособном состоянии туннель или нет. Мы можем только настроить обе стороны и после этого проверить передачу данных.

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

Примеры

На данный момент настройка туннелей IPIP, GRE и EoIP реализована через интерфейс командной строки (CLI) интернет-центра.

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

Пример 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)> 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

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

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

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

Пример 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)> no isolate-private
(config-if)> ip route 10.10.2.0 255.255.255.0 IPIP0     /*статический маршрут в удаленную частную подсеть 10.10.2.0/24 через туннель*/

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

(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)> no isolate-private
(config-if)> ip route 10.10.1.0 255.255.255.0 IPIP0     /*статический маршрут в удаленную частную подсеть 10.10.1.0/24 через туннель*/

Настройка туннеля 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)> 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

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

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

(config)> interface Home
(config-if)> include EoIP0

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

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

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

В случае установки специального компонента ОС NDMS 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)> 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

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

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


Известные ограничения

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

Важно

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


KB-5185

Была ли эта статья полезной?

Пользователи, считающие этот материал полезным: 4 из 4

Еще есть вопросы? Отправить запрос

Комментарии

0 комментариев

Войдите в службу, чтобы оставить комментарий.