Как использовать DNS-имя сервера вместо IP-адреса в соединениях PPP
Данная статья актуальна для RouterOS до версии 6.2 включительно. Начиная с версии RouterOS 6.3 - в туннелях можно указывать DNS-имя сервера.
Одной из особенностей микротик RouterOS является то, что DNS-имена серверов в VPN-соединениях автоматически преобразовываются в IP-адреса. Когда адрес один, это не составляет большой проблемы, а вот что делать если на одно имя приходится несколько айпи-адресов для балансировки нагрузки?
В этом случае нам поможет следующий скрипт (для терминала):
/system script add name="Resolve_VPN_DNS" policy=\ ftp,reboot,read,write,policy,test,winbox,password source=":global pptpinte\ rfacename \"ИМЯ_ВАШЕГО_VPN_СОЕДИНЕНИЯ\"\r\ \n:global pptpdnsname \"ИМЯ_ВАШЕГО_VPN_СЕРВЕРА\"\r\ \n:global pptpdnsip [:resolve \$pptpdnsname]\r\ \n:global currentip [/interface pptp-client get \$pptpinterfacename connec\ t-to]\r\ \n:if (\$currentip != \$pptpdnsip) do={ /interface pptp-client set [find n\ ame=\$pptpinterfacename] connect-to=\$pptpdnsip}\r\ \n"
Текст скрипта (для winbox'a):
:global pptpinterfacename "ИМЯ_ВАШЕГО_VPN_СОЕДИНЕНИЯ" :global pptpdnsname "ИМЯ_ВАШЕГО_VPN_СЕРВЕРА" :global pptpdnsip [:resolve $pptpdnsname] :global currentip [/interface pptp-client get $pptpinterfacename connect-to] :if ($currentip != $pptpdnsip) do={ /interface pptp-client set [find name=$pptpinterfacename] connect-to=$pptpdnsip}
Добавим событие в планировщик, чтобы раз в 10 минут отрабатывал наш скрипт:
/system scheduler add interval=10m name=DNS_resolve_VPN on-event="/system script run \"Resolve_VPN_DNS\"" \ start-time=startup