Отправить запрос на роутере

Хотите отправить запрос на роутере, но не знаете как? Разбираем пошагово: команды, настройки и лайфхаки для быстрой работы с вашим роутером!

Бесплатная консультация юриста

+7 (800) 301-07-30

Реклама jurik.ru

Современные маршрутизаторы — это полноценные компьютеры на базе Linux (OpenWrt‚ KeeneticOS‚ RouterOS‚ Padavan‚ Asuswrt-Merlin и др.). Умение отправить запрос на роутере, ключевой навык для системного администратора и продвинутого пользователя. Это позволяет автоматизировать перезагрузки‚ мониторить трафик‚ управлять VPN‚ настраивать DDNS и интегрировать роутер в системы «Умный дом» (Home Assistant‚ MQTT).

В этой статье мы подробно разберем способы отправки HTTP/HTTPS-запросов изнутри роутера (через SSH/Терминал) и к роутеру (управление через API)‚ опираясь на лучшие практики работы с утилитами curl и wget.


Подготовка окружения: SSH и доступ к командной строке

Прежде чем отправлять запросы‚ необходимо получить доступ к оболочке (shell) роутера.

  • OpenWrt / Keenetic / Padavan / Asuswrt: Включите SSH-доступ в веб-интерфейсе (обычно: System → Administration → SSH Access). Подключитесь: ssh root@192.168.. (IP маскирован).
  • MikroTik (RouterOS): Используйте WinBox или SSH (ssh admin@192.168..). В терминале доступен инструмент /tool fetch.
  • Стандартные прошивки (TP-Link‚ D-Link‚ Xiaomi сток): Часто требуют взлома (exploit) или установки модифицированных прошивок (OpenWrt‚ Breed) для полноценного SSH.

Важно: Всегда меняйте стандартные пароли. В примерах ниже пароли и токены заменены на *.


Основные инструменты: curl и wget

В 99% случаев на роутерах с Linux используется BusyBox‚ который содержит урезанные версии wget и curl (или полные‚ если установлены пакеты curl / wget-ssl).

Утилита wget (BusyBox / Full)

Отлично подходит для простых GET-запросов и скачивания файлов (скриптов‚ прошивок‚ конфигов).

Базовый синтаксис (из справочника сисадмина):

# Простой GET-запрос с выводом в stdout (флаг -qO-)
wget -qO- http://192.168../api/status

wget --header="Authorization: Bearer *" 
 --header="Accept: application/json" 
 -qO- https://192.168../rpc

wget -O backup.cfg "http://admin:*@192.168../cgi-bin/export.cfg"

Утилита curl (Мощный стандарт для API)

curl поддерживает все HTTP-методы (POST‚ PUT‚ DELETE‚ PATCH)‚ работу с куками‚ формами‚ JSON и множеством протоколов (DICT‚ FILE‚ FTP‚ FTPS‚ Gopher‚ HTTP‚ HTTPS‚ IMAP‚ LDAP‚ POP3‚ RTMP‚ RTSP‚ SCP‚ SFTP‚ SMTP‚ Telnet‚ TFTP).

Примеры для работы с REST API роутера:

# 1. Простой GET (проверка доступности / получение IP)
curl -s http://192.168.. # -s (silent) скрывает прогресс-бар

curl -X GET 
 -H "Accept: application/json" 
 -H "Authorization: Basic *" 
 "https://192.168../rci/show/interface"

curl -X POST 
 -d "username=admin&password=*" 
 "http://192.168../login.cgi"

curl -X POST 
 -H "Content-Type: application/json" 
 -H "Authorization: Bearer *" 
 -d '{"method": "reboot"‚ "params": {}}' 
 "https://192.168../rpc"

curl -c cookies.txt -X POST -d "user=admin&pass=*" http://192.168../login
curl -b cookies.txt "http://192.168../status_page"

curl -k -X GET "https://192.168.."

Специфика популярных платформ

OpenWrt (UBUS / RPC / LUCI API)

В OpenWt основной внутренний IPC — UBUS. Для внешнего доступа используется rpcd (JSON-RPC 2.0 над HTTP).

  1. Авторизация (получение сессии):
    curl -k -X POST 
     -H "Content-Type: application/json" 
     -d '{"jsonrpc":"2.0"‚"id":1‚"method":"call"‚"params":["00000000000000000000000000000000"‚"session"‚"login"‚{"username":"root"‚"password":"*"}]}' 
     https://192.168../ubus
  2. Вызов метода (например‚ перезагрузка WAN): Используйте полученный ubus_rpc_session в заголовке Cookie или параметре.

Keenetic (KeeneticOS / RCI ⎯ RESTful Control Interface)

Один из самых удобных API. Доступен по адресу /rci/.

# Показать интерфейсы
curl -k -u "admin:*" "https://192.168../rci/show/interface"

curl -k -u "admin:*" -X POST "https://192.168../rci/system/reboot"

curl -k -u "admin:*" "https://192.168../rci/show/ip/hotspot" | grep -oE '([0-9]{1‚3}.){3}[0-9]{1‚3}'

MikroTik (RouterOS REST API)

Начиная с v7‚ доступен полноценный REST API (/rest/).

# Авторизация (Basic Auth)
curl -k -u "admin:*" "https://192.168../rest/interface"

curl -k -u "admin:*" -X PUT 
 -H "Content-Type: application/json" 
 -d '{"disabled": false}' 
 "https://192.168../rest/interface/ether1"

/tool fetch url="https://api.ipify.org" mode=https dst-path=myip.txt

Asuswrt-Merlin / Padavan (nvram / httpd)

Часто управление идет через эмуляцию веб-форм или специальные .asp / .cgi скрипты.

# Пример перезагрузки (Asus)
curl -X POST -d "action_mode=reboot¤t_page=System_Restart.asp&next_page=System_Restart.asp" 

 -u "admin:*" "http://192.168../apply.cgi"

nvram get wan0_ipaddr

Типовые сценарии автоматизации (Кейсы)

Динамический DNS (DDNS) собственной реализацией

Если провайдер не дает белый IP‚ или нужно обновлять запись на своем DNS-сервере.

#!/bin/sh

WAN_IP=$(curl -s -k --interface pppoe-wan https://api.ipify.org) # Укажите свой WAN интерфейс
LAST_IP=$(cat /tmp/last_ip 2>/dev/null)

if [ "$WAN_IP" != "$LAST_IP" ] && [ -n "$WAN_IP" ]; then
 echo $WAN_IP > /tmp/last_ip
 # Обновление через API Cloudflare / Yandex / Selectel / свой сервер
 curl -X PUT "https://api.example.com/dns/update" 
 -H "Authorization: Bearer " 
 -H "Content-Type: application/json" 
 -d "{"domain":"router..ru"‚"ip":"$WAN_IP"}"
 logger "DDNS updated to $WAN_IP"
fi

Мониторинг и алертинг в Telegram / MQTT

# Отправка сообщения в Telegram бота при подключении нового DHCP клиента (hotplug script)

if [ "$ACTION" = "add" ]; then
 MSG="🔔 Новый клиент: $HOSTNAME ($IP) MAC: $MAC"
 curl -s -X POST "https://api.telegram.org/bot/sendMessage" 
 -d chat_id= 
 -d text="$MSG" fi

Управление VPN (WireGuard / OpenVPN) через API

Включение/выключение пиров WireGuard на Keenetic/OpenWrt без перезагрузки всего туннеля;

# Keenetic: Отключить пира WireGuard
curl -k -u "admin:*" -X PATCH 
 -H "Content-Type: application/json" 
 -d '{"enabled": false}' 
 "https://192.168../rci/wireguard/peer/*"

Работа с REST API из скриптов на Python (Entware / Optware)

Если на роутере установлен Entware (opkg)‚ доступен полноценный Python 3. Это удобнее парсить JSON‚ чем jq или awk в shell.

Основано на гайде по pycurl 2023/2025:

import pycurl
import certifi
from io import BytesIO
import json

buffer = BytesIO
c = pycurl.Curl
c.setopt(c.URL‚ 'https://192.168../rci/show/interface')
c.setopt(c.USERPWD‚ 'admin:*')
c.setopt(c.CAINFO‚ certifi.where) # Проверка сертификатов
c.setopt(c.WRITEDATA‚ buffer)
c.setopt(c.SSL_VERIFYPEER‚ 0) # 0 = игнорировать самоподписанные (как -k в curl)
c.setopt(c.SSL_VERIFYHOST‚ 0)
c.perform
c.close
body = buffer.getvalue.decode('utf-8')
data = json.loads(body)
print(json.dumps(data‚ indent=2))

Безопасность и лучшие практики

  • Никогда не передавайте пароли в URL (видно в ps aux и логах прокси). Используйте -u user:pass (curl) или --http-user/--http-password (wget)‚ лучше — токены/ключи API.
  • Используйте HTTPS (-k / —no-check-certificate только для доверенной локальной сети). В интернете всегда проверяйте сертификаты.
  • Ограничьте доступ к API через Firewall (Input/Access Control): только IP управления (VPN‚ LAN)‚ закрыть WAN.
  • Храните секреты в файлах с правами 600 (chmod 600 /opt/scripts/secrets.conf) и подключайте source /opt/scripts/secrets.conf.
  • Логирование: Пишите важные действия через logger -t "MyScript" "Message" — попадут в logread / dmesg / Syslog сервер.

Отладка и решение проблем

Проблема Диагностика / Решение
curl: (6) Could not resolve host Проблема с DNS на роутере. Проверьте /etc/resolv.conf или укажите DNS явно: curl --dns-servers 1.1.1.1 ....
curl: (60) SSL certificate problem Самоподписанный сертификат роутера. Добавьте флаг -k (—insecure) или установите CA-сертификаты (opkg install ca-bundle ca-certificates).
wget: not an http or ftp url BusyBox wget не поддерживает HTTPS. Установите полный wget-ssl или curl (opkg install curl).
401 Unauthorized / 403 Forbidden Неверный логин/пароль‚ токен просрочен‚ или IP не в белом списке API. Проверьте заголовки: curl -v ....
Connection refused / Timeout Служба API не запущена (rpcd‚ lighttpd‚ nginx) или блокирует Firewall (Input chain). Проверьте порт: netstat -tulpn | grep 80.

Режим verbose (подробный вывод) — лучший друг:

curl -v -k -u "admin:*" "https://192.168../rci/"


Умение отправить запрос на роутере открывает возможности‚ недоступные через веб-интерфейс: от точечного управления сервисами до интеграции в корпоративные системы мониторинга (Zabbix‚ Prometheus‚ Grafana) и «Умный дом»;

Ключевые выводы:

  1. Базовый набор, SSH + curl/wget (установите полные версии через opkg/entware‚ если стоит BusyBox).
  2. Изучите API вашей прошивки (RCI для Keenetic‚ UBUS/JSON-RPC для OpenWrt‚ REST для MikroTik v7+).
  3. Автоматизируйте через cron‚ hotplug-скрипты или systemd/timers (на современных ядрах).
  4. Следите за безопасностью: HTTPS‚ токены‚ Firewall‚ права на файлы.

Начните с простого: curl -k https://192.168.. и постепенно переходите к сложным POST/PUT запросам с JSON-телами для управления конфигурацией инфраструктуры.


Статья подготовлена на основе актуальных практик администрирования сетевого оборудования (OpenWrt‚ KeeneticOS‚ RouterOS‚ Asuswrt-Merlin) и документации утилит curl/wget (данные на 2024-2026 гг.).