Перейти к основному содержанию

Как установить 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
note

Замените IP на адрес вашего роутера

2. Проверьте, установлен ли пакет контейнера

/system/package/print

Найдите пакет container в списке. Если его там нет, установите его:

Установка пакета контейнера

  1. Скачайте файл .npk для вашей архитектуры и версии ОС с официального сайта

  2. Загрузите файл .npk на роутер:

    scp container-7.X-platform.npk admin@192.168.1.1:

    Замените IP на адрес вашего роутера.

  3. Убедитесь, что файл загружен:

    /file/print

    Вы должны увидеть файл container-X.XX.npk.

  4. Перезагрузите роутер:

    /system/reboot

    После перезагрузки файл .npk исчезнет. Это поведение ожидаемо. Оно означает, что пакет был успешно установлен.

  5. Проверьте:

    /system/package/print

    Пакет container должен появиться в списке.

3) Включите режим Container

Включите режим контейнера и следуйте указаниям команды. Для подтверждения изменения режима работы устройства потребуется выполнить холодную перезагрузку (физически отключить и снова подключить питание).

/system/device-mode/update container=yes
warning

Не закрывайте терминал и не прерывайте выполнение команды до отключения питания — это приведет к отмене операции.

4. Убедитесь, что режим контейнера активен

/system/device-mode/print

Должно отобразиться container: yes

5. Настройте сеть для контейнера

Как это работает

В этой настройке:

  • Контейнер выступает в качестве VPN-шлюза
  • RouterOS направляет выбранный трафик через отдельную таблицу маршрутизации (via_vpn)
  • Трафик перенаправляется в контейнер, а затем туннелируется через AdGuard VPN

Поток:

LAN → RouterOS → Правило маршрутизации → Контейнер → VPN → Интернет

warning

Эта настройка направляет весь 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
note

Замените ether1 на имя вашего WAN-интерфейса (например, ether3, ether5). Чтобы найти его:

  1. Выполните /ip/route/print и найдите маршрут по умолчанию (0.0.0.0/0, routing-table=main) — запишите IP-адрес шлюза
  2. В том же выводе найдите подключённый маршрут ('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
note

Замените 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
note

Замените 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 Hub
  • interface=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

  1. Войдите в аккаунт

    Чтобы использовать AdGuard VPN для Linux, вам понадобится аккаунт AdGuard.

    Вы можете зарегистрироваться или войти на нашем сайте или в Терминале.

    Чтобы зарегистрироваться или войти, введите:

    adguardvpn-cli login

    Примечание: если связать бинарный файл с /usr/local/bin не удалось, используйте полный путь к файлу для выполнения всех команд. Например, /opt/adguardvpn_cli/adguardvpn-cli login

  2. Подключитесь к VPN

    Выберите локацию VPN-сервера, которая лучше всего соответствует вашим потребностям.

    Как правило, чем ближе к вам сервер, тем быстрее соединение.

    Чтобы посмотреть доступные локации, введите:

    adguardvpn-cli list-locations

    Чтобы подключиться к определённой локации, введите:

    adguardvpn-cli connect -l LOCATION_NAME

    Замените LOCATION_NAME на город, страну или ISO-код локации на английском, к которой хотите подключиться.

    Для быстрого подключения введите:

    adguardvpn-cli connect

    AdGuard VPN выберет самую быструю локацию и запомнит её для будущих быстрых подключений.

  3. Отрегулируйте настройки

    Получите список всех доступных команд AdGuard VPN и настройте VPN-клиент под свои нужды.

    Чтобы просмотреть все команды, введите:

    adguardvpn-cli --help-all

    AdGuard 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
note

Больше информации о конфигурации контейнера, сети и альтернативных методах установки — в официальной документации MikroTik Container