p9160ff Posted June 23 Posted June 23 (edited) Телеграм публикует список подсетей на которых он работает. https://core.telegram.org/resources/cidr.txt Если на маршрутизаторе имеется VPN тоннель за границу, то можно добавить маршруты руками, но это не наш метод ) В интернете полно скриптов для ручного запуска. Я немного автоматизировал данный процесс. Скрипт по расписанию качает актуальный список, парсит его и добавляет маршруты IPv4, т.к. IPv6 я не использую. Подробнее выложил в телеге https://t.me/xren_vsyakaya/187 Цитата # Скрипт для загрузки и добавления маршрутов Telegram # Автоматически обновляет список IPv4-сетей Telegram :local url "https://core.telegram.org/resources/cidr.txt" :local fileName "telegram-cidr.txt" :local routeComment "Telega" :local routeGateway "Здесь укажите ваш маршрут, например WG-01" :log info "=== Загрузка списка сетей Telegram ===" # Загрузка файла со списком сетей /tool fetch url=$url mode=https dst-path=$fileName keep-result=yes check-certificate=no # Проверка, что файл загрузился :if ([:len [/file find name=$fileName]] > 0) do={ :local content [/file get $fileName contents] :local line "" :local count 0 :log info "Файл загружен, размер: $[/file get $fileName size] байт" # Удаление старых маршрутов с комментарием "Telega" /ip route :foreach r in=[find where comment=$routeComment] do={ remove $r } # Парсинг файла посимвольно :for i from=0 to=([:len $content] - 1) do={ :local ch [:pick $content $i ($i + 1)] # Пропускаем символ возврата каретки (\r) :if ($ch = "\r") do={ # Ничего не делаем } else={ # Если встретили перевод строки (\n) - обрабатываем накопленную строку :if ($ch = "\n") do={ :if ([:len $line] > 0) do={ # Проверяем, что это IPv4 (содержит . и /) :if (([:find $line "."] != -1) && ([:find $line "/"] != -1)&&([:find $line "::/"] <=0) ) do={ :log info "Добавляю $line" add dst-address=$line gateway=$routeGateway comment=$routeComment :set count ($count + 1) } else={ :log info "Исключаю IPv6 - $line***" } } :set line "" } else={ # Накопление символов для текущей строки :set line ($line . $ch) } } } # Обработка последней строки (если файл не заканчивается на \n) :if ([:len $line] > 0) do={ :if (([:find $line "."] != -1) && ([:find $line "/"] != -1)&&([:find $line "::/"] <=0) ) do={ add dst-address=$line gateway=$routeGateway comment=$routeComment :set count ($count + 1) } } # Удаление временного файла /file remove $fileName :log info "=== Добавлено маршрутов: $count ===" } else={ :log error "Не удалось загрузить файл $fileName" } Edited June 23 by p9160ff Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.