Создание домашней сети на базе устройств MikroTik: Часть 5 — Создание EoIP туннеля

В предыдущий раз, мы настроили шифрованный OpenVPN туннель между двумя роутерами hAP ac и hEX
Еще раз посмотрим на схему из первой части:

Схема из первой части

После организации IP туннеля на базе OpenVPN, нам необходимо поверх него, создать еще один туннель используя EoIP
Для начала давайте немного взглянем, что такое EoIP в MikroTik RouterOS:
Ethernet over IP (EoIP) Tunneling – это протокол MikroTik RouterOS, который создает туннель Ethernet между двумя маршрутизаторами поверх IP-соединения. Туннель EoIP может работать через туннель IPIP, туннель PPTP или любое другое соединение, способное транспортировать IP.
Когда функция моста маршрутизатора включена, весь трафик Ethernet (все протоколы Ethernet) будет соединен так же, как если бы там был физический интерфейс Ethernet и кабель между двумя маршрутизаторами (с включенным мостом). Этот протокол позволяет использовать несколько сетевых схем.

Сетевые настройки с интерфейсами EoIP:
Возможность подключения локальных сетей через Ethernet
Возможность подключения локальных сетей через зашифрованные туннели
Возможность подключения локальных сетей через беспроводные сети 802.11b «ad-hoc»

Протокол EoIP инкапсулирует Ethernet-фреймы в пакеты GRE (IP-протокол номер 47) (как и PPTP) и отправляет их на удаленную сторону туннеля EoIP.

Т.е. по сути между нашими удаленными объектами, после создания туннеля, будет “ходить” любой трафик, как в обычной проводной локальной сети.

Для создания EoIP туннеля ему необходим удаленный адрес интерфейса. Можно задать и локальный, но разницы особой не будет.
Как раз именно OpenVPN выступит каналом, мы ведь знаем IP адреса текущего и удаленного роутеров.
Схема:

Необходимо указать интерфейсу только удаленный IP

  1. Настроим EoIP на роутер hAP ac

Переходим в меню интерфейсов

Добавляем EoIP интерфейс

Вводим параметры интерфейса

Интерфейс создался, и для того, чтобы наша «общая» локальная сеть работала, необходимо наш интерфейс EoIP добавить в наш сетевой мост.

Открываем Bridge и добавляем в него только что созданный EoIP интерфейс.

Открываем меню сетевых мостов

Добавляем EoIP в сетевой мост

Консольно:

/interface eoip add name=»eoip-tunnel» remote-address=172.16.10.2 tunnel-id=1

/interface bridge port add interface=eoip-tunnel bridge=LAN-Bridge

Переходим ко второму роутеру.

2. Настроим EoIP на роутере hEX

Для данного роутера все процесс настройки EoIP будет аналогичен. Единственным отличием будет удаленный IP адрес: тут он будет 172.16.10.1. ID туннеля должен быть одинаковым! Я выбрал номер 1, Вы можете задать свой, какой захотите.

Настройка второго EoIP туннеля

Так же, как и для предыдущего роутера, добавляем EoIP интерфейс в сетевой мост.

Консольно:

/interface eoip add name=»eoip-tunnel» remote-address=172.16.10.1 tunnel-id=1

/interface bridge port add interface=eoip-tunnel bridge=LAN-Bridge

При добавлении EoIP туннеля в сетевой мост, может возникнуть проблема, что некоторые сайты перестают работать.
Это связано с MTU сетевого моста. EoIP туннель становится Root(основным) портом для сетевого моста. Чтобы избавиться от данной проблемы достаточно привести MTU Bridge интерфейса к изначальному состоянию.
Команда:
[cc]/interface bridge set LAN-Bridge mtu=1500[/cc]

После добавления туннельных интерфейсов в сетевой мост Вы уже должны успешно пинговать локальные ПК(смартфоны, ноутбуки и др.).
Вроде бы все хорошо. На каждом объекте свой DHCP сервер, заданы свои пулы адресов.
Но как мы знаем при подключении нового клиента к сети он начинает широковещательную рассылку специальных пакетов DHCPDISCOVER.
Рассылка идет начиная с адреса 0.0.0.0 до адреса 255.255.255.255 т.е. по всем возможным.
В ответ сервер DHCP посылает пакет DHCPOFFER. Клиент в ответ на пакет DHCPOFFER посылает пакет DHCPREQUEST. В ответ на пакет DHCPREQUEST сервер DHCP посылает пакет DHCPACK, завершая цикл инициализации.
Соответственно для нас НЕжелательно, чтобы подобные пакеты с одного объекта убегали в другой и наоборот.
Нам нужно ограничить объект только тем пулом IP адресов, которые мы задали. Но нельзя запрещать клиентам общаться между собой.

И MikroTik позволяет нам это сделать!

3. Запрещаем прохождение DHCP Broadcast запросов через туннель EoIP

Давайте разбираться.
Смотрим на каких портах и по какому протоколу работает DHCP: Wiki DHCP
Видим: Передача данных производится при помощи протокола UDP. По умолчанию запросы от клиента делаются на 67 порт к серверу, сервер в свою очередь отвечает на порт 68 к клиенту, выдавая адрес IP и другую необходимую информацию, такую, как сетевую маску, шлюз по умолчанию и серверы DNS.

Чтобы запретить прохождение DHCP запросов по туннелю нам необходимо определить, где это сделать и как.
Логично предположить, что управление трафиком и кучей других параметров необходимо делать в IP Firewall, но это не совсем так. По началу, когда я задавал в нем правила они не работали.
Пришлось читать инструкции.
Оказалось, что у сетевого моста свой собственный Firewall, на уровень ниже. Т.е. необходимо открыть меню настроек сетевого моста. Добавляем правило блокировки:

Задаем настройки для правила

Блокируем прохождение пакетов

Консольно:

/interface bridge filter add chain=forward out-interface=eoip-tunnel mac-protocol=ip ip-protocol=udp dst-port=67-68 action=drop

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

А вот и нет =))

Далее у нас встает вопрос безопасности и доступа из вне к локальным устройствам.
Все верно, имея статический IP мы подвержены риску быть взломанными. Т.к. наш статический IP доступен в интернете он может подвергаться различного рода “атакам”.
Поэтому нам нужно сделать так, чтобы только мы могли подключаться к нашим роутерам и другим сервисам в локальной сети.
Также у нас на очереди система мониторинга DUDE.

Дополнение:
Я провел небольшое тестирование скоростных характеристик своего туннеля.
Делал я их с помощью утилиты bandwidth-test в WinBox между самими роутерами. Т.е. роутер-роутер через сети провайдеров.
Тарифы такие:
hAP ac – 500 Mbps (Практические пока до 300 Мбит/сек)
hEX – 100 Mbps (Практические 95 Мбит/сек)
Пробовал я все доступные на RouterOS для OpenVPN (v6.39.3) методы аутентификации (md5, sha1) и шифрования (blowfish 128, aes 128, aes 192, aes 256) и вообще без шифрования и аутентификации (null)
Соответственно максимально возможная скорость ограничена hEX стороной т.к. у него всего 100 Мбит/сек.
Самую быструю скорость удалось получить конечно в режиме без шифрования и аутентификации вообще Send – 85 Mbps / Receive – 85 Mbps
Самую низкую с шифрованием AES256 Send – 25 Mbps / Receive – 25 Mbps
Оптимальным вариантом я бы выбрал режим Auth (sha1) и Cipher (aes 128) т.к. для домашней сети не нужно сильного шифрования Send – 31 Mbps / Receive – 31 Mbps
Какой режим выбирать, решать Вам!

 

Источник оригинальной статьи: https://gregory-gost.ru/