„MikroTik dinamikus WAN interfészek kezelése” változatai közötti eltérés

Innen: IT documentation
 
(36 közbenső módosítás ugyanattól a szerkesztőtől nincs mutatva)
1. sor: 1. sor:
{{DISPLAYTITLE:MikroTik dinamikus címek kezelése}}
==Összefoglalás==
==Összefoglalás==
A leírás MikroTik RouterOS 6.44.6 verzión készült.
A leírás MikroTik RouterOS 6.48.6 verzión készült.


Előfordulhat, hogy az interfész(ek)en dinamikus IP cím van (és nem is lehet más), de mégis szolgáltatás kell, hogy fusson rajtuk. Amikor a cím(ek) változnak, szükség van az információ automatikus frissítésére egyéb rendszerekben (például DNS rekordok vagy Address list-ek).
Ha a WAN interfész(ek)en dinamikus IP cím van, de mégis szolgáltatás kell, hogy fusson rajtuk, amikor a cím(ek) változnak, szükség van az címek automatikus frissítésére egyéb rendszerekben, mint például DNS rekordok vagy Address list-ek esetén.


A következő Mikortik RouterOS script ebben az esetben lehet hasznos.
A következő Mikrotik RouterOS szkript ez esetben lehet hasznos.


==IP váltás észlelése==
== Funkciók ==
A $WanIP golbális változóba helyezzük az aktuális címet és figyeljük, hogy változik e az $intName változóban megadott interface IP címe.<syntaxhighlight lang="bash">
:global WanIP
:local intName "WAN"


if ([:len [ /ip address find interface=$intName dynamic ]] = 0) do={
===Időzítés===
    :log error message="Nincs dinamikus IP cim az $intName interfeszen!"  
A script első futtatásakor automatikusan létrehozza az időzített futtatást a MikroTik RouterOS-ben. A '''$scriptName''' paraméterben a script nevét kell megadni (amely néven elmentettük), A '''$defaultInterval''' paraméterben pedig a futtatás gyakoriságát lehet megadni.<syntaxhighlight lang="shell">
    :error message="Nincs dinamikus IP cim az $intName interfeszen!"
# scriptName: (string) This script name in Mikrotik RourerOS
}
# defaultInterval: (time) Interval of schelude
:local tempIP [ /ip address get [ /ip address find interface=$intName dynamic ] address ]
:local scriptName "DynamicWAN"
:local tempIP [:pick $tempIP 0 [:find $tempIP  "/" -1 ] ]
:local defaultInterval 00:01:00
</syntaxhighlight>


if ( $WanIP != $tempIP ) do={
=== Értesítés ===
A script képes értesítés küldeni syslog és email -en keresztül. A '''$logFacility''' paraméterben a log szintjét állíthatjuk, a '''$emailFacility''' paraméterben pedig az email értesítések szintjét. Az email küldés paramétereit az '''$Email...''' paraméter csoportban állíthatjuk be.<syntaxhighlight lang="shell">
# logFacility,
# emailFacility: (string) Log and email facility. Valuses. none,debug,info,warn,error
:global logFacility "info"
:global emailFacility "none"


    # teendők a régi IP -vel
# Email parameters
    :set WanIP $tempIP
# EmailServer: (string) SMTP server host
    :log info message="IP valtozas az $intName interfeszen! Uj IP: $WanIP"  
# EmailPort: (num) SMTP host
    # teendők az új IP -vel
# EmailTLS: (string) SMTP TLS
 
# EmailUser: (string) SMTP user
}
# EmailPassword: (string) SMTP password
# EmailRecipient: (string) Email recipient
# EmailSender: (string) Email sender
:local EmailServer "myEmailserver"
:local EmailPort 25
:local EmailTLS "no"
:local EmailUser "username"
:local EmailPassword "password"
:local EmailRecipient "Name <email address>"
:local EmailSender "Name <email address>"
</syntaxhighlight>
</syntaxhighlight>


==DNS rekord frissítése==
=== Online ellenőrzés ===
Lehetőség van egy DNS szerveren egy domain egy vagy több "A" rekordjának frissítésére.
Tipikusan több WAN interfész esetében szükséges ellenőrizni, hogy az interfész valóban képes e összeköttetést biztosítani az internettel. Ezt pusztán L2 vagy L3 szinten nem elég ellenőrizni, hiszen működő link és helyes IP beállítások mellett is elképzelhető, jellemzően szolgáltató hiba esetén, hogy valójában nincs internetkapcsolat.


Ha távoli eléréshez használnánk ezt a rekordot, akkor sokkal egyszerűbb a Mikrotik DDNS-ét használni:<syntaxhighlight lang="bash">
A legmegfelelőbb teszt az internet kapcsolat ellenőrzésére, hogy megnézzük, elérünk e az adott interfészen keresztül, egy adott, biztosan elérhető hostot. A script az ellenőrzést ping-el hajtja végre.
/ip cloud set ddns-enabled=yes
/ip cloud print
    ddns-enabled: yes
    ddns-update-interval: none
    update-time: yes
    public-address: x.x.x.x
    public-address-ipv6: X:X:X::X
    dns-name: XXX.sn.mynetname.net
    status: updated
</syntaxhighlight>A következő módszer inkább egyéb szolgáltatások rekordfrissítéséhez használható.A rekord frissítéshez szükség van egy kulcsra (authorization key / Transfer Signature key), amelyet a DNS szerver üzemeltetőjétől szerezhetünk be. A kulcs birtokában egy egyszerű paranccsal frissíthetjük a rekordot:<syntaxhighlight lang="bash">
:global WanIP
:local intName "WAN"
:local DNSserver "<domain vagy IP>"
:local DNSrecord "<rekord neve, pl: mail>"
:local DNSdomain "<zóna neve, pl: domain.hu>"
:local DNSttl 3600
:local DNSkeyname "<kulcs neve>"
:local DNSkey "<kulcs érték>"


if ([:len [ /ip address find interface=$intName dynamic ]] = 0) do={
A script policy-based route-okat hoz létre interfészenként WAN0, WAN1 ... WANX néven, amit majd az ellenőrzéskor használ.
    :log error message="Nincs dinamikus IP cim az $intName interfeszen!"
    :error message="Nincs dinamikus IP cim az $intName interfeszen!"
}
:local tempIP [ /ip address get [ /ip address find interface=$intName dynamic ] address ]
:local tempIP [:pick $tempIP 0 [:find $tempIP  "/" -1 ] ]


if ( $WanIP != $ttempIP ) do={
A '''$pingSites''' paraméterben megadott host-okkal ellenőriz. Ha az első host nem elérhető, csak akkor ellenőrzi a másodikat, ha az sem, akkor a harmadikat, stb. Ha az összes host elérhetetlen az interfészen keresztül, akkor minősíti offline-nak az interfészt.


    :set WanIP $tempIP
Az '''$Int->$if''' paraméterben adhatjuk meg a WAN intefész nevét.<syntaxhighlight lang="shell">
    :log info message="IP valtozas az $intName interfeszen! Uj IP: $WanIP"  
# pingSites: (array) Ping sites for check that WAN is alive
    # DNS rekord frissítése
:local pingSites {
    /tool dns-update dns-server=$DNSserver name=$DNSrecord zone=$DNSdomain address=$WanIP ttl=$DNSttl key-name=$DNSkeyname key=$DNSkey
  "example.com";
  8.8.8.8;
}


# Int: (array) Array of WAN interfaces
# if: (string) ISP (WAN) iterface name. The intervace have to have an synamic IP address.
:local Int {
{
"if"="WAN1";
};
{
"if"="WAN2";
};
}
}
</syntaxhighlight>
</syntaxhighlight>


==Address list frissítése==
=== Default route ===
Ha a WAN IP-vel dolgozni szeretnénk, pl. tűzfal szabályban, akkor egy "address list" -en kell tárolni és frissíteni a dinamikus címet. A következő változat ezt oldja meg.<syntaxhighlight lang="bash">
Ha pl. a WAN1 interfész online, de nem forgalmaz, míg a WAN2 forgalmaz, akkor át kell állni a WAN2-re. A scripteben megadhatunk online és offline állapothoz tartozó route distance-ot. Ha a WAN1 offline route distance nagyobb, mint a WAN2 online route distance, akkor a default route átáll a WAN2-re. Lsd. lenti példa.
:global WanIP
:local intName "WAN"
:local listName "WAN"


if ([:len [ /ip address find interface=$intName dynamic ]] = 0) do={
Az '''$Int->$distanceOnline,'''  '''$Int->$distanceOffline,''' paraméterekben adhatjuk meg a route distance értékeket. A funkció működéséhez mindkét config tömb elemnek léteznie kell numeric értékkel.<syntaxhighlight lang="shell">
    :log error message="Nincs dinamikus IP cim az $intName interfeszen!"  
# Int: (array) Array of WAN interfaces
    :error message="Nincs dinamikus IP cim az $intName interfeszen!"  
# if: (string) ISP (WAN) iterface name. The intervace have to have an synamic IP address.
# distanceOnline,
# distanceOffline: (num) Route Distance in online and offline state. Both settings required to set route distance.
:local Int {
{
"if"="WAN1";
"distanceOnline"=1;
"distanceOffline"=11;
};
{
"if"="WAN2";
"distanceOnline"=2;
"distanceOffline"=21;
};
}
}
:local tempIP [ /ip address get [ /ip address find interface=$intName dynamic ] address ]
</syntaxhighlight>
:local tempIP [:pick $tempIP 0 [:find $tempIP  "/" -1 ] ]


if ( $WanIP != $tempIP ) do={
=== Address list frissítése ===
   
Ha a WAN IP-vel dolgozni szeretnénk, pl. tűzfal szabályban, akkor egy "address list"-ben lehet tárolni és frissíteni a dinamikus címet.  Az '''$Int->$addresslist''' paraméter adja meg az address list nevét, melyben tárolni szerenénk az interfész címét. Megadható string-ként egy lista, vagy tömbként több lista is.
    # régi IP levétel
    /ip firewall address-list remove [find list=$listName address=$WanIP]
    :set WanIP $tempIP
    :log info message="IP valtozas az $intName interfeszen! Uj IP: $WanIP"  
    # új IP felvétel
    /ip firewall address-list add list=$listName address=$WanIP


Dinamikus address list-et hoz létre a '''$defaultInterval''' paraméterben megadott lease time-al.  <syntaxhighlight lang="shell">
# Int: (array) Array of WAN interfaces
# if: (string) ISP (WAN) iterface name. The intervace have to have an synamic IP address.
# addresslist: (string|array) IP address list(s) what will be refresh with address of interface and lease time as $defaultInterval.
:local Int {
{
"if"="WAN1";
"addresslist"="WAN";
};
{
"if"="WAN2";
"addresslist"={
    "WAN";
    "WAN2";
};
};
}
}
</syntaxhighlight>


===DNS rekord frissítése===
DNSSEC-et támogató névszerverek esetén lehetőség van egy domain "A" rekordjának frissítésére. A rekord frissítéshez szükség van egy kulcsra (authorization key / Transfer Signature key), amelyet a DNS szerver üzemeltetőjétől szerezhetünk be.


A '''$DNS...''' paraméter csoportban állíthatjuk be a DNS frissítéshez szükséges paramétereket.


Az '''$Int->$dns''' paraméterrel adhatjuk meg, mely WAN iterfész IP címe, mely DNS rekordon frissüljön. Megadható string-ként egy DNS rekord, vagy tömbként több DNS rekord is.<syntaxhighlight lang="shell">
# DNS refresh parameters
# DNSserver: (string) Nameserver host
# DNSdomain: (string) Domain zone name
# DNSttl: (num) Domain record TTL
# DNSkeyname: (string) Key name
# DNSkey: (string) Key
:local DNSserver "myNameServer";    # Nameserver host
:local DNSdomain "mydomain.com";    # Domain zone name
:local DNSttl 3600;                  # Domain record TTL
:local DNSkeyname "keyname";        # Key name
:local DNSkey "key";                # Key
# Int: (array) Array of WAN interfaces
# if: (string) ISP (WAN) iterface name. The intervace have to have an synamic IP address.
# dns: (string|array) Subdomain(s) what have to refresh with the address of interface according to DNS refresh parameters.
:local Int {
{
"if"="WAN1";
"dns"="isp1";
};
{
"if"="WAN2";
"dns"={"isp2";"backupisp"};
};
}
</syntaxhighlight>
</syntaxhighlight>


==Időzítés==
===Dinamikus tunnel===
A példában feltételezzük, hogy a scriptnek "chkIP" a neve, és ugyanezen néven hozzuk létre az időzítést.
A szkript EoIP, IPIP, és GRE tunnel interfészeket támogat.  


Megtehetjük, hogy ciklikusan időzítjük a scriptet, pl óránként, így beállítva a frissítési gyakoriságot. <syntaxhighlight lang="bash">
Az '''$Int->$interfaces''' tömb paraméterrel adhatjuk meg, mely WAN iterfész IP címe, mely tunnel interfész(ek) local-address paramétere frissüljön.
/system scheduler add name=chkIP interval=00:01:00 policy=read,sniff,policy,test on-event=
 
"/system script run chkIP"
Az  '''$Int->$interfaces->$if''' paraméter a tunnel interész nevét adja meg.  
</syntaxhighlight>
Ez estben lehet szolgáltatás kiesés, példánkban maximum 1 óra. Ha szeretnénk pontosan időzíteni, figyelni kell a dinamikus IP cím lejárati idejét, és erre az időpontra időzíteni a következő ellenőrzést.


A módszer csak DHCP-vel kapott IP címek esetén működik. PPPoE és egyéb tunnel protokolloknál nincs lejárati idő, ez esetben csak a ciklikus (manuális) időzés működik. <syntaxhighlight lang="bash">
'''$Int->$interfaces->$disableOffline''' paraméter true érték esetén a tunnel interfészt letiltja, amíg a WAN intefész offline, azaz feleslegesen nem fog próbálkozni a router a tunnel felépítésével.
:global WanIP
:local intName "WAN"
:local scriptName "chkIP"
:local defaultInterval 00:01:00


# időzítés létrehozása, ha nincs
'''Int->$interfaces->$localAddress''' paraméter true érték esetén a tunnel interfész local-adress paramétere felveszi a WAN intefész mindenkori IP címét. Így dinamikus tunnel alakítható ki.<syntaxhighlight lang="shell">
if ( [:len [/system scheduler find  name=$scriptName]]=0) do={
# Int: (array) Array of WAN interfaces
    /system scheduler add name=$scriptName interval=$defaultInterval start-time=[/system clock get time] start-date=[/system clock get date] policy=read,write,test on-event="/system script run $scriptName"  
# if: (string) ISP (WAN) iterface name. The intervace have to have an synamic IP address.
# interfaces: (array) Interface(s) what have to manage by WAN states.
# interfaces->if: (string) Interface name.
# interfaces->disableOffline: (boolean) If true, when WAN interface goes offline, the interface will be disabled too.
# interfaces->localAddress: (boolean) If true, the lacal-address will be refresh with WAN address. The interface type have to be tunnel.
:local Int {
{
"if"="WAN1";
        "interfaces"={
            {
                "if"="tunnel1";
                "disableOffline"=true;
        "localAddress"=true;
      };
        };
};
{
"if"="WAN2";
        "interfaces"={
            {
                "if"="tunnel2";
                "localAddress"=true;
            };
        };
};
}
}


# időzítés alap értékkel, ha hiba van
</syntaxhighlight>
if ([:len [ /ip address find interface=$intName dynamic ]] = 0) do={
===VRRP prioritás===
    /system scheduler set $scriptName interval=$defaultInterval start-time=[/system clock get time] start-date=[/system clock get date]
VRRP prioritást állít attól függően, hogy a WAN interfész online vagy offline. Ha a WAn offline, a prioriás növelésével VRRP Master állapot átatható a VRRP Backup párjának.
    :log error message="Nincs dinamikus IP cim az $intName interfeszen!"
    :error message="Nincs dinamikus IP cim az $intName interfeszen!"
}


:local tempIP [ /ip address get [ /ip address find interface=$intName dynamic ] address ]
Az '''$Int->$interfaces''' tömb paraméterrel adhatjuk meg, mely WAN iterfész, mely vrrp interfész(ek) prioritása frissüljön.
:local tempIP [:pick $tempIP 0 [:find $tempIP  "/" -1 ] ]


# időzítés alap értékkel, ha nincs DHCP client
Az  '''$Int->$interfaces->$if''' paraméter a vrrp interész nevét adja meg.
if ( [ :len [ /ip dhcp-client find interface=$intName ] ] = 0 ) do= {
  /system scheduler set $scriptName interval=$defaultInterval start-time=[/system clock get time] start-date=[/system clock get date]
    :log error message="Nincs lease time az $intName interfeszen!"
    :error message="Nincs lease time az $intName interfeszen!"
}


# időzítés lease értékkel
'''$Int->$interfaces->$VRRPOnline''' és '''$Int->$interfaces->$VRRPOffline''' paraméterrel a vrrp  interfészt online és offline prioritása adható meg. <syntaxhighlight lang="shell">
:local leaseIP [ /ip dhcp-client get value-name=expires-after [find interface=$intName]  ]
# Int: (array) Array of WAN interfaces
:local schInt  [ /system scheduler get $scriptName value-name=interval ]
# if: (string) ISP (WAN) iterface name. The intervace have to have an synamic IP address.
if ( $leaseIP!=$schInt) do={
# interfaces: (array) Interface(s) what have to manage by WAN states.
    /system scheduler set $scriptName interval=$leaseIP start-time=[/system clock get time] start-date=[/system clock get date]
# interfaces->if: (string) Interface name.
# interfaces->VRRPOnline,
# interfaces->VRRPOffline: (num) VRRP interface priority in online and offline state. Both settings required and the interface type have to be vrrp.
:local Int {
{
"if"="WAN1";
        "interfaces"={
            {
                "if"="vrrp1";
        "VRRPOnline"=1;
          "VRRPOffline"=11;
      };
        };
};
{
"if"="WAN2";
        "interfaces"={
            {
                "if"="tunnel2";
                "localAddress"=true;
            };
            {
                "if"="vrrp2";
        "VRRPOnline"=2;
          "VRRPOffline"=21;
            };
        };
};
}
}


if ( $WanIP != $tempIP ) do={
</syntaxhighlight>
===Szkipt futtatás===
Ha egyedi funkcióval szeretnénk kibővíteni a szkipt működését, lehetőség van szkript futtatására a WAN interfész eseményeinél.


    # teendők a régi IP -vel
Az  '''$Int->$script''' paraméterben felsorolható egy vagy több RouterOS szkcript, mely a WAN interfész eseményeinél lefut. A paramétereket globális változóban kapja meg a futatandó szkript.
    :set WanIP $tempIP
    :log info message="IP valtozas az $intName interfeszen! Uj IP: $WanIP"
    # teendők az új IP -vel


* WANevent: Az esemény megnevezése. Lehetséges értékek: online, offline, IPCange
* WANinterface: A WAN interfész neve.
* WANnewIP, WANprevIP: A WAN interfész előző és az aktuális IP címe. Csak az IPCange eseménynél frissül!
<syntaxhighlight lang="shell">
# Int: (array) Array of WAN interfaces
# if: (string) ISP (WAN) iterface name. The intervace have to have an synamic IP address.
# script: (string|array) Run script at events of WAN interface.
# The fuction gives some parameters in global wariables:
# WANevent: The  event when the script was called. Values: online, offline, IPCange
# WANinterface: The WAN interface's name, same as "if" parameter.
# WANnewIP, WANprevIP: The previous and actual IP address of WAN interface. Will be refresh only at IPCange event!
:local Int {
{
"if"="WAN1";
    "script"={
      "scriptname";
        };
};
}
}
</syntaxhighlight><br />
 
</syntaxhighlight>
[[Kategória:MikroTik]]

A lap jelenlegi, 2022. február 3., 15:08-kori változata


Összefoglalás

A leírás MikroTik RouterOS 6.48.6 verzión készült.

Ha a WAN interfész(ek)en dinamikus IP cím van, de mégis szolgáltatás kell, hogy fusson rajtuk, amikor a cím(ek) változnak, szükség van az címek automatikus frissítésére egyéb rendszerekben, mint például DNS rekordok vagy Address list-ek esetén.

A következő Mikrotik RouterOS szkript ez esetben lehet hasznos.

Funkciók

Időzítés

A script első futtatásakor automatikusan létrehozza az időzített futtatást a MikroTik RouterOS-ben. A $scriptName paraméterben a script nevét kell megadni (amely néven elmentettük), A $defaultInterval paraméterben pedig a futtatás gyakoriságát lehet megadni.

# scriptName: 					(string) This script name in Mikrotik RourerOS
# defaultInterval:				(time) Interval of schelude
:local scriptName "DynamicWAN"
:local defaultInterval 00:01:00

Értesítés

A script képes értesítés küldeni syslog és email -en keresztül. A $logFacility paraméterben a log szintjét állíthatjuk, a $emailFacility paraméterben pedig az email értesítések szintjét. Az email küldés paramétereit az $Email... paraméter csoportban állíthatjuk be.

# logFacility,
# emailFacility:				(string) Log and email facility. Valuses. none,debug,info,warn,error
:global logFacility "info"
:global emailFacility "none"

# Email parameters
# EmailServer:					(string) SMTP server host
# EmailPort:					(num) SMTP host
# EmailTLS:						(string) SMTP TLS
# EmailUser:					(string) SMTP user
# EmailPassword:				(string) SMTP password
# EmailRecipient:				(string) Email recipient
# EmailSender:					(string) Email sender
:local EmailServer "myEmailserver"	
:local EmailPort 25	
:local EmailTLS "no"
:local EmailUser "username"
:local EmailPassword "password"
:local EmailRecipient "Name <email address>"
:local EmailSender "Name <email address>"

Online ellenőrzés

Tipikusan több WAN interfész esetében szükséges ellenőrizni, hogy az interfész valóban képes e összeköttetést biztosítani az internettel. Ezt pusztán L2 vagy L3 szinten nem elég ellenőrizni, hiszen működő link és helyes IP beállítások mellett is elképzelhető, jellemzően szolgáltató hiba esetén, hogy valójában nincs internetkapcsolat.

A legmegfelelőbb teszt az internet kapcsolat ellenőrzésére, hogy megnézzük, elérünk e az adott interfészen keresztül, egy adott, biztosan elérhető hostot. A script az ellenőrzést ping-el hajtja végre.

A script policy-based route-okat hoz létre interfészenként WAN0, WAN1 ... WANX néven, amit majd az ellenőrzéskor használ.

A $pingSites paraméterben megadott host-okkal ellenőriz. Ha az első host nem elérhető, csak akkor ellenőrzi a másodikat, ha az sem, akkor a harmadikat, stb. Ha az összes host elérhetetlen az interfészen keresztül, akkor minősíti offline-nak az interfészt.

Az $Int->$if paraméterben adhatjuk meg a WAN intefész nevét.

# pingSites:					(array) Ping sites for check that WAN is alive
:local pingSites {
   "example.com";
   8.8.8.8;
}

# Int:							(array) Array of WAN interfaces
# if:							(string) ISP (WAN) iterface name. The intervace have to have an synamic IP address.
:local Int {
	{
		"if"="WAN1";
	};
	{
		"if"="WAN2";
	};
}

Default route

Ha pl. a WAN1 interfész online, de nem forgalmaz, míg a WAN2 forgalmaz, akkor át kell állni a WAN2-re. A scripteben megadhatunk online és offline állapothoz tartozó route distance-ot. Ha a WAN1 offline route distance nagyobb, mint a WAN2 online route distance, akkor a default route átáll a WAN2-re. Lsd. lenti példa.

Az $Int->$distanceOnline, $Int->$distanceOffline, paraméterekben adhatjuk meg a route distance értékeket. A funkció működéséhez mindkét config tömb elemnek léteznie kell numeric értékkel.

# Int:							(array) Array of WAN interfaces
# if:							(string) ISP (WAN) iterface name. The intervace have to have an synamic IP address.
# distanceOnline,
# distanceOffline:				(num) Route Distance in online and offline state. Both settings required to set route distance.
:local Int {
	{
		"if"="WAN1";
		"distanceOnline"=1;
		"distanceOffline"=11;
	};
	{
		"if"="WAN2";
		"distanceOnline"=2;
		"distanceOffline"=21;
	};
}

Address list frissítése

Ha a WAN IP-vel dolgozni szeretnénk, pl. tűzfal szabályban, akkor egy "address list"-ben lehet tárolni és frissíteni a dinamikus címet. Az $Int->$addresslist paraméter adja meg az address list nevét, melyben tárolni szerenénk az interfész címét. Megadható string-ként egy lista, vagy tömbként több lista is.

Dinamikus address list-et hoz létre a $defaultInterval paraméterben megadott lease time-al.

# Int:							(array) Array of WAN interfaces
# if:							(string) ISP (WAN) iterface name. The intervace have to have an synamic IP address.
# addresslist:					(string|array) IP address list(s) what will be refresh with address of interface and lease time as $defaultInterval.
:local Int {
	{
		"if"="WAN1";
		"addresslist"="WAN";
	};
	{
		"if"="WAN2";
		"addresslist"={
		    "WAN";
		    "WAN2";
		};
	};
}

DNS rekord frissítése

DNSSEC-et támogató névszerverek esetén lehetőség van egy domain "A" rekordjának frissítésére. A rekord frissítéshez szükség van egy kulcsra (authorization key / Transfer Signature key), amelyet a DNS szerver üzemeltetőjétől szerezhetünk be.

A $DNS... paraméter csoportban állíthatjuk be a DNS frissítéshez szükséges paramétereket.

Az $Int->$dns paraméterrel adhatjuk meg, mely WAN iterfész IP címe, mely DNS rekordon frissüljön. Megadható string-ként egy DNS rekord, vagy tömbként több DNS rekord is.

# DNS refresh parameters
# DNSserver:					(string) Nameserver host
# DNSdomain:					(string) Domain zone name
# DNSttl:						(num) Domain record TTL
# DNSkeyname:					(string) Key name
# DNSkey:						(string) Key
:local DNSserver "myNameServer";     # Nameserver host
:local DNSdomain "mydomain.com";     # Domain zone name
:local DNSttl 3600;                  # Domain record TTL
:local DNSkeyname "keyname";         # Key name
:local DNSkey "key";                 # Key

# Int:							(array) Array of WAN interfaces
# if:							(string) ISP (WAN) iterface name. The intervace have to have an synamic IP address.
# dns:							(string|array) Subdomain(s) what have to refresh with the address of interface according to DNS refresh parameters.
:local Int {
	{
		"if"="WAN1";
		"dns"="isp1";
	};
	{
		"if"="WAN2";
		"dns"={"isp2";"backupisp"};
	};
}

Dinamikus tunnel

A szkript EoIP, IPIP, és GRE tunnel interfészeket támogat.

Az $Int->$interfaces tömb paraméterrel adhatjuk meg, mely WAN iterfész IP címe, mely tunnel interfész(ek) local-address paramétere frissüljön.

Az $Int->$interfaces->$if paraméter a tunnel interész nevét adja meg.

$Int->$interfaces->$disableOffline paraméter true érték esetén a tunnel interfészt letiltja, amíg a WAN intefész offline, azaz feleslegesen nem fog próbálkozni a router a tunnel felépítésével.

Int->$interfaces->$localAddress paraméter true érték esetén a tunnel interfész local-adress paramétere felveszi a WAN intefész mindenkori IP címét. Így dinamikus tunnel alakítható ki.

# Int:							(array) Array of WAN interfaces
# if:							(string) ISP (WAN) iterface name. The intervace have to have an synamic IP address.
# interfaces:					(array) Interface(s) what have to manage by WAN states.
# interfaces->if:				(string) Interface name.
# interfaces->disableOffline:	(boolean) If true, when WAN interface goes offline, the interface will be disabled too.
# interfaces->localAddress:		(boolean) If true, the lacal-address will be refresh with WAN address. The interface type have to be tunnel.
:local Int {
	{
		"if"="WAN1";
        "interfaces"={
            {
                "if"="tunnel1";
                "disableOffline"=true;
    		    "localAddress"=true;
    		   };
        };
	};
	{
		"if"="WAN2";
        "interfaces"={
            {
                "if"="tunnel2";
                "localAddress"=true;
            };
        };
	};
}

VRRP prioritás

VRRP prioritást állít attól függően, hogy a WAN interfész online vagy offline. Ha a WAn offline, a prioriás növelésével VRRP Master állapot átatható a VRRP Backup párjának.

Az $Int->$interfaces tömb paraméterrel adhatjuk meg, mely WAN iterfész, mely vrrp interfész(ek) prioritása frissüljön.

Az $Int->$interfaces->$if paraméter a vrrp interész nevét adja meg.

$Int->$interfaces->$VRRPOnline és $Int->$interfaces->$VRRPOffline paraméterrel a vrrp interfészt online és offline prioritása adható meg.

# Int:							(array) Array of WAN interfaces
# if:							(string) ISP (WAN) iterface name. The intervace have to have an synamic IP address.
# interfaces:					(array) Interface(s) what have to manage by WAN states.
# interfaces->if:				(string) Interface name.
# interfaces->VRRPOnline,
# interfaces->VRRPOffline:		(num) VRRP interface priority in online and offline state. Both settings required and the interface type have to be vrrp.
:local Int {
	{
		"if"="WAN1";
        "interfaces"={
            {
                "if"="vrrp1";
    	    	"VRRPOnline"=1;
       	    	"VRRPOffline"=11;
   	    	};
        };
	};
	{
		"if"="WAN2";
        "interfaces"={
            {
                "if"="tunnel2";
                "localAddress"=true;
            };
            {
                "if"="vrrp2";
    	    	"VRRPOnline"=2;
       	    	"VRRPOffline"=21;
            };
        };
	};
}

Szkipt futtatás

Ha egyedi funkcióval szeretnénk kibővíteni a szkipt működését, lehetőség van szkript futtatására a WAN interfész eseményeinél.

Az $Int->$script paraméterben felsorolható egy vagy több RouterOS szkcript, mely a WAN interfész eseményeinél lefut. A paramétereket globális változóban kapja meg a futatandó szkript.

  • WANevent: Az esemény megnevezése. Lehetséges értékek: online, offline, IPCange
  • WANinterface: A WAN interfész neve.
  • WANnewIP, WANprevIP: A WAN interfész előző és az aktuális IP címe. Csak az IPCange eseménynél frissül!
# Int:							(array) Array of WAN interfaces
# if:							(string) ISP (WAN) iterface name. The intervace have to have an synamic IP address.
# script:						(string|array) Run script at events of WAN interface.
#								The fuction gives some parameters in global wariables:
#								WANevent: The  event when the script was called. Values: online, offline, IPCange
#								WANinterface: The WAN interface's name, same as "if" parameter.
#								WANnewIP, WANprevIP: The previous and actual IP address of WAN interface. Will be refresh only at IPCange event!
:local Int {
	{
		"if"="WAN1";
	    "script"={
	       "scriptname";
        };
	};
}