From aa368f62993a3ece1cb274b655772d516c11ab6a Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 12 Jun 2026 13:28:27 +0000 Subject: [PATCH] Fix fetch failure: add check-certificate=no, improve troubleshooting docs --- routeros/cloudflare-ip-updater.rsc | 6 ++++-- routeros/docs/cloudflare-ip-updater-obsidian.md | 10 ++++++++-- routeros/docs/telegram-ip-updater-obsidian.md | 10 ++++++++-- routeros/telegram-ip-updater.rsc | 6 ++++-- 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/routeros/cloudflare-ip-updater.rsc b/routeros/cloudflare-ip-updater.rsc index b3d7fbb..e407cac 100644 --- a/routeros/cloudflare-ip-updater.rsc +++ b/routeros/cloudflare-ip-updater.rsc @@ -22,12 +22,14 @@ # это убирает создание/удаление файла, ожидание загрузки и проверки файла. :local content "" :do { - :local result [/tool fetch url=$url output=user as-value] + # check-certificate=no — список публичный, а на роутере может не быть + # импортированного CA-хранилища, из-за чего HTTPS-fetch падает на TLS. + :local result [/tool fetch url=$url check-certificate=no output=user as-value] :if (($result->"status") = "finished") do={ :set content ($result->"data") } } on-error={ - :log error "CloudFlare IP updater: Fetch failed" + :log error "CloudFlare IP updater: Fetch failed (check DNS / internet / TLS)" :error "Fetch failed" } diff --git a/routeros/docs/cloudflare-ip-updater-obsidian.md b/routeros/docs/cloudflare-ip-updater-obsidian.md index b2e8f22..19579f5 100644 --- a/routeros/docs/cloudflare-ip-updater-obsidian.md +++ b/routeros/docs/cloudflare-ip-updater-obsidian.md @@ -107,8 +107,14 @@ add chain=forward src-address-list=CF action=accept comment="allow Cloudflare" ## Возможные проблемы -> [!bug]- Fetch ругается на сертификат -> На старых сборках добавь `check-certificate=no` в команду `fetch` внутри скрипта. +> [!bug]- CloudFlare IP updater: Fetch failed +> Скрипт уже использует `check-certificate=no`, поэтому TLS обычно не виноват. Проверь причину вручную: +> ```routeros +> /tool fetch url="https://www.cloudflare.com/ips-v4/" output=user as-value +> ``` +> - `could not resolve` → нет DNS: `/ip dns set servers=1.1.1.1,8.8.8.8` +> - `host unreachable` / `timeout` → у роутера нет маршрута/интернета +> - `tls` / `certificate` → импортируй CA или оставь `check-certificate=no` > [!bug]- `as-value` не поддерживается > RouterOS до 6.43 не умеет `fetch output=user as-value`. Нужна версия 6.43+ либо файловый вариант скрипта. diff --git a/routeros/docs/telegram-ip-updater-obsidian.md b/routeros/docs/telegram-ip-updater-obsidian.md index e44456e..9c0b3a0 100644 --- a/routeros/docs/telegram-ip-updater-obsidian.md +++ b/routeros/docs/telegram-ip-updater-obsidian.md @@ -107,8 +107,14 @@ add chain=forward dst-address-list=TG action=accept comment="allow Telegram" ## Возможные проблемы -> [!bug]- Fetch ругается на сертификат -> На старых сборках добавь `check-certificate=no` в команду `fetch` внутри скрипта. +> [!bug]- Telegram IP updater: Fetch failed +> Скрипт уже использует `check-certificate=no`, поэтому TLS обычно не виноват. Проверь причину вручную: +> ```routeros +> /tool fetch url="https://core.telegram.org/resources/cidr.txt" output=user as-value +> ``` +> - `could not resolve` → нет DNS: `/ip dns set servers=1.1.1.1,8.8.8.8` +> - `host unreachable` / `timeout` → у роутера нет маршрута/интернета +> - `tls` / `certificate` → импортируй CA или оставь `check-certificate=no` > [!bug]- `as-value` не поддерживается > RouterOS до 6.43 не умеет `fetch output=user as-value`. Нужна версия 6.43+ либо файловый вариант скрипта. diff --git a/routeros/telegram-ip-updater.rsc b/routeros/telegram-ip-updater.rsc index 0e4c62e..5ef044b 100644 --- a/routeros/telegram-ip-updater.rsc +++ b/routeros/telegram-ip-updater.rsc @@ -18,12 +18,14 @@ # это убирает создание/удаление файла, ожидание загрузки и проверки файла. :local content "" :do { - :local result [/tool fetch url=$url output=user as-value] + # check-certificate=no — список публичный, а на роутере может не быть + # импортированного CA-хранилища, из-за чего HTTPS-fetch падает на TLS. + :local result [/tool fetch url=$url check-certificate=no output=user as-value] :if (($result->"status") = "finished") do={ :set content ($result->"data") } } on-error={ - :log error "Telegram IP updater: Fetch failed" + :log error "Telegram IP updater: Fetch failed (check DNS / internet / TLS)" :error "Fetch failed" }