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

В интернет-центрах Keenetic, начиная с версии KeeneticOS 2.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 другим сетевым и телекоммуникационным оборудованием, имеющих поддержку указанных туннелей.

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

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

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

gre-comp.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 использует GRE. EoIP-туннель может работать поверх IPIP, PPTP и любых других соединений, способных передавать IP-пакеты. Через него кроме IP можно передавать любой трафик, в том числе и ARP, DHCP, PPPoE, IPv6 и др. По умолчанию в туннеле при смене security level на private/protected будет работать сканирование подсети посредством ARP. В системе представлен в виде интерфейса EoIPX. 
EoIP разработан компанией MikroTik, потому присутствует совместимость с ними, а также с Linux-роутерами, которые умеют работать с EoIP.

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

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

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

Примеры

NOTE: Важно! На данный момент настройка туннелей IPIP, GRE и EoIP реализована через интерфейс командной строки (CLI) интернет-центра. Полный синтаксис указанных в статье команд вы найдете в справочнике командного интерфейса (CLI) в Центре загрузки.

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

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

Пример 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     /*статический маршрут в удаленную частную подсеть 10.10.2.0/24 через туннель*/
(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     /*статический маршрут в удаленную частную подсеть 10.10.1.0/24 через туннель*/
(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

NOTE: Важно! Для интерфейсов туннелей IPIP, GRE и 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

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

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

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

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

 

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

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

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

Комментарии

Комментариев: 15
  • как удалить ранее созданный туннель , в котором уже нет необходимости.

    0
    Действия с комментариями Постоянная ссылка
  • Удалить ранее созданный туннель можно простым редактированием файла конфигурации startup-config.txt и удалением соответствующей секции, или выполнить команду, например: no interface EoIP0

    0
    Действия с комментариями Постоянная ссылка
  • Добрый вечер. Планируется ли реализация данных тунелей через веб?

    6
    Действия с комментариями Постоянная ссылка
  • На данный момент таких планов нет, но если будет возрастать количество запросов на такую реализацию, то конечно разработчики рассмотрят этот вариант.

    -3
    Действия с комментариями Постоянная ссылка
  • Планируется ли реализация данных тунелей через веб? Очень полезно было бы! 

    2
    Действия с комментариями Постоянная ссылка
  • На данный момент не планируется.

    0
    Действия с комментариями Постоянная ссылка
  • почему в статьях, как эта, при написании настроек не указываете/комментируете команды (напротив каждой), это ведь не так сложно, зато экономит массу времени на поиски и разбирательства с настройками новичкам?

    к примеру: (config-if)> ipsec preshared-key mytestingkey - mytestingkey указывать самостоятельно?

    0
    Действия с комментариями Постоянная ссылка
  • Mark, данная инструкция изначально не предназначена для новичков. Обычным пользователям не нужно создавать туннели IPIP (IP over IP), GRE (Generic Routing Encapsulation), EoIP (Ethernet over IP), обычно это уже задача системных администраторов или опытных пользователей, знакомых с работой этих протоколов и с командной строкой. Поэтому данная настройка и доступна только в интерфейсе командной строки и отсутствует в веб-интерфейсе. Настройка VPN-туннелей этого типа это очень узкоспециализированная задача. Полный синтаксис указанных в статье команд вы найдете в справочнике командного интерфейса (CLI) в Центре загрузки.

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

    Этот момент либо немного устарел,либо описан не совсем прозрачно.

    Если уж бриджевать с HOME, то на последнем надо ложить DHCP. Куда более реальный кейс - пбриджевать с каким-то VLAN, связанным с одним или несколькими портами. Вот так https://ideafix.name/?p=3246 работало на 2.0x, на 2.16 уже не работало, т.к. vlan без адреса через веб интерфейс создать нельзя.

    -1
    Действия с комментариями Постоянная ссылка
  • Не надо нигде dhcp класть.
    Всё прекрасно работает.
    А если не хочешь, чтобы клиенты одной стороны случайным образом получали ip на другой стороне, то достаточно, чтобы один из роутеров был с entware - через него можно запретить dhcp запросы через туннель. У меня самого с сентября работает всё это без проблем

    0
    Действия с комментариями Постоянная ссылка
  • > Не надо нигде dhcp класть.
    > Всё прекрасно работает.

    Мы ведь говорим о EoIP? В чем тогда его смысл? У Вас именно EoIP без "удалённого DHCP" работает с сентября?

    0
    Действия с комментариями Постоянная ссылка
  • Dhcp сервер (2 роутера) есть на обеих сторонах. И каждый раздает ip своим локальным клиентам, и являются шлюзами для собственных клиентов.
    При этом локальные сети 2 роутеров - едины. Единое пространство с мультикастами и прочим (192.168.100.1-129; 192
    168.100.130-254)

    0
    Действия с комментариями Постоянная ссылка
  • Еще раз, у Вас EoIP туннель, или нет?

    Просто в моём кейсе нужно чтобы клиент на роутере А получал шлюз роутера Б. Т.е. чтобы грубо говоря смотреть телевизор в квартире А на приставке в квартире Б. Т.е. DHCP через туннель как-бы нужен (ну, или убиться об маршрутизацию), но так, как описано в KB, это более не работает.

    0
    Действия с комментариями Постоянная ссылка
  • Еще раз...
    Есть 2 квартиры: в одной giga (192.168.100.1), в другой city (192.168.100.129).
    По умолчанию, когда на клиентах того или иного роутера в их (клиентах) настройках не указан статический ip, они отправляют широковещательные dhcp запросы. Кто на них успеет ответить (из двух роутеров) тот и выдаёт каждому конкретному клиенту ip адрес и становится для него шлюзом по умолчанию. Меня такое не устраивает и поэтому через entware dhcp запросы в туннеле запрещены. И каждый клиент на каждой стороне (телефоны, телевизоры, приставки, планшеты) при подключении к сети также отправляют dhcp запросы, но долетают они только до роутера на их стороне. Статический адрес каждому клиенту при этом не прописан в самих клиентах, а настроен в роутерах в соответствии с mac адресами.
    Это ни коим образом не ущемляет работу eoip туннеля и прохождения внутри него прочих широковещательных запросов.
    На выходе: я с телефона в одной квартире могу отправить видео на телевизор в другой квартире, смотрю на клиентах в обоих квартирах dlna ресурсы в другой квартире (в одной квартире dlna это giga, в другой nas) и тд и тп.
    Точно также я в одной из квартир смотрел iptv провайдера другой квартиры. Смотрел т.к. изображение часто квадратится даже в родной квартире (т.е. независимо от eoip), поэтому конкретно это iptv я смотрю через udpxy.
    пиши в телегу https://t.me/mystique_man

    0
    Действия с комментариями Постоянная ссылка
  • Друзья, хочу остановить это обсуждение. Данный сайт это прежде всего информационный ресурс и предназначен для публикации инструкций, статей, файлов и т.п. Переписку и обсуждение таких вопросов можно вести на форуме нашего сообщества https://forum.keenetic.net или в Telegram-канале.
    @ Alex Yefimov, если вы считаете, что в данной статье есть устаревшая или неточная информация, то создайте пожалуйста обращение в техподдержку, опишите всё, наш инженер проверит и если необходимо будет, то мы конечно поправим или допишем что нужно.

    0
    Действия с комментариями Постоянная ссылка

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