Страница 2 из 2

Re: Address list в статические маршруты

Добавлено: 09 янв 2025, 19:46
Erik_U
У вас в идее процедура на несколько шагов растянута.
В результате маршрут будет меняться после первичного установления соединения.
Что приведет к его обрыву и тормозам.
Не просто же так в мангле ПРЕроутинг.
А всю цепочку придуманных обновлений листов, таблиц и прочего заставить выполнить до отправления первого пакета после получения адреса от ДНС у вас никогда не получится.

Корректируйте задачу под возможности ROS.

Re: Address list в статические маршруты

Добавлено: 13 фев 2025, 23:30
koprodig456
Задачи в скорости нет.
Условный скрипт будет выполняться раз в сутки . Удаляя предыдущие роуты по фильтру.
Если на пальцах
Поступила задача всем иметь возможность ходить на support.dell.com к примеру прошивки Биоса качать. Заранее за сутки все что связано с суппортом дела пихается в адрес лист. Там это все резолвится. Спустя какое то время это добавляется в статические маршруты и редистрибьютится по оспф на все маршрутизаторы . На следующий день сотрудники всех филиалов ходят на делл через впс, который не блокируется у делла по геоайпи.

Re: Address list в статические маршруты

Добавлено: 16 фев 2025, 09:01
Erik_U
По моему, эта задача больше для BGP подходит.
Этот механизм умеет адрес-листами оперировать.

Re: Address list в статические маршруты

Добавлено: 16 фев 2025, 12:10
-13-
koprodig456 писал(а): 13 фев 2025, 23:30 Задачи в скорости нет.
Условный скрипт будет выполняться раз в сутки . Удаляя предыдущие роуты по фильтру.
Если на пальцах
Поступила задача всем иметь возможность ходить на support.dell.com к примеру прошивки Биоса качать. Заранее за сутки все что связано с суппортом дела пихается в адрес лист. Там это все резолвится. Спустя какое то время это добавляется в статические маршруты и редистрибьютится по оспф на все маршрутизаторы . На следующий день сотрудники всех филиалов ходят на делл через впс, который не блокируется у делла по геоайпи.
вот так можно, и не нужно ничего усложнять скриптами
 

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

/ip dns static
add address-list="тут свой addr list который ходит по маркировкам" comment=dell forward-to=dns.quad9.net regexp=".*\\.dell\\.com" type=FWD

Re: Address list в статические маршруты

Добавлено: 17 фев 2025, 11:15
koprodig456
-13- писал(а): 16 фев 2025, 12:10 вот так можно
А как это размазать потом по оспф?
мангл тот ж не подошел по этой причине, хотя при мангле и адрес листах все четко было и как надо, но в рамках одного маршрутизатора

Re: Address list в статические маршруты

Добавлено: 17 фев 2025, 12:01
-13-
koprodig456 писал(а): 17 фев 2025, 11:15
-13- писал(а): 16 фев 2025, 12:10 вот так можно
А как это размазать потом по оспф?
мангл тот ж не подошел по этой причине, хотя при мангле и адрес листах все четко было и как надо, но в рамках одного маршрутизатора
как я понял, задача пускать определенный трафик через определенный маршрут (маршрут до роутера на котором определенные настройки)?
mangle и addr list (firewall) решают задачу на ура.
с тем же dell и intel, нужно чтоб DNS запросы были в той же геолокации, использую 9.9.9.9, который заворачиваю в тот же туннель.

Re: Address list в статические маршруты

Добавлено: 17 фев 2025, 17:38
koprodig456
условие задачи масштаб
для начала оспф, так как на инфре уже бегает
бгп внутри пока избыточно, но если это поможет, то будет бгп
мангл только для домохозяйки с одним маршрутизатором в такой ситуации

Re: Address list в статические маршруты

Добавлено: 20 июн 2025, 15:51
koprodig456
Добрый день ! По итогу получилось
Скрипт берет данные из адрес листов
Шаг первый добавляем в адрес лист vpn допустим
Изображение
Соответственно получаем там же ip адреса
Изображение
Скрипт на старте удаляет ранее добавленные маршруты с комментом vpn
Изображение
После формирует два файла bkp/route1.txt bkp/route2.txt с ip адресами и ip адресами с маской
после оттуда добавляет в маршруты с комментом vpn
Изображение
Дальше соответвенно редистрибьюция статики по оспф на соседей
Изображение
по выполнению шлет в телеграм результат

в скрипте в шапке поменять
gateway \"1.2.3.4\"\r\ на свой
bottoken \"1234567890:aaabbbcccdddeeeaaabbbcccdddeeeaaabb\"\r\ токен бота
chatid \"1234567890123\"\r\ чат айди бота
скрипт добавляет в шедулер задачу и сам скрипт
 
/system scheduler add comment="routeadd" disabled=no interval=1d name="routeadd" on-event="/system script run routeadd" policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon start-date=2020-12-18 start-time=13:00:00
/system script add comment="routeadd" dont-require-permissions=no name=routeadd owner=root policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":local gateway \"1.2.3.4\"\r\
\n:local bottoken \"1234567890:aaabbbcccdddeeeaaabbbcccdddeeeaaabb\"\r\
\n:local chatid \"1234567890123\"\r\
\n\r\
\n/ip route remove [find comment=vpn]\r\
\n:local f [/file find name=\"bkp/route1.txt\"]\r\
\n:if (\$f != \"nothing\") do={\r\
\n /file remove \$f\r\
\n :log info message=\"\D1\F2\E0\F0\FB\E9 \F4\E0\E9\EB bkp/route1.txt \F3\E4\E0\EB\E5\ED\"\r\
\n}\r\
\n:global addrs [:toarray \"\"]\r\
\n:log info message=\"\CD\E0\F7\E8\ED\E0\E5\EC \EE\E1\F0\E0\E1\EE\F2\EA\F3 \F1\EF\E8\F1\EA\E0 VPN-\E0\E4\F0\E5\F1\EE\E2\"\r\
\n:foreach id in=[/ip firewall address-list find where dynamic list=vpn] do={\r\
\n :local addr [/ip firewall address-list get \$id address]\r\
\n :log info message=(\"\CE\E1\F0\E0\E1\EE\F2\EA\E0 \E0\E4\F0\E5\F1\E0: \" . \$addr)\r\
\n :local allowedChars \"0123456789./\"\r\
\n :local isIp true\r\
\n :for i from=0 to=([:len \$addr] - 1) do={\r\
\n :local c [:pick \$addr \$i (\$i + 1)]\r\
\n :if ([:find \$allowedChars \$c] = -1) do={\r\
\n :set isIp false\r\
\n }\r\
\n }\r\
\n :if (\$isIp) do={\r\
\n :set addrs (\$addrs, \$addr)\r\
\n :log info message=(\"\C4\EE\E1\E0\E2\EB\E5\ED IP: \" . \$addr)\r\
\n }\r\
\n}\r\
\n:local content \"\"\r\
\n:foreach ip in=\$addrs do={\r\
\n :set content (\$content . \$ip . \"\\r\\n\")\r\
\n}\r\
\n:log info message=(\"\CD\E0\E9\E4\E5\ED\EE \E2\E0\EB\E8\E4\ED\FB\F5 IP-\E0\E4\F0\E5\F1\EE\E2: \" . [:len \$addrs])\r\
\n/file add name=\"bkp/route1.txt\" contents=\$content\r\
\n:log info message=\"\D1\EE\E4\E5\F0\E6\E8\EC\EE\E5 \F4\E0\E9\EB\E0 \E7\E0\EF\E8\F1\E0\ED\EE\"\r\
\n:local mask \"/32\"\r\
\n:local f [/file find name=\"bkp/route2.txt\"]\r\
\n:if (\$f != \"\") do={\r\
\n /file remove \$f\r\
\n :log info message=\"\D1\F2\E0\F0\FB\E9 \F4\E0\E9\EB bkp/route2.txt \F3\E4\E0\EB\E5\ED\"\r\
\n}\r\
\n:local content [/file get bkp/route1.txt contents]\r\
\n:log info message=\"\CD\E0\F7\E8\ED\E0\E5\EC \EE\E1\F0\E0\E1\EE\F2\EA\F3 IP-\E0\E4\F0\E5\F1\EE\E2...\"\r\
\n:local lines [:toarray \"\"]\r\
\n:local pos 0\r\
\n:local len [:len \$content]\r\
\n:while (\$pos < \$len) do={\r\
\n :local nextPos [:find \$content \"\\n\" \$pos]\r\
\n :if (\$nextPos = -1) do={\r\
\n :set nextPos \$len\r\
\n }\r\
\n :local line [:pick \$content \$pos \$nextPos]\r\
\n :if ([:len \$line] > 0) do={\r\
\n :if ([:pick \$line ([:len \$line] - 1) [:len \$line]] = \"\\r\") do={\r\
\n :set line [:pick \$line 0 ([:len \$line] - 1)]\r\
\n }\r\
\n }\r\
\n :set pos (\$nextPos + 1)\r\
\n :set lines (\$lines, \$line)\r\
\n}\r\
\n:local result \"\"\r\
\n:foreach line in=\$lines do={\r\
\n :local lenLine [:len \$line]\r\
\n :if (\$lenLine >= 3) do={\r\
\n :local suffix [:pick \$line (\$lenLine - 3) \$lenLine]\r\
\n :if (\$suffix != \$mask) do={\r\
\n :set line (\$line . \$mask)\r\
\n }\r\
\n } else={\r\
\n :set line (\$line . \$mask)\r\
\n }\r\
\n :set result (\$result . \$line . \"\\r\\n\")\r\
\n :log info message=(\"\CE\E1\F0\E0\E1\EE\F2\E0\ED IP: \" . \$line)\r\
\n}\r\
\n/file add name=\"bkp/route2.txt\" contents=\$result\r\
\n:log info message=\"\CE\E1\F0\E0\E1\EE\F2\EA\E0 \E7\E0\E2\E5\F0\F8\E5\ED\E0\"\r\
\n:local content [/file get bkp/route2.txt contents]\r\
\n:local lines [:toarray \"\"]\r\
\n:local pos 0\r\
\n:local len [:len \$content]\r\
\n:while (\$pos < \$len) do={\r\
\n :local nextPos [:find \$content \"\\n\" \$pos]\r\
\n :if (\$nextPos = -1) do={\r\
\n :set nextPos \$len\r\
\n }\r\
\n :local line [:pick \$content \$pos \$nextPos]\r\
\n :if ([:len \$line] > 0) do={\r\
\n :if ([:pick \$line ([:len \$line] - 1) [:len \$line]] = \"\\r\") do={\r\
\n :set line [:pick \$line 0 ([:len \$line] - 1)]\r\
\n }\r\
\n }\r\
\n :set pos (\$nextPos + 1)\r\
\n :if ([:len \$line] > 0) do={\r\
\n :local exists [/ip route find dst-address=\$line gateway=\$gateway]\r\
\n :if (\$exists = \"\") do={\r\
\n /ip route add dst-address=\$line gateway=\$gateway comment=\"vpn\"\r\
\n :log info message=(\"\C4\EE\E1\E0\E2\EB\E5\ED \EC\E0\F0\F8\F0\F3\F2: \" . \$line . \" \F7\E5\F0\E5\E7 \" . \$gateway)\r\
\n :local url (\"https://api.telegram.org/bot\" . \$bottoken . \"/sendMessage\?chat_id=-\" . \$chatid . \"&text=route add \" . \$line . \" via \" . \$gateway)\r\
\n /tool fetch url=\$url keep-result=no\r\
\n } else={\r\
\n :log info message=(\"\CC\E0\F0\F8\F0\F3\F2 \F3\E6\E5 \F1\F3\F9\E5\F1\F2\E2\F3\E5\F2: \" . \$line)\r\
\n }\r\
\n }\r\
\n}"
 
Изображение

Изображение

Re: Address list в статические маршруты

Добавлено: 20 июн 2025, 17:33
koprodig456
Изображение

Изображение