26
Янв

Скрипт динамического обновления ip в политиках IPsec Mikrotik

Допустим мы настроили шифрованный L2TP тунель с IPsec к VDS, но ip нашего провайдера может изменится, тогда политики IPsec станут не рабочими. Предлагаю использовать следующий скрипт.
Где:
pass — это комментарий нашей политики
ISP2 — наш интерфейс с интернет соединением

:global ipsecold [ /ip ipsec policy get [find comment="pass"] sa-src-address]
 :global ipsecoldsa [ /ip ipsec policy get [find comment="pass"] src-address]
 :global ipsec [ /ip address get [find interface="ISP2"] address ]
 :for i from=( [:len $ipsec] - 1) to=0 do={
 :if ( [:pick $ipsec $i] = "/") do={
 :set ipsec [:pick $ipsec 0 $i];
 }
 }
 :global ipsecsa ([:pick "$ipsec" 0 ([:len $ipsec] - 0)]."/32")
 :if ($ipsecoldsa != $ipsecsa) do={
 /ip ipsec policy set [find comment="pass"] src-address=$ipsecsa sa-src-address=$ipsec;
 }