Как-то Mikrotik всё время проходил мимо меня. Несмотря на активные рекомендации со стороны друзей и немногочисленных читателей этого блога. Это было как с SSL-сертификатами — я всё их покупал, пока при очередном продлевании наткнулся на дикие изменения привычного интерфейса, и это подтолкнуло на бесплатный (и замечательно работающий) Lets Encrypt.

У меня даже была пару лет назад возможность потестировать Mikrotik (Володя, спасибо большое), но что-то дальше распаковки не пошло. Если я ничего не путаю, тогда Mikrotik предлагал Wifi максимум 802.11n и то на 2.4 GHz, такое мне было совсем не интересно. Плюс рассказы о эксплойтах.

Небольшое отступление. В сетях я немного разбираюсь. Давний пруф для тех, кто в теме: UNOC-RIPE и OLE-RIPE (не обращайте внимание на MD5-PW на maintainer’е, я перестал этим заниматься вечность назад). А кто не в теме — просто примите моё утверждение на веру.

Отношение к Mikrotik у меня было примерно такое:

Исходная задача

И вот осенью мы общались с Сергеем Макаренко, он рассказал про интересную для меня конфигурацию. Две площадки, site-to-site IPSec VPN, маршрутизация локальных сетей, все ресурсы доступны без необходимости пробросов через внешний адрес.

Мне как раз понадобилось объединить два “домашних офиса”. Не то, чтобы мне это было очень сильно нужно, но сильно упрощало некоторые вещи и решало потенциальные проблемы с выставлением нужных мне сервисов в публичный интернет.

Например, в одной точке у меня стоит старый добрый Intel NUC (который я передумал продавать и очень радуюсь этому). И мне нужен как минимум ssh на него.

Раньше у меня стояли wifi-рутеры “домашнего” уровня. Там очень зачаточная фильтрация, и приходится открывать порт 22 всему интернет. Security through obscurity вызывает у меня улыбку, абсолютно ничего не поменяется, если перекинуть этот порт на “супер-секретный” 22222. Дальше ufw/iptables на сервере открывал доступ только с jump-хоста и ходил через этот jump-хост.

И если с ssh всё решается, то как быть с доступом к https, который находится внутри сети и к которому я не хочу давать доступ всем на сетевом уровне, потому что дома application-level access я доверяю только для статических сайтов? Или слегка усложню условие — что делать, если этих https’ов несколько на разных внутренних адресах, а внешний адрес всего один? HAProxy + SNI решает вопрос, но ведь сертификаты все в Let’s Encrypt, и начинаешь снова думать, как решить очередную задачу вместо того, что просто заняться тем, что было нужно изначально.

А решение простое — получить доступ во внутреннюю сеть и работать напрямую с сервисами, привязанными к разным IP. Клиентский VPN решает эту часть задачи (но мои wifi-рутеры поддерживают только PPTP, а на NUC заводить OpenVPN я не хотел). А если эти ресурсы размазаны по двум локальным сетям на разных площадках? Логичный выход — site-to-site VPN для построения связи между сетями и клиентский VPN — для доступа в эту объединённую сеть.

Mikrotik

Wifi-точки заменять на другие я не особо хотел. Они вполне нормально работали, поэтому решил их перевести в режим Access Point. Наткнулся сразу же на одну проблему — одна из точек была TPLink Archer C7, покупал я её по принципу “много тратить денег не хочу”, и вот получил настоящее кастомерское решение, которое работает только как router, переключить в AP нельзя. Пока отложил замену, для WiFi в одной точке смирился с двойным NAT (а то, что такое не любит, например, PS4, переключил в LAN Mikrotik’а). Вторая точка, Netgear R6400 была вполне нормальной. Особенно мне нравится возможность отключения светодиодов (обычно приходится их заклеивать несколькими слоями изоленты).

Выбрал чистый роутер Mikrotik hEX RB750GR3 без WiFi из-за аппаратной поддержки IPSec.

При разборке с двойным NAT, запутавшись в доступных моделях, купил Mikrotik hAP ac lite. Это какое-то дикое недоразумение, а не железка. Поддержка 802.11 ac 5Ghz и порты Ethernet (!!!) 10/100Mbps (!!!). Такое даже на дачу я приспособить не хочу, пришлось сразу возвращать. Нормальная модель же — это hAP ac или hAP ac2, которая появилась недавно. Их купить тогда не мог, поэтому и смирился.

TPLink как простой роутер выдаёт приличные показатели по Ethernet:

RB750GR3 немного скромнее, не возлагайте на него огромные ожидания, его прелесть не в мощных процессорах, а в OS:

И с использованием IPSec (ладно, немного лукавлю, это данные через VPN L2TP/IPSec, а не site-to-site IPSec VPN):

Меня такая скорость вполне устраивает. Нужно было бы больше — тогда смотрел бы на pfsense, но это совсем другие деньги.

Во вторую точку взял такой же Mikrotik. Сначала искал информацию по настройке в интернет, были полезные описания с митапов, потом наткнулся на manitonetworks.com, у них есть два отличных гайда:

По ним всё и настроил.

Особенности

Для основной точки я не могу использовать постоянный IP-адрес. Пришлось написать скприпт, который запускается на Mikrotik’е и меняет конфигурацию (acl, IPSec, etc) при смене внешнего адреса второго пира. Это пример гибкости MikroTik.

Для клиентского VPN я использую OpenVPN на TCP-порте (из-за ограничений в самом OpenVPN на Mikrotik и политик в локальной сети офиса). И открываю его по port-knocking’у.

Firewall я настроил жёстко. Все обращения на порты, которые явно не разрешены (а это всего несколько портов), сразу же попадают в address-list, трафик на который дальше дропается. Из списка адрес выносится автоматически через полчаса. Обычно там порядка 50 заблокированных адресов.

Статистика снимается по SNMP с помощью Telegraf, идёт в InfluxDB, а дальше визуализируется в Grafana.

Бекапы с двух точек делаются автоматически скриптами Mikrotik и отправляются на почту.

Преимущества

Теперь я смог отказаться для “домашних” сервисов от Digital Ocean/Linode/etc. В локальной сети запущены:

  • Gitlab с раннерами, включая раннеры на Raspberry Pi. Наконец-то мои личные данные находятся целиком под моим управлением. Бекапы — в S3.
  • Telegraf/InfluxDB/Grafana для сбора внутренних метрик, таких как температура в апартаментах, etc.
  • Zabbix для мониторинга нескольких приложений
  • SMS-шлюз для форварда SMS и информации по звонкам на почту
  • Plex
  • Сбор почты в Maildir
  • Бекапы Arq

Собираюсь во второй точке поставить NAS для бекапов и набор датчиков с передачей информации в основную точку.

Минусы

Конечно же, надёжность этой конфигурации определяется надёжностью связи, но пока заметных даунтаймов у меня не было.

Пока во второй точке находится только один Raspberri Pi 2 и про полосу/надёжность сказать ничего не могу. Это станет понятно, когда я поставлю там что-то значимое, например, сервер или NAS.

Из “подземных стуков” была одна странность. Когда был поднят site-to-site IPSec, то порой при просмотре из второй точки были “замирания” Plex, который стоит в основной точке. Опускание VPN порой решало проблему. И это при том, что трафик шёл напрямую через интернет, а не через VPN. Не удалось пока найти причину, но это было не очень критично.

Заключение

Понятно, всё это лишь лично моя конфигурация для решения лично моих задач при лично моих исходных условиях. Перед тем, как повторять, взвесьте все плюсы и минусы.

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

P.S. hAP ac2 судя по результатам тестирования даёт ту же производительность IPSec, что и hEX, так что имеет смысл брать именно его. Скорее всего я его попробую.