Since RouterOS doesn't allow specifying a hostname for remote peers on VPN connections, I've made a single script that can be used for almost any type of VPN (tested with L2TP, PPTP and OVPN)
Suggestions are welcome
Code: Select all
#************************************************************************************************
# Parameters
#************************************************************************************************
:local hostname "remote.hostname.com"
:local interface "pptp-vpn"
#************************************************************************************************
:global setupIp
:local resolvedIp [:resolve $hostname]
if ([:len [/interface find name=$interface]] > 0) do={
:local type [/interface get [find name=$interface] type];
:set type ([pick $type 0 [find $type "-"]]."-client");
:local cmd [:parse ":global setupIp; :set setupIp [:interface $type get $interface connect-to]"]; $cmd;
:if ($setupIp != $resolvedIp) do={
:set cmd [:parse ":interface $type set $interface connect-to=$resolvedIp"]; $cmd;
:set cmd [:parse ":interface $type disable $interface"]; $cmd;
:set cmd [:parse ":interface $type enable $interface"]; $cmd;
:log warn "$type: Switching interface $interface from IP $setupIp to $resolvedIp"
}
} else={
:log error "Interface $interface not found"
}