Проверка IP LTE-интерфейса и отправка его на ddns

Автоматизация при помощи встроенного скриптового языка и RouterOS API
Vita077
Сообщения: 33
Зарегистрирован: 28 сен 2018, 12:38

Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Vita077 » 03 окт 2018, 11:43

Модем подключен к микротику через USB в режиме LTE (Hi Link). На модеме используется локальная сеть сотового оператора без доступа в интернет. Микротик подключен к проводному интернету и использует его по дефолту. Задача такая - при изменении WAN IP модема (IP локальной сотовой сети) забирать его (telnet, ssh - ?) из модема и отправлять http-запросом на сервис DDNS (сервис доменных имен - используется no-ip.com). Пока такое получается только с ppp-клиентами - но там проще. PPP-технологию не хотелось бы использовать из-за ограниченности в скорости передачи данных - как правило до 25 мегабит/сек, но NDIS (режим сетевой карты в windows) микротик официально не поддерживает, остается только RNDIS (LTE-интерфейс в RouterOS). Есть модемы в Hi Link с возможностью встраивать ddns скрипты в их операционку (как пример - Huawei E3372S), но тут, как понимаете, ситуация нестандартная - на модеме нет прямого выхода в интернет.
Последний раз редактировалось Vita077 05 окт 2018, 06:08, всего редактировалось 1 раз.

Аватара пользователя
Chupaka
Сообщения: 1452
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Chupaka » 03 окт 2018, 12:53

Т.е. у модема нет выхода в Интернет - и надо определить его внешний адрес, при этом достучаться к нему можно только по ssh или telnet? По http не получится забрать какую-нибудь маленькую страничку (не более 4 КБ)?

Vita077
Сообщения: 33
Зарегистрирован: 28 сен 2018, 12:38

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Vita077 » 03 окт 2018, 13:39

по ssh и telnet - это просто мои мысли по по поводу того каким способом можно забрать IP, я просто не владею знаниями каким способом можно ещё. Конечно, на таких модемах работает полноценный web-интерфейс. Вот пример страницы, которая по умолчанию у используемой модели находится по адресу - http://192.168.8.1/html/deviceinformation.html, такая страница, при сохранении в формате "только HTML" имеет размер 2,61kbt, что успешно укладывается в лимит 4kbt. Нужный параметр подчеркнут - http://ibn.im/VkDMRsetFL

Аватара пользователя
Chupaka
Сообщения: 1452
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Chupaka » 03 окт 2018, 13:48

/tool fetch url="http://192.168.8.1/html/deviceinformation.html" его нормально забирает, или там без авторизации не обойтись? Если там Simple Authorization - может, параметры user= и password= помогут?

Vita077
Сообщения: 33
Зарегистрирован: 28 сен 2018, 12:38

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Vita077 » 03 окт 2018, 14:04

web-интерфейс доступен без авторизации,
в терминале -
/tool fetch url="http://192.168.25.1/html/deviceinformation.html"
status: finished
downloaded: 2KiBC-z pause]
total: 2KiB
duration: 1s

Аватара пользователя
Chupaka
Сообщения: 1452
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Chupaka » 03 окт 2018, 16:18

Вот сейчас надо изучить содержимое страницы и найти, где начинается и где заканчивается этот адрес, а потом что-то вроде

Код: Выделить всё

{
    :local result [/tool fetch url="http://192.168.25.1/html/deviceinformation.html" as-value output=user];
    
    :if ($result->"status" = "finished") do={
        :local data $result->"data";
        :local opentag "AAA>";
        :local closetag "<BBB";
        :put [:pick $data ([:find $data $opentag] + [:len $opentag]) [:find $data $closetag]]
    }
}
Где AAA> - текст перед адресом, <BBB - текст после адреса

Vita077
Сообщения: 33
Зарегистрирован: 28 сен 2018, 12:38

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Vita077 » 03 окт 2018, 18:51

Судя по исходному коду, страница формируется работой ява-скриптов. Могу увидеть код скрипта "deviceinformation.js" и в нем необходимый case 'WanIPAddress'. Что делать дальше с этим, пока не понимаю... - http://file.karelia.ru/z7nzjt/

Аватара пользователя
Chupaka
Сообщения: 1452
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Chupaka » 04 окт 2018, 13:02

Я так понимаю, вас интересует файл http://192.168.25.1/config/deviceinformation/config.xml
Или http://192.168.25.1/api/monitoring/status - скорее даже это

Vita077
Сообщения: 33
Зарегистрирован: 28 сен 2018, 12:38

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Vita077 » 04 окт 2018, 13:43

http://192.168.25.1/api/monitoring/status - тут гораздо проще, при этом на странице отображается -
901 3 19 3 0 0 10.202.188.242 10.166.244.62 10.166.244.46 0 2 1 101 5 -1 0 hilink 0 0 0
10.166.244.62 и 10.166.244.46 - DNS серверы оператора, а искомое значение - 10.202.188.242 и теперь, как я понимаю скрипт будет иметь такой вид -
{
:local result [/tool fetch url="http://192.168.25.1/api/monitoring/status" as-value output=user];

:if ($result->"status" = "finished") do={
:local data $result->"data";
:local opentag "901 3 19 3 0 0 >";
:local closetag "< 10.166.244.62 10.166.244.46 0 2 1 101 5 -1 0 hilink 0 0 0";
:put [:pick $data ([:find $data $opentag] + [:len $opentag]) [:find $data $closetag]]
}
}
остается только передать это значение, который и отправит запросом на сервирс ddns. Остается разобраться как это сделать.
Открыть ссылку, правда, получилось 1 раз, после в браузерах и через /tool fetch url в микротике выскакивает ошибка -
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>125002</code>
<message></message>
</error>

Аватара пользователя
Chupaka
Сообщения: 1452
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Chupaka » 04 окт 2018, 14:37

В opentag и closetag вряд ли стОит записывать IP-адреса - они ведь могут и поменяться.

Ошибка выскакивает - а если открыть заглавную страницу?

Ответить