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

Innen: IT documentation
48. sor: 48. sor:
:local Int {
:local Int {
{
{
if="WAN1";
"if"="WAN1";
};
};
{
{
if="WAN2";
"if"="WAN2";
};
};
}
}
62. sor: 62. sor:
:local Int {
:local Int {
{
{
if="WAN1";
"if"="WAN1";
distanceOnline=1;
"distanceOnline"=1;
distanceOffline=11;
"distanceOffline"=11;
};
};
{
{
if="WAN2";
"if"="WAN2";
distanceOnline=2;
"distanceOnline"=2;
distanceOffline=21;
"distanceOffline"=21;
};
};
}
}
78. sor: 78. sor:
:local Int {
:local Int {
{
{
if="WAN1";
"if"="WAN1";
addresslist="WAN";
"addresslist"="WAN";
};
};
{
{
if="WAN2";
"if"="WAN2";
addresslist="WAN";
"addresslist"="WAN";
};
};
}
}
101. sor: 101. sor:
:local Int {
:local Int {
{
{
if="WAN1";
"if"="WAN1";
dns={
"dns"={
"isp1";
"isp1";
};
};
};
};
{
{
if="WAN2";
"if"="WAN2";
dns={
"dns"={
"isp2";
"isp2";
};
};
119. sor: 119. sor:
:local Int {
:local Int {
{
{
if="WAN1";
"if"="WAN1";
         tun={
         "tun"={
             if="tunnel1";
             "if"="tunnel1";
             disableOffline=true;
             "disableOffline"=true;
         };
         };
};
};
{
{
if="WAN2";
"if"="WAN2";
         tun={
         "tun"={
             if="tunnel2";
             "if"="tunnel2";
         };
         };
};
};

A lap 2022. január 31., 17:34-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.

:local scriptName "DynamicWAN"		# This script name in Mikrotik
:local defaultInterval 00:01:00		# Interval of schelude

É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.

:global logFacility "info"		    # none,debug,info,warn,error
:global emailFacility "none"	    # none,debug,info,warn,error

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

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.

:local pingSites {
   "example.com";
   8.8.8.8;
}

: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.

: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. Dinamikus address list-et hoz létre a $defaultInterval paraméterben megdott lease time-al. Interfézenként megdható több address list, és minden interfészhez ugyanaz az address list is.

:local Int {
	{
		"if"="WAN1";
		"addresslist"="WAN";
	};
	{
		"if"="WAN2";
		"addresslist"="WAN";
	};
}

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.

# DNS refresh parameters
: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

:local Int {
	{
		"if"="WAN1";
		"dns"={
			"isp1";
		};
	};
	{
		"if"="WAN2";
		"dns"={
			"isp2";
		};
	};
}

Dinamikus tunnel

A szkript EoIP, IPIP, és GRE tunnel interfészeket támogat. Az $Int->$tun paraméterrel adhatjuk meg, mely WAN iterfész IP címe, mely tunnel interfészek local-address paramétere frissüljön. Az $Int->$tun->$if paraméter a tunnel interész nevét adja meg. $Int->$tun->$disableOffline paraméter true esetén a tunnel interfészt letiltja, amíg a WAN intefész offline.

:local Int {
	{
		"if"="WAN1";
        "tun"={
            "if"="tunnel1";
            "disableOffline"=true;
        };
	};
	{
		"if"="WAN2";
        "tun"={
            "if"="tunnel2";
        };
	};
}