Опять про «MikroTik» или долгожданный SOCKS5

mikrotik+socks5

Я прекрасно понимаю, что вас достали вездесущие микротики, но это действительно интересно. На самом деле статья написана с задержкой в 4 месяца (поддержка SOCKS5 появилась еще в январе 2020 года), но лучше поздно, чем никогда, тем более что информации об этом не так много и мало кто в курсе.

Итак, давайте начнем!

Предыстория

Микротик — очень мощный инструмент, который (IMHO) должен быть в хозяйстве любого сетевого инженера. Огромный функционал и набор инструментов, постоянно пополняющийся с каждым релизом. В Changelog к RouterOS 6.47 (beta) был замечена поддержка SOCKS5, которую лично я ждал несколько лет (и много кто еще, судя по многочисленным «Feature Request» на forum.mikrotik.com):

changelog

Судя по одной из веток вышеупомянутого форума, поддержка встроенного SOCKS5 сервера началась с версии 6.47beta19.

Настройка

Настройка, как всегда с MikroTik, довольно простая и укладывается в четыре строчки.
В качестве испытуемого выступил виртуальный сервер с CHR (Cloud Hosted Router), обновленный до 6.47beta53.

Префикс «beta» в версии RouterOS означает, что она предназначена исключительно для тестирования и отправки баг-репортов в support[at]mikrotik.com. Я настоятельно рекомендую не торопиться с апгрейдом железок под нагрузкой и дождаться Long-Term или хотя бы Stable релиза. Если же вы решили обновиться, то внимательно читайте Changelog, чтобы быть в курсе всех изменений и возможных проблем.

Настраиваем SOCKS5-сервер, выбираем авторизацию по паролю (есть возможность сделать открытым), в качестве порта указан 3327 (отличный от стандартного 1080), чтобы не попасть в скан-листы ботнетов:

ip socks set enabled=yes version=5 port=3327 auth-method=password

Далее добавляем пользователя:

ip socks users add name=test_socks5 password=Str0nGP@SSw0RD

Создаем правило-исключение в фаерволе:

ip firewall filter add chain=input protocol=tcp dst-port=3327 action=accept comment="SOCKS5 TCP"

И перемещаем наше правило перед правилом типа «drop»:

ip firewall filter move [/ip firewall filter find comment="SOCKS5 TCP"] 0

Готово! На нашем микротике поднят SOCKS5 прокси-сервер.

Проверка

Как и любой житель РФ, имея прокси-сервер в Европе, сразу же вспоминаю про телеграм, на нем и была проверена работоспособность свеженастроенного SOCKS5-сервера:

telegram

Звонки также прекрасно работают, несмотря на ограничение Free версии CHR в 1Mbps.

Далее стало интересно, как будет выглядеть POF (Passive OS Fingerprint), вносимый Микротиком (проверял на WhatLeaks):

С выключенным SOCKS5С включенным SOCKS5
socks_downsocks_up

Видно, что система определяется как Linux, что логично (ибо именно его ядро лежит в основе ROS) и не может не радовать. Да, можно было подменить и user-agent, но у нас несколько другая задача.

При этом на самом микротике, как и положено настоящему серверу, выводится статистика по подключениям и трафику:

stat

Заключение

На самом деле многого не хватает (например, поддержки аутентификации по RADIUS), но я искренне верю в то, что и данная опция будет доработана. Важно заметить, что это все таки роутер и основная его задача — форвардинг трафика, а остальные «фичи» это уже скорее просто приятно. В любом случае осознание того, что железка за 50$ столько всего умеет, будоражит воображение.

На этом все, спасибо за внимание 🙂