DataLife Engine / Автоматическая смена порта в клиенте WireGuard MikroTik

Автоматическая смена порта в клиенте WireGuard MikroTik


Рассмотрим ситуацию, когда необходимо менять порт клиента VPN-туннеля WireGuard на MikroTik, если туннель упал и требуется выбрать другой случайный порт для его повторного поднятия.

Собственно, сам скрипт:
/system script
add dont-require-permissions=no name=wg_up owner=sa policy=read,write,test source="# Remote address to ping. Intname, wireguard interface.\r\
    \n:local remote \"1.2.3.4\";\r\
    \n:local intname \"wireguard1\";\r\
    \n\r\
    \n:if ([/ping \$remote count=2 interface=\$intname]=0) do={\r\
    \n  :if ([/ping \$remote count=10 interface=\$intname]=0) do={\r\
    \n    :log error \"\$intname crashed. Resetting.\";\r\
    \n    /interface wireguard set \$intname listen-port=0\r\
    \n  }\r\
    \n}"

Как вы догадались, значение listen-port=0 позволяет выбрать новый случайный UDP-порт.

Также можно добавить задание в шедулер:
/system scheduler
add interval=2m name=wg_up on-event=":local remote \"1.2.3.4\";\r\
    \n:local intname \"wireguard1\";\r\
    \n\r\
    \n:if ([/ping \$remote count=2 interface=\$intname]=0) do={\r\
    \n  :if ([/ping \$remote count=10 interface=\$intname]=0) do={\r\
    \n    :log error \"\$intname crashed. Resetting.\";\r\
    \n    /interface wireguard set \$intname listen-port=0\r\
    \n  }\r\
    \n}" policy=read,write,test start-date=2026-03-06 start-time=20:10:51
Вчера, 20:07
Вернуться назад