Как использовать 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
QR Code
QR Code Как использовать DNS-имя сервера вместо IP-адреса в соединениях PPP (generated for current page)