Содержание

Содержание

Настройка динамического GRE туннеля на Mikrotik

Содержание

GRE — это просто, GRE over IPsec — это клёво… когда IP-адреса не меняются.

Если IP-адрес хотя бы одной из сторон динамический, то нужно отображать эти изменения в Mikrotik.

GRE network
Сеть GRE подключения

Для этого воспользуемся сервисом динамического DNS и скриптом, который будет брать IP-адреса точек подключения из DNS:

sh

# Set GRE tunnel remote and local addresses IPs from DNS.
# Script needs in policies: read, write, test.

# Define interface name and domain name of each router.
:local interfaceName "gre1"
:local localRouterDomainName "r1.example.com"
:local remoteRouterDomainName "r2.example.com"

# Get current addresses
:local currentLocalIpAddress [/interface gre get $interfaceName local-address]
:local currentRemoteIpAddress [/interface gre get $interfaceName remote-address]

# Look up addresses
:local localRouterLookedUpIpAddress [:resolve $localRouterDomainName]
:local remoteRouterLookedUpIpAddress [:resolve $remoteRouterDomainName]

# Process local address
:if ($currentLocalIpAddress != $localRouterLookedUpIpAddress) do={
  /interface gre set $interfaceName local-address=$localRouterLookedUpIpAddress
  :log info "local $currentLocalIpAddress updated to $localRouterLookedUpIpAddress on $interfaceName"
}

# Process remote address
:if ($currentRemoteIpAddress != $remoteRouterLookedUpIpAddress) do={
  /interface gre set $interfaceName remote-address=$remoteRouterLookedUpIpAddress
  :log info "remote $currentRemoteIpAddress updated to $remoteRouterLookedUpIpAddress on $interfaceName"
}

Для работы скрипта нужны права read, write, test.

Скрипт можно запускать по таймеру. Я запускаю раз в 5 минут.