Привет, я пытаюсь использовать облачный сервис IP, но иногда он выдает ошибку: «DDNS сервер получил запрос с xx.xx.xxx.xxx, но ваш локальный IP был yy.yy.yyy.yyy». Дома мой Mikrotik использует pppoe-client на WAN напрямую от провайдера (стандартный договор для домашнего использования, динамический IP). Иногда я замечаю, что динамический IP в списке IP-адресов (автоматически назначенный через pppoe-client) отличается от того IP, который я вижу, например, на сайте www.whatsmyip.org. Но иногда эти два IP совпадают! Особых настроек на Mikrotik нет, только правило masquerade на pppoe. Что можно сделать? Спасибо!
Как написать скрипт, который бы сравнивал динамический адрес на pppoe с диапазоном адресов 172.16.0.0/16 (потому что я заметил, что когда провайдер выдает мне NAT-публичный IP, он всегда из этого класса 172.16.xx.xxx/32). Обычно после 3 или 4 раз отключения и повторного подключения pppoe-клиента провайдер выдает мне настоящий публичный IP. Заранее спасибо!
Ты прав, может случиться так, что публичные IP временно закончились, и тогда окажусь в бесконечном цикле с pppoe-клиентом, который постоянно отключается и подключается заново. Пока что хочу проверить, получится ли с помощью простого скрипта сделать такую проверку, а потом добавлю максимальное число попыток, чтобы обойти эту возможную проблему…
Ух ты! Прошел месяц и несколько дней… Чтобы проверить, находится ли ваш IP, например 172.16.6.6/32, внутри 172.16.0.0/12, используйте: (172.16.6.6/32 in 172.16.0.0/12). Вернёт true, если ваш IP входит в этот диапазон.
Я попробовал вот это: :local newIP [/ip address get [find interface="pppoe-wan"] address]; :if ($newIP in 172.16.0.0/16) do={ :log info "NAT isp"; } но ничего не произошло… Может, кто поможет? У меня нет опыта в написании скриптов…
Mi sapresti dire se più o meno ci siamo oppure sono totalmente fuori strada? Grazie
Это /12, а не /16, и не забудь про кавычки: :if ([/ip address get [find interface="pppoe-wan"] value-name=address] in 172.16.0.0/12) do={ :log info message="Адрес, предоставленный провайдером, находится внутри 172.16.0.0/12"; };
Я пробовал, но в логе ничего не появляется, может быть, это баг версии 6.17? Заметил, что команда «/ip address get [find interface="pppoe-wan"] value-name=address» возвращает правильный адрес, но с маской сети (/32), которую, наверное, нужно убрать, чтобы оператор «in» мог корректно выполнить проверку?
:global ppoeclientaddr value=[/ip address get [find interface="pppoe-wan"] value-name=address]; :set $ppoeclientaddr value=([[:parse ":return $ppoeclientaddr"]]); :if ($ppoeclientaddr in 172.16.0.0/12) do={ :log info message="Адрес, предоставленный провайдером, находится внутри сети 172.16.0.0/12"; }; или :if (([[:parse (":return ".[/ip address get [find interface="pppoe-wan"] value-name=address]]]) in 172.16.0.0/12) do={ :log info message="Адрес, предоставленный провайдером, находится внутри сети 172.16.0.0/12"; };