Форум OlegON > Компьютеры и Программное обеспечение > Сеть > Сетевое оборудование > MikroTik

Как пополнять route по доменному имени : MikroTik

27.09.2022 21:13


Контакты Поиск
15.09.2022 20:15
OlegON
 
Поскольку я пользуюсь BGP и роутингом для перенаправления в VPN нужных адресов, через некоторое время встает вопрос, как же этот список пополнять самостоятельно, поскольку не все нужные домены бывают (или не сразу) в списке.
Соответственно, добрался это автоматизировать. Во-первых, пример списка
назовем файл to_vpn.lst
Код:
play.google.com
lh2.googleusercontent.com
lh3.googleusercontent.com
lh4.googleusercontent.com
lh5.googleusercontent.com
lh6.googleusercontent.com
yt2.ggpht.com
yt3.ggpht.com
news.google.com
api.twitter.com
twitter.com
probe.twitter.com
twimg.com
video.twimg.com
pbs.twimg.com
api-stream.twitter.com
abs.twimg.com
abs-0.twimg.com
mobile.twitter.com
t.co
stats.g.doubleclick.net
далее скрипт, который все адреса домена перешлет в Mikrotik, обратите внимание, что DNS-сервер той машины, где вы его прогоняете, должен соответствовать DNS-серверу клиентов, которые потом будут пользоваться созданным рутингом. Интерфейс и таблицу рутинга поменяйте на свои. Понятное дело, что надо настроить вход по ключу от того пользователя, от какого будете запускать скрипт. Описывал тут.
Назовем файл to_mikrotik.sh
Код:
#!/bin/bash
host -4 $1 | grep "address" | grep -v 'IPv6' | cut -f4 -d' ' | while read line
do
ssh юзер@микротик "/ip route add comment=auto_vpn disabled=no distance=20 dst-address=$line/32 gateway=vpn routing-table=main suppress-hw-offload=no"</dev/null
done
и, наконец, общий скрипт, который пробежит по первому списку и отдаст его предыдущему скрипту, а, чтобы не завалялось что-то слишком старое, старые рутинги с соответствующим комментарием будут удалены (старые соединения будут жить по старому). Не забывайте про относительные пути (надо перейти сначала в каталог, где все это свалено), а когда запускать - решаете сами.
Назовем файл to_vpn.sh
Код:
#!/bin/bash
ssh юзер@микротик "/ip route remove [find comment=auto_vpn]" </dev/null
cat to_vpn.lst | while read line
do
./to_mikrotik.sh $line
done
Часовой пояс GMT +3, время: 21:13.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.