Как установить AdGuard VPN CLI на роутеры MikroTik с RouterOS
- RouterOS 7.6+ с функцией Container и поддержкой запуска при загрузке
- SSH-доступ к роутеру
В этом руководстве объясняется, как установить и запустить Docker-контейнер AdGuard VPN CLI на роутерах MikroTik на базе RouterOS.
Эти настройки были протестированы на RouterOS 7.22. Рекомендуется использовать последнюю стабильную версию RouterOS для лучшей совместимости.
Конфигурация RouterOS
1. Подключитесь к роутеру через SSH
ssh admin@192.168.1.1
Замените IP на адрес вашего роутера
2. Проверьте, установлен ли пакет контейнера
/system/package/print
Найдите пакет container в списке. Если его там нет, установите его:
Установка пакета контейнера
-
Скачайте файл
.npkдля вашей архитектуры и версии ОС с официального сайта -
Загрузите файл
.npkна роутер:scp container-7.X-platform.npk admin@192.168.1.1:Замените IP на адрес вашего роутера.
-
Убедитесь, что файл загружен:
/file/printВы должны увидеть файл
container-X.XX.npk. -
Перезагрузите роутер:
/system/rebootПосле перезагрузки файл
.npkисчезнет. Это поведение ожидаемо. Оно означает, что пакет был успешно установлен. -
Проверьте:
/system/package/printПакет
containerдолжен появиться в списке.
3) Включите режим Container
Включите режим контейнера и следуйте указаниям команды. Для подтверждения изменения режима работы устройства потребуется выполнить холодную перезагрузку (физически отключить и снова подключить питание).
/system/device-mode/update container=yes
Не закрывайте терминал и не прерывайте выполнение команды до отключения питания — это приведет к отмене операции.
4. Убедитесь, что режим контейнера активен
/system/device-mode/print
Должно отобразиться container: yes
5. Настройте сеть для контейнера
Как это работает
В этой настройке:
- Контейнер выступает в качестве VPN-шлюза
- RouterOS направляет выбранный трафик через отдельную таблицу маршрутизации (
via_vpn) - Трафик перенаправляется в контейнер, а затем туннелируется через AdGuard VPN
Поток:
LAN → RouterOS → Правило маршрутизации → Контейнер → VPN → Интернет
Эта настройка направляет весь LAN-трафик через VPN-контейнер. Неправильная конфигурация может привести к нарушению сетевого соединения или потере доступа в интернет.
Создайте интерфейс veth:
/interface/veth/add name=veth1 address=172.17.0.2/24 gateway=172.17.0.1
Создайте мост:
/interface/bridge/add name=docker
Добавьте veth в мост:
/interface/bridge/port/add bridge=docker interface=veth1
Назначьте мосту IP-адрес:
/ip/address/add address=172.17.0.1/24 interface=docker
Настройте NAT для доступа контейнера к интернету:
/ip/firewall/nat/add chain=srcnat src-address=172.17.0.0/24 out-interface=ether1 action=masquerade
Замените ether1 на имя вашего WAN-интерфейса (например, ether3, ether5). Чтобы найти его:
- Выполните
/ip/route/printи найдите маршрут по умолчанию (0.0.0.0/0, routing-table=main) — запишите IP-адрес шлюза - В том же выводе найдите подключённый маршрут ('DAc'), который покрывает IP-адрес этого шлюза. Указанный там интерфейс — это ваш WAN-интерфейс
Создайте таблицу маршрутизации для VPN
/routing/table/add name=via_vpn fib
Добавьте маршрут по умолчанию через контейнер
/ip/route/add dst-address=0.0.0.0/0 gateway=172.17.0.2@main routing-table=via_vpn distance=1 check-gateway=ping
Добавьте правило маршрутизации
/routing/rule/add src-address=192.168.88.0/24 action=lookup table=via_vpn
Замените IP на адрес вашей локальной сети
Настройте DNS-серверы для клиентов локальной сети на общедоступные DNS-серверы
/ip/dhcp-server/network/set [find address="192.168.88.0/24"] dns-server=1.1.1.1,8.8.8.8
Запуск контейнера
Загрузите образ напрямую из Docker Hub
1. Настройте реестр контейнеров
Задайте URL-адрес Docker Hub и временную директорию для извлечения образа
/container/config/set registry-url=https://registry-1.docker.io tmpdir=disk1/tmp
Замените disk1 на имя конкретного диска, с которым вы хотите работать. Выберите его из списка, отображённого в выводе команды /disk/print.
Это также относится к следующей команде.
2. Добавьте контейнер и загрузите образ
/container/add name=adguardvpn-cli remote-image=adguard/adguardvpn-cli:latest interface=veth1 root-dir=disk1/adguardvpn-cli start-on-boot=yes logging=yes
Доступные теги:
adguard/adguardvpn-cli:latest— последняя стабильная версияadguard/adguardvpn-cli:nightly— последняя nightly-сборкаadguard/adguardvpn-cli:beta— последняя бета-версияadguard/adguardvpn-cli:1.7.6-nightly— конкретная версия
Параметры:
name=adguardvpn-cli— имя контейнераremote-image— имя образа Docker Hubinterface=veth1— сетевой интерфейс для контейнераroot-dir=disk1/adguardvpn-cli— каталог для файлов контейнераstart-on-boot=yes— авто-старт при перезагрузке роутераlogging=yes— включить логирование
3. Проверьте статус загрузки
/container/print
Образ будет автоматически загружен и извлечён. Дождитесь завершения загрузки (статус изменится на «остановлено»).
4. Запустите контейнер
/container/start adguardvpn-cli
Проверьте состояние контейнера
/container/print
В первом столбце контейнера должен быть установлен флаг R (RUNNING).
Начальная настройка и авторизация в AdGuard VPN CLI
При первом запуске контейнер не сможет подключиться к VPN, так как требуется аутентификация.
1. Откройте оболочку внутри контейнера
/container/shell adguardvpn-cli
2. Настройте AdGuard VPN CLI
-
Войдите в аккаунт
Чтобы использовать AdGuard VPN для Linux, вам понадобится аккаунт AdGuard.
Вы можете зарегистрироваться или войти на нашем сайте или в Терминале.
Чтобы зарегистрироваться или войти, введите:
adguardvpn-cli loginПримечание: если связать бинарный файл с
/usr/local/binне удалось, используйте полный путь к файлу для выполнения всех команд. Например,/opt/adguardvpn_cli/adguardvpn-cli login -
Подключитесь к VPN
Выберите локацию VPN-сервера, которая лучше всего соответствует вашим потребностям.
Как правило, чем ближе к вам сервер, тем быстрее соединение.
Чтобы посмотреть доступные локации, введите:
adguardvpn-cli list-locationsЧтобы подключиться к определённой локации, введите:
adguardvpn-cli connect -l LOCATION_NAMEЗамените LOCATION_NAME на город, страну или ISO-код локации на английском, к которой хотите подключиться.
Для быстрого подключения введите:
adguardvpn-cli connectAdGuard VPN выберет самую быструю локацию и запомнит её для будущих быстрых подключений.
-
Отрегулируйте настройки
Получите список всех доступных команд AdGuard VPN и настройте VPN-клиент под свои нужды.
Чтобы просмотреть все команды, введите:
adguardvpn-cli --help-allAdGuard VPN CLI создаст интерфейс tun0 для VPN-туннелирования.
3) Выйдите из оболочки
exit
4. Перезапустите контейнер
/container/stop adguardvpn-cli
/container/start adguardvpn-cli
После перезапуска контейнер автоматически подключится к VPN.
Проверьте, что VPN работает
1. Войдите в оболочку контейнера
/container/shell adguardvpn-cli
2. Проверьте статус VPN
adguardvpn-cli status
Больше информации о конфигурации контейнера, сети и альтернативных методах установки — в официальной документации MikroTik Container
Known issue: unable to access local router interface when the VPN is active
When the VPN is enabled, you may be unable to access your local router's web interface using its local IP address (for example, 192.168.88.1).
This happens because traffic destined for the local network is being routed through the VPN instead of your local gateway.
Solution
Add a routing rule for your local subnet before the VPN routing rule. This ensures that requests to devices on your local network are handled by the main routing table and bypass the VPN.
For example, if your local network uses the 192.168.88.0/24 subnet, add the following rule before the VPN rule:
Flags: X - DISABLED, I - INACTIVE; * - DEFAULT
0 dst-address=192.168.88.0/24 action=lookup table=main
1 ;;; VPN
src-address=192.168.88.0/24 action=lookup table=via_vpn
The same approach applies to other private network ranges, such as 10.x.x.x or 192.168.x.x. Make sure that the rule directing local traffic to the main routing table is placed before the VPN routing rule.
After applying the change, you should be able to access your router and other devices on your local network while keeping the VPN enabled.