у RouterOS есть параметр IDLE Timeout в свойствах PPP профиля, проблема в том, что время неактивности постоянно сбрасывается протоколами по типу WSD и UPNP которые гадят в тоннель.
Можно ли как то настроить RouterOS так, чтобы он не считал этот траффик условием для сброса времени неактивности?
ka-may, можно убить сессию скриптом только скорее всего система клиента будет стараться восстановить соединение и инактив обнулится, как и сказали выше этот параметр вам не подходит и ещё момент если стоит микрот с другой стороны с gateway ping тоже будут проблемы с отключением по инактивити
Есть два вида неактивности, грубо говоря. Если клиент просто ничего не делает в сети, и когда обрыв соединения. В первом случае keep-alive передаётся, во втором нет.
Т.ч. мешать он не должен. Но тогда мне не совсем понятно задача, ну отвалился клиент, и в чем беда для сервера?
Zerg89, если скриптом- да. Если цивильно завершить, то нет.
Если ставить вопрос наиболее корректно< то звучать он будет так: Как со стороны RouterOS отключать VPN клиента в случае неактивности по определённым портам
Вот кстати пример у ASA как это работает- и работает корректно Если нет активности по портам которые разрешены фаерволом в течении 30 мин появляется это
ka-may, маркировка трафика пакетов (только нагрузка большая) или как вариант отслеживать счётчик коннекта и отключение vpn учетки на 10 минут с удалением коннекта
ka-may, вкладка mangle маркируем коннект, и по метке отслеживаем скриптом идёт обмен с таким маркером или нет, вешаем триггер если обмена нет какой-то период времени /ppp secret xxx disable ждём какое-то время для того чтобы система на той стороне получила отбой и влключаем учетку обратно /ppp secret xxx enable
Zerg89, poisons примерно такое решение получилось, оцените пожалуйста- если есть как улучшить расскажите :)
Скрипт добавляем в ON UP профиля:
:local a 0
/ip fi ma add chain=prerouting action=accept src-address=$"remote-address" protocol=tcp dst-port=3389,445 comment=$"user"
while ($a!=60) do={
:local j [ip fi ma get [find comment=$user] packets]
:delay 10
:local k [ip fi ma get [find comment=$user] packets]
if ($j=$k) do {:set a (a+1)}
if ($j!=$k) do {:set a 0}
}
/ppp active remove [find name=$user]
Скрипт добавляем в ON DOWN профиля:
ip fi ma remove [ find src-address=$"remote-address" ]
Zerg89 Добавил в итоговое тело скрипта, см ответы. SSTP на Windows 10 кстати не переподключается, видимо (ppp active remove) это не потеря связи, а её цивильный разрыв со стороны сервера
ka-may, ещё я с delay ошибся 20000 ms вместо 2000,
в теле условия delay не 10 а 100 (1сек) это уменьшит нагрузку на проц 0,1 секунда это очень часто, либо условие а!= должно быть 600
:local a 0
/ip fi ma add chain=prerouting action=accept src-address=$"remote-address" protocol=tcp dst-port=3389,445 comment=$"user"
while ($a!=60) do={
:local j [ip fi ma get [find comment=$user] packets]
:delay 10
:local k [ip fi ma get [find comment=$user] packets]
if ($j=$k) do {:set a (a+1)}
if ($j!=$k) do {:set a 0}
}
/ppp secrets disable [find name=$user]
/ppp active remove [find name=$user]
:delay 20
/ppp secrets enable [find name=$user]
Попробуйте фильтровать на прероуте, на вкладке raw по необходимым портам, если это не сработает у меня идея только файрвол или отключение маршрута по умолчанию в настройках соединения
RAW- фильтр не помог, как и фаервол.
В том дело, что отключение маршрута по умолчанию не отключает броадкаст UPNP и WSD со стороны клиента в этот тоннель. Иногда ещё и mDNS:)