Re: Как заставить ping и туннели отслеживать изменение адрес
Добавлено: 30 май 2014, 12:11
вот мой результат viewtopic.php?f=14&t=5443&p=25842#p25842
Форум поддержи и обмена опытом пользователей оборудования RouterBOARD и операционной системы RouterOS Латвийского производителя MikroTik
https://forummikrotik.ru/
achekalin писал(а):Я так обошелся:Код: Выделить всё
:local oldip
:local newip
:local tunnelname
:local tunname
:local address
:foreach i in=[/interface ovpn-client find] do={
:set tunnelname [/interface ovpn-client get $i name]
:set tunname [:pick [/interface ovpn-client get $i name] 0 5]
:if ($tunname = "ovpn-") do={
:set address [/interface ovpn-client get $i connect-to]
:set oldip [/interface ovpn-client get $i comment]
:set newip [:resolve $address]
:if ($newip != $oldip) do={
/interface ovpn-client disable $i
/interface ovpn-client set $i comment=$newip
:log warning "Tunnel $tunnelname endpoint $address changed from $oldip to $newip";
/interface ovpn-client enable $i
}
}
}
Просто OVPN-туннелей хватает, и проще в комментарии к туннелю хранить тот IP-адрес, в который ресолвился хост, указанный в свойствах туннеля, при прошлой проверке. Туннели, в названии которые в начале нет символов "ovpn-", не трогаем, так можно что-то защитить от обработки этим скриптом (мало ли понадобится). Кстати, disable/enable туннелю делать не обязательно, даже замена комментария заставляет его переподключиться (что было крайне удивительно), но я вставил строки про disable/enable, вдруг при обновлении прошивки изменение комментария перестанет передергивать туннель.
wolf_ktl писал(а):Есть один косяк обновление DNS имен происходит очень долго.. пока сервер отправит команду на обновление DNS проходит 5 минут + микротиик пока подтянет DNS еще 3 мин ...
лечиться командой /ip dns cache flush
Если я правильно понял, что у тебя доменное имя no-ip
achekalin писал(а):wolf_ktl писал(а):Есть один косяк обновление DNS имен происходит очень долго.. пока сервер отправит команду на обновление DNS проходит 5 минут + микротиик пока подтянет DNS еще 3 мин ...
лечиться командой /ip dns cache flush
Если я правильно понял, что у тебя доменное имя no-ip
Да нет, зачем, просто в своем домене завел записи для удаленных точек туннелей, и все.
ДНС отрабатывает примерно от интервала TTL в свойствах записи в ДНС (а его ставить менее 5 минут страшновато) до двух-трех таких интервалов (грубо - от числа ДНС серверов по пути от твоего маршрутизатора до сервера, где зона домена лежит - если твой микротик ходит за ДНС-ресолвингом на ДНС провайдера, то записи будут отдельно протухать у тебя и у провайдера), но обычно даже быстрее. При моей схеме это время - терпимо, все же ДНС не сервис мгновенной реакции.
Кеш ДНС в микротике можно покрутить командой /ip dns set cache-max-ttl=<максимальное число секунд жизни записи в кеше>, если ДНС на маршрутизаторе используется только для задач самого маршрутизаторв, можно задать cache-max-ttl=1, и радоваться.
Dragon_Knight писал(а):achekalin, я не считаю что протокол интернета за последние лет 30 поменялся так сильно, что пришлось переписывать поведение программ ping, traceroute и вообще алгоритм работы с именами, а всё выше написанное было взято из личного опыта. Сами откройте исходники вышеописанный команд и посмотрите их алгоритм работы.
Именно в какой момент редолвит домен OVPN знают только разработчики ROS, но именно Вы в пример 'неправильного' поведения привили команду ping, поэтому и получили ответ касательно неё....