Задать вопрос

Динамические туннели на Микротике, как избавиться?

Есть центральный шлюз, к которому поднимают туннели (L2TP, PPTP) другие шлюзы, тоже Mikrotik.
Несмотря на то, что на центральном в PPP прописаны статические интерфейсы (Server Binding), к которым привязаны соответствующие Secrets, и на которые прописаны статические маршруты, иногда всё же при подключении создаются динамические интерфейсы. Естественно, статический маршрут при это "ломается".
Помогает удаление динамически созданного интерфейса, тогда подключение поднимается через настроенный для него server binding.
Почему вообще такое происходит, куда смотреть?
  • Вопрос задан
  • 669 просмотров
Подписаться 4 Простой 5 комментариев
Пригласить эксперта
Ответы на вопрос 1
@volkov_aleksey
Примерный код скрипта, вдруг кому то понадобится, потом адаптируете под себя.
:global checkDuplicateL2tpUsers do={
    :local l2tpServerBindings [/interface l2tp-server server get value-name=sessions]
    :local activeUsers [:toarray ""]
    
    # Собираем список пользователей с активными Server Binding
    :foreach binding in=$l2tpServerBindings do={
        :local user ($binding->"user")
        :if ([:len $user] > 0) do={
            :set ($activeUsers->([:len $activeUsers])) $user
        }
    }
    
    # Проверяем все L2TP-интерфейсы
    :foreach l2tpIf in=[/interface l2tp-client find] do={
        :local ifName [/interface l2tp-client get $l2tpIf name]
        :local ifUser [/interface l2tp-client get $l2tpIf user]
        :local ifDynamic [/interface l2tp-client get $l2tpIf dynamic]
        :local ifDisabled [/interface l2tp-client get $l2tpIf disabled]
        
        # Если интерфейс динамический (DR) и пользователь уже есть в Server Binding
        :if ($ifDynamic = true && $ifDisabled = false && [:typeof $ifUser] = "str" && [:len $ifUser] > 0 && [:find $activeUsers $ifUser] != nil) do={
            :log info ("L2TP duplicate user found - removing dynamic connection: ".$ifName." user: ".$ifUser)
            /interface l2tp-client remove $l2tpIf
        }
    }
}

# Добавляем скрипт в системные скрипты
/system script add name=checkDuplicateL2tpUsers source="$checkDuplicateL2tpUsers" policy=ftp,reboot,read,write,policy,test,winbox,password,sensitive

# Создаем триггер для выполнения скрипта при добавлении нового L2TP-интерфейса
/system scheduler add name="Check L2TP Duplicates" start-time=startup on-event="/system script run checkDuplicateL2tpUsers;"
/system scheduler add name="Check L2TP Duplicates Periodic" interval=5m on-event="/system script run checkDuplicateL2tpUsers;"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы