Multivan a směrování na Mikrotik RouterOS

úvod

Převzetí článku kromě ješitnosti podnítila i depresivní frekvence dotazů na toto téma v profilových skupinách ruskojazyčné telegramové komunity. Článek je zaměřen na začínající administrátory Mikrotik RouterOS (dále jen ROS). Zabývá se pouze multivanem, s důrazem na směrování. Bonusem je minimálně dostatečné nastavení pro zajištění bezpečného a pohodlného ovládání. Ti, kteří hledají odhalení témat front, vyvažování zátěže, vlanů, mostů, vícestupňové hloubkové analýzy stavu kanálu a podobně - nemusí ztrácet čas a úsilí čtením.

Počáteční data

Jako testovací subjekt byl vybrán pětiportový router Mikrotik s ROS verze 6.45.3. Bude směrovat provoz mezi dvěma místními sítěmi (LAN1 a LAN2) a třemi poskytovateli (ISP1, ISP2, ISP3). Kanál k ISP1 má statickou „šedou“ adresu, ISP2 – „bílou“, získanou přes DHCP, ISP3 – „bílou“ s autorizací PPPoE. Schéma zapojení je na obrázku:

Multivan a směrování na Mikrotik RouterOS

Úkolem je nakonfigurovat router MTK na základě schématu tak, aby:

  1. Poskytněte automatické přepnutí na poskytovatele zálohování. Hlavním poskytovatelem je ISP2, první rezerva je ISP1, druhá rezerva je ISP3.
  2. Zorganizujte síťový přístup LAN1 k Internetu pouze prostřednictvím ISP1.
  3. Poskytují možnost směrovat provoz z místních sítí do Internetu prostřednictvím vybraného poskytovatele na základě seznamu adres.
  4. Zajistit možnost publikování služeb z lokální sítě do Internetu (DSTNAT)
  5. Nastavte filtr brány firewall tak, aby poskytoval minimální dostatečné zabezpečení z internetu.
  6. Router může vydávat vlastní provoz prostřednictvím kteréhokoli ze tří poskytovatelů v závislosti na zvolené zdrojové adrese.
  7. Ujistěte se, že pakety odpovědí jsou směrovány do kanálu, ze kterého přišly (včetně LAN).

Poznámka. Router nakonfigurujeme „od nuly“, abychom zaručili absenci překvapení v počátečních konfiguracích „z krabice“, které se mění z verze na verzi. Jako konfigurační nástroj byl zvolen Winbox, kde se změny budou vizuálně zobrazovat. Samotné nastavení se nastaví pomocí příkazů v terminálu Winbox. Fyzické připojení pro konfiguraci je provedeno přímým připojením k rozhraní Ether5.

Trochu úvah o tom, co je multivan, je to problém nebo jsou mazaní chytří lidé kolem splétání konspiračních sítí

Zvídavý a pozorný správce, který si takové nebo podobné schéma nastavuje sám, najednou zjistí, že už to normálně funguje. Ano, ano, bez vašich vlastních směrovacích tabulek a dalších pravidel směrování, kterých je většina článků na toto téma plná. Pojďme zkontrolovat?

Můžeme nakonfigurovat adresování na rozhraních a výchozích branách? Ano:

Na ISP1 byla adresa a brána zaregistrována vzdálenost = 2 и check-gateway=ping.
Na ISP2 je výchozí nastavení klienta dhcp - podle toho bude vzdálenost rovna jedné.
Na ISP3 v nastavení klienta pppoe, když add-default-route=ano dát default-route-distance=3.

Nezapomeňte zaregistrovat NAT na výstupu:

/ip firewall nat add action=masquerade chain=srcnat out-interface-list=WAN

V důsledku toho se uživatelé místních stránek baví stahováním koček prostřednictvím hlavního poskytovatele ISP2 a existuje rezervace kanálu pomocí mechanismu zkontrolovat bránu Viz poznámka 1

Bod 1 úkolu je realizován. Kde je multivan se svými značkami? Ne…

Dále. Potřebujete uvolnit konkrétní klienty ze sítě LAN prostřednictvím ISP1:

/ip firewall mangle add action=route chain=prerouting dst-address-list=!BOGONS
passthrough=yes route-dst=100.66.66.1 src-address-list=Via_ISP1
/ip firewall mangle add action=route chain=prerouting dst-address-list=!BOGONS
passthrough=no route-dst=100.66.66.1 src-address=192.168.88.0/24

Body 2 a 3 úkolu byly implementovány. Štítky, razítka, pravidla trasy, kde jsi?!

Potřebujete poskytnout přístup ke svému oblíbenému OpenVPN serveru s adresou 172.17.17.17 pro klienty z internetu? Prosím:

/ip cloud set ddns-enabled=yes

Jako peer dáváme klientovi výstupní výsledek: „:put [ip cloud get dns-name]"

Registrujeme přesměrování portů z internetu:

/ip firewall nat add action=dst-nat chain=dstnat dst-port=1194
in-interface-list=WAN protocol=udp to-addresses=172.17.17.17

Bod 4 je připraven.

K bodu 5 jsme nastavili firewall a další zabezpečení, zároveň jsme rádi, že uživatelům již vše funguje a sáhneme po nádobě s oblíbeným nápojem ...
A! Tunely jsou zapomenuty.

l2tp-client, nakonfigurovaný podle článku google, se dostal do vašeho oblíbeného holandského VDS? Ano.
l2tp-server s IPsec se zvedl a klienti podle DNS-name z IP Cloudu (viz výše.) lpí? Ano.
Opřeni v křesle, popíjejíc drink, líně zvažujeme body 6 a 7 úkolu. Myslíme si – potřebujeme to? Přesto to tak funguje (c) ... Takže pokud to stále není potřeba, je to. Multivan implementován.

Co je to multivan? Jedná se o připojení několika internetových kanálů k jednomu routeru.

Nemusíte číst článek dál, protože co tam může být kromě předvádění pochybné použitelnosti?

Pro ty, kteří zůstávají, které zajímají body 6 a 7 úkolu a navíc cítí svědění perfekcionismu, se ponoříme hlouběji.

Nejdůležitějším úkolem implementace multivanu je správné směrování dopravy. Totiž: bez ohledu na to, které (nebo které) Viz. poznámka 3 Kanál (kanály) ISP se podívá na výchozí trasu na našem routeru, měl by vrátit odpověď na přesný kanál, ze kterého paket přišel. Úkol je jasný. Kde je problém? V jednoduché místní síti je úkol stejný, ale nikdo se neobtěžuje s dalšími nastaveními a necítí potíže. Rozdíl je v tom, že jakýkoli směrovatelný uzel na internetu je přístupný přes každý z našich kanálů, a ne přes striktně specifický, jako v jednoduché LAN. A „problém“ je v tom, že pokud k nám přišel požadavek na IP adresu ISP3, pak v našem případě odpověď projde kanálem ISP2, protože tam je směrována výchozí brána. Odejde a bude poskytovatelem vyřazen jako nesprávný. Problém byl identifikován. jak to vyřešit?

Řešení je rozděleno do tří fází:

  1. Přednastavení. V této fázi se nastaví základní nastavení routeru: lokální síť, firewall, seznamy adres, hairpin NAT atd.
  2. Multivan. V této fázi budou označena potřebná spojení a roztříděna do směrovacích tabulek.
  3. Připojení k ISP. V této fázi budou nakonfigurována rozhraní zajišťující připojení k internetu, bude aktivováno směrování a mechanismus rezervace internetových kanálů.

1. Přednastavení

1.1. Konfiguraci routeru vymažeme příkazem:

/system reset-configuration skip-backup=yes no-defaults=yes

Souhlasím s "Nebezpečný! Přesto resetovat? [y/N]:“ a po restartu se připojíme k Winboxu přes MAC. V této fázi je konfigurace a uživatelská základna vymazána.

1.2. Vytvořit nového uživatele:

/user add group=full name=knight password=ultrasecret comment=”Not horse”

přihlaste se pod ním a smažte výchozí:

/user remove admin

Poznámka. Autor považuje za bezpečnější a doporučuje k použití odstranění a nezakázání výchozího uživatele.

1.3. Vytváříme základní seznamy rozhraní pro pohodlí provozu ve firewallu, nastavení zjišťování a dalších MAC serverů:

/interface list add name=WAN comment="For Internet"
/interface list add name=LAN comment="For Local Area"

Podepisování rozhraní s komentáři

/interface ethernet set ether1 comment="to ISP1"
/interface ethernet set ether2 comment="to ISP2"
/interface ethernet set ether3 comment="to ISP3"
/interface ethernet set ether4 comment="to LAN1"
/interface ethernet set ether5 comment="to LAN2"

a vyplňte seznamy rozhraní:

/interface list member add interface=ether1 list=WAN comment=ISP1
/interface list member add interface=ether2 list=WAN comment=ISP2 
/interface list member add interface=ether3 list=WAN comment="to ISP3"
/interface list member add interface=ether4 list=LAN  comment="LAN1"
/interface list member add interface=ether5 list=LAN  comment="LAN2"

Poznámka. Psaní srozumitelných komentářů stojí za čas strávený nad tím a navíc výrazně usnadňuje odstraňování problémů a pochopení konfigurace.

Autor považuje za nutné z bezpečnostních důvodů přidat rozhraní ether3 do seznamu rozhraní „WAN“ i přes to, že přes něj protokol ip neprojde.

Nezapomeňte, že poté, co je PPP rozhraní aktivováno na ether3, bude také muset být přidáno do seznamu rozhraní „WAN“

1.4. Skryjeme router před detekcí sousedství a ovládáním ze sítí poskytovatelů přes MAC:

/ip neighbor discovery-settings set discover-interface-list=!WAN
/tool mac-server set allowed-interface-list=LAN
/tool mac-server mac-winbox set allowed-interface-list=LAN

1.5. Vytváříme minimální dostatečnou sadu pravidel filtrování brány firewall pro ochranu routeru:

/ip firewall filter add action=accept chain=input comment="Related Established Untracked Allow" 
connection-state=established,related,untracked

(pravidlo poskytuje oprávnění pro navázaná a související připojení, která jsou iniciována jak z připojených sítí, tak ze samotného routeru)

/ip firewall filter add action=accept chain=input comment="ICMP from ALL" protocol=icmp

(ping a nejen ping. Všechny icmp jsou povoleny. Velmi užitečné pro hledání problémů s MTU)

/ip firewall filter add action=drop chain=input comment="All other WAN Drop" in-interface-list=WAN

(pravidlo, které uzavírá vstupní řetězec, zakazuje vše ostatní, co pochází z internetu)

/ip firewall filter add action=accept chain=forward 
comment="Established, Related, Untracked allow" 
connection-state=established,related,untracked

(pravidlo povoluje navázaná a související připojení, která procházejí routerem)

/ip firewall filter add action=drop chain=forward comment="Invalid drop" connection-state=invalid

(pravidlo resetuje spojení s connection-state=invalid procházející routerem. Mikrotik to důrazně doporučuje, ale v některých vzácných situacích může blokovat užitečný provoz)

/ip firewall filter add action=drop chain=forward comment="Drop all from WAN not DSTNATed"  
connection-nat-state=!dstnat connection-state=new in-interface-list=WAN

(pravidlo zakazuje, aby pakety, které přicházejí z internetu a neprošly procedurou dstnat, prošly routerem. To ochrání místní sítě před narušiteli, kteří jsou ve stejné vysílací doméně s našimi externími sítěmi a zaregistrují naše externí IP adresy jako bránu, a tak se pokuste „prozkoumat“ naše místní sítě.)

Poznámka. Předpokládejme, že sítě LAN1 a LAN2 jsou důvěryhodné a provoz mezi nimi az nich není filtrován.

1.6. Vytvořte seznam se seznamem nesměrovatelných sítí:

/ip firewall address-list
add address=0.0.0.0/8 comment=""This" Network" list=BOGONS
add address=10.0.0.0/8 comment="Private-Use Networks" list=BOGONS
add address=100.64.0.0/10 comment="Shared Address Space. RFC 6598" list=BOGONS
add address=127.0.0.0/8 comment=Loopback list=BOGONS
add address=169.254.0.0/16 comment="Link Local" list=BOGONS
add address=172.16.0.0/12 comment="Private-Use Networks" list=BOGONS
add address=192.0.0.0/24 comment="IETF Protocol Assignments" list=BOGONS
add address=192.0.2.0/24 comment=TEST-NET-1 list=BOGONS
add address=192.168.0.0/16 comment="Private-Use Networks" list=BOGONS
add address=198.18.0.0/15 comment="Network Interconnect Device Benchmark Testing"
 list=BOGONS
add address=198.51.100.0/24 comment=TEST-NET-2 list=BOGONS
add address=203.0.113.0/24 comment=TEST-NET-3 list=BOGONS
add address=224.0.0.0/4 comment=Multicast list=BOGONS
add address=192.88.99.0/24 comment="6to4 Relay Anycast" list=BOGONS
add address=240.0.0.0/4 comment="Reserved for Future Use" list=BOGONS
add address=255.255.255.255 comment="Limited Broadcast" list=BOGONS

(Toto je seznam adres a sítí, které nelze směrovat do Internetu a podle toho se bude řídit.)

Poznámka. Seznam se může změnit, proto vám doporučuji pravidelně kontrolovat relevanci.

1.7. Nastavte DNS pro samotný router:

/ip dns set servers=1.1.1.1,8.8.8.8

Poznámka. V aktuální verzi ROS mají dynamické servery přednost před statickými. Požadavek na rozlišení názvu je odeslán na první server v pořadí v seznamu. Přechod na další server se provede, když je aktuální nedostupný. Časový limit je velký - více než 5 sekund. Návrat zpět, když je „padlý server“ obnoven, nenastává automaticky. Vzhledem k tomuto algoritmu a přítomnosti multivanu autor doporučuje nepoužívat servery poskytované poskytovateli.

1.8. Nastavte místní síť.
1.8.1. Nakonfigurujeme statické IP adresy na rozhraních LAN:

/ip address add interface=ether4 address=192.168.88.254/24 comment="LAN1 IP"
/ip address add interface=ether5 address=172.16.1.0/23 comment="LAN2 IP"

1.8.2. Pravidla pro směrování do našich lokálních sítí nastavujeme prostřednictvím hlavní směrovací tabulky:

/ip route rule add dst-address=192.168.88.0/24 table=main comment=”to LAN1”
/ip route rule add dst-address=172.16.0.0/23 table=main comment="to LAN2"

Poznámka. Toto je jeden z rychlých a snadných způsobů přístupu k adresám LAN se zdroji externích IP adres rozhraní routerů, které neprocházejí výchozí cestou.

1.8.3. Povolit Hairpin NAT pro LAN1 a LAN2:

/ip firewall nat add action=src-nat chain=srcnat comment="Hairpin to LAN1" 
out-interface=ether4 src-address=192.168.88.0/24 to-addresses=192.168.88.254
/ip firewall nat add action=src-nat chain=srcnat comment="Hairpin to LAN2" 
out-interface=ether5 src-address=172.16.0.0/23 to-addresses=172.16.1.0

Poznámka. To vám umožňuje přistupovat ke zdrojům (dstnat) přes externí IP, když jste uvnitř sítě.

2. Vlastně implementace velmi správného multivanu

K vyřešení problému „odpovědět odkud se ptali“ použijeme dva nástroje ROS: značka připojení и směrovací značka. značka připojení umožňuje označit požadované připojení a následně s tímto štítkem pracovat jako podmínku pro aplikaci směrovací značka. A už s směrovací značka možné pracovat v ip cesta и pravidla trasy. Vymysleli jsme nástroje, nyní se musíte rozhodnout, která spojení označit - jednou, přesně kde označit - dvě.

U prvního je vše jednoduché - musíme označit všechna připojení, která přicházejí do routeru z internetu přes příslušný kanál. V našem případě to budou tři štítky (podle počtu kanálů): „conn_isp1“, „conn_isp2“ a „conn_isp3“.

Nuance s druhým je, že příchozí připojení budou dvou typů: tranzitní a ta, která jsou určena pro samotný router. Mechanismus značky připojení funguje v tabulce mandl. Zvažte pohyb balíčku na zjednodušeném diagramu, laskavě sestaveném specialisty zdroje mikrotik-trainings.com (nikoli reklama):

Multivan a směrování na Mikrotik RouterOS

Podle šipek vidíme, že paket přicházející na „Vstupní rozhraní“, prochází řetězcem “Předběžná trasa“ a teprve poté se dělí na tranzitní a místní v bloku “Rozhodnutí o směrování". Proto, abychom zabili dvě mouchy jednou ranou, používáme Značka připojení v tabulce Předběžné směrování Mangle řetězy Předběžná trasa.

Poznámka:. V ROS jsou štítky „Směrovací značka“ uvedeny jako „Tabulka“ v části Ip/Routes/Rules a jako „Směrovací značka“ v ostatních částech. To může vnést do porozumění určitý zmatek, ale ve skutečnosti je to totéž a je to analogie rt_tables v iproute2 na linuxu.

2.1. Označujeme příchozí připojení od každého z poskytovatelů:

/ip firewall mangle add action=mark-connection chain=prerouting 
comment="Connmark in from ISP1" connection-mark=no-mark in-interface=ether1  new-connection-mark=conn_isp1 passthrough=no

/ip firewall mangle add action=mark-connection chain=prerouting 
comment="Connmark in from ISP2" connection-mark=no-mark in-interface=ether2  new-connection-mark=conn_isp2 passthrough=no

/ip firewall mangle add action=mark-connection chain=prerouting 
comment="Connmark in from ISP3" connection-mark=no-mark in-interface=pppoe-isp3  new-connection-mark=conn_isp3 passthrough=no

Poznámka. Abych neoznačoval již označená spojení, používám místo connection-state=new podmínku connection-mark=no-mark, protože si myslím, že je to správnější, stejně jako odmítnutí zanechání neplatných spojení ve vstupním filtru.


passthrough=no - protože v této metodě implementace je vyloučeno opětovné označování a pro urychlení můžete přerušit výčet pravidel po první shodě.

Je třeba si uvědomit, že do routování zatím nijak nezasahujeme. Nyní zbývají pouze fáze přípravy. Další fází implementace bude zpracování tranzitního provozu, který se vrací po navázaném spojení z cíle v lokální síti. Tito. ty pakety, které (viz schéma) prošly routerem na cestě:

“Vstupní rozhraní”=>”Předsměrování”=>”Rozhodnutí o směrování”=>”Vpřed”=>”Směrování příspěvku”=>”Výstupní rozhraní” a dostali se ke svému adresátovi v místní síti.

Důležité! V ROS neexistuje logické rozdělení na vnější a vnitřní rozhraní. Pokud sledujeme cestu paketu odpovědi podle výše uvedeného diagramu, bude následovat stejnou logickou cestu jako požadavek:

“Vstupní rozhraní”=>”Předsměrování”=>”Rozhodnutí o směrování”=>”Vpřed”=>”Směrování příspěvku”=>”Výstupní rozhraní” jen na žádost"Vstupní rozhraní” bylo rozhraní ISP a pro odpověď - LAN

2.2. Tranzitní provoz s odpovědí směřujeme do odpovídajících směrovacích tabulek:

/ip firewall mangle add action=mark-routing chain=prerouting 
comment="Routemark transit out via ISP1" connection-mark=conn_isp1 
dst-address-type=!local in-interface-list=!WAN new-routing-mark=to_isp1 passthrough=no

/ip firewall mangle add action=mark-routing chain=prerouting 
comment="Routemark transit out via ISP2" connection-mark=conn_isp2 
dst-address-type=!local in-interface-list=!WAN new-routing-mark=to_isp2 passthrough=no

/ip firewall mangle add action=mark-routing chain=prerouting 
comment="Routemark transit out via ISP3" connection-mark=conn_isp3 
dst-address-type=!local in-interface-list=!WAN new-routing-mark=to_isp3 passthrough=no

Komentář. in-interface-list=!WAN - pracujeme pouze s provozem z lokální sítě a dst-address-type=!local, který nemá cílovou adresu adresy rozhraní samotného routeru.

Totéž pro místní pakety, které přišly do routeru po cestě:

“Vstupní rozhraní”=>”Předsměrování”=>”Rozhodnutí o směrování”=>”Vstup”=>”Místní proces”

Důležité! Odpověď bude probíhat následujícím způsobem:

”Místní proces”=>”Rozhodnutí o směrování”=>”Výstup”=>”Směrování příspěvku”=>”Výstupní rozhraní”

2.3. Lokální provoz s odezvou směrujeme do odpovídajících směrovacích tabulek:

/ip firewall mangle add action=mark-routing chain=output 
comment="Routemark local out via ISP1" connection-mark=conn_isp1 dst-address-type=!local 
new-routing-mark=to_isp1 passthrough=no

/ip firewall mangle add action=mark-routing chain=output 
comment="Routemark local out via ISP2" connection-mark=conn_isp2 dst-address-type=!local 
new-routing-mark=to_isp2 passthrough=no

/ip firewall mangle add action=mark-routing chain=output 
comment="Routemark local out via ISP3" connection-mark=conn_isp3 dst-address-type=!local 
new-routing-mark=to_isp3 passthrough=no

V této fázi lze úkol připravit odeslání odpovědi na internetový kanál, ze kterého požadavek přišel, považovat za vyřešený. Vše je označeno, označeno a připraveno k směrování.
Vynikajícím „vedlejším“ efektem tohoto nastavení je možnost pracovat s přesměrováním portů DSNAT od obou poskytovatelů (ISP2, ISP3) současně. Vůbec ne, protože na ISP1 máme nesměrovatelnou adresu. Tento efekt je důležitý například pro poštovní server se dvěma MX, které se dívají na různé internetové kanály.

K odstranění nuancí provozu lokálních sítí s externími IP routery používáme řešení z odstavců. 1.8.2 a 3.1.2.6.

Kromě toho můžete použít nástroj se značkami k vyřešení odstavce 3 problému. Implementujeme to takto:

2.4. Provoz od místních klientů směrujeme ze směrovacích seznamů do příslušných tabulek:

/ip firewall mangle add action=mark-routing chain=prerouting 
comment="Address List via ISP1" dst-address-list=!BOGONS new-routing-mark=to_isp1 
passthrough=no src-address-list=Via_ISP1

/ip firewall mangle add action=mark-routing chain=prerouting 
comment="Address List via ISP2" dst-address-list=!BOGONS new-routing-mark=to_isp2 
passthrough=no src-address-list=Via_ISP2

/ip firewall mangle add action=mark-routing chain=prerouting 
comment="Address List via ISP3" dst-address-list=!BOGONS new-routing-mark=to_isp3 
passthrough=no src-address-list=Via_ISP3

Ve výsledku to vypadá asi takto:

Multivan a směrování na Mikrotik RouterOS

3. Nastavte připojení k ISP a povolte značkové směrování

3.1. Nastavte připojení k ISP1:
3.1.1. Nakonfigurujte statickou IP adresu:

/ip address add interface=ether1 address=100.66.66.2/30 comment="ISP1 IP"

3.1.2. Nastavit statické směrování:
3.1.2.1. Přidat výchozí „nouzovou“ trasu:

/ip route add comment="Emergency route" distance=254 type=blackhole

Poznámka. Tato trasa umožňuje provozu z místních procesů projít fází rozhodnutí o trase bez ohledu na stav propojení kteréhokoli z poskytovatelů. Nuance odchozího místního provozu spočívá v tom, že aby se paket mohl alespoň někam přesunout, musí mít hlavní směrovací tabulka aktivní cestu k výchozí bráně. Pokud ne, pak bude balíček jednoduše zničen.

Jako rozšíření nástroje zkontrolovat bránu Pro hlubší analýzu stavu kanálu navrhuji použít metodu rekurzivní cesty. Podstatou metody je, že říkáme routeru, aby hledal cestu ke své bráně ne přímo, ale přes mezilehlou bránu. 4.2.2.1, 4.2.2.2 a 4.2.2.3 budou vybrány jako takové „testovací“ brány pro ISP1, ISP2 a ISP3.

3.1.2.2. Cesta na „ověřovací“ adresu:

/ip route add check-gateway=ping comment="For recursion via ISP1"  
distance=1 dst-address=4.2.2.1 gateway=100.66.66.1 scope=10

Poznámka. Snižujeme hodnotu oboru na výchozí v cílovém rozsahu ROS, abychom v budoucnu mohli používat 4.2.2.1 jako rekurzivní bránu. Zdůrazňuji: rozsah trasy na „testovací“ adresu musí být menší nebo roven cílovému rozsahu trasy, která bude odkazovat na testovací.

3.1.2.3. Rekurzivní výchozí trasa pro provoz bez značky směrování:

/ip route add comment="Unmarked via ISP1" distance=2 gateway=4.2.2.1

Poznámka. Hodnota distance=2 se používá, protože ISP1 je deklarován jako první záloha podle podmínek úlohy.

3.1.2.4. Rekurzivní výchozí trasa pro provoz se značkou směrování „to_isp1“:

/ip route add comment="Marked via ISP1 Main" distance=1 gateway=4.2.2.1 
routing-mark=to_isp1

Poznámka. Ve skutečnosti si zde konečně začínáme užívat plody přípravných prací, které byly provedeny v odstavci 2.


Na této trase bude veškerý provoz, který má označenou cestu „to_isp1“, směrován na bránu prvního poskytovatele, bez ohledu na to, která výchozí brána je aktuálně aktivní pro hlavní tabulku.

3.1.2.5. První záložní rekurzivní výchozí trasa pro provoz označený ISP2 a ISP3:

/ip route add comment="Marked via ISP2 Backup1" distance=2 gateway=4.2.2.1 
routing-mark=to_isp2
/ip route add comment="Marked via ISP3 Backup1" distance=2 gateway=4.2.2.1 
routing-mark=to_isp3

Poznámka. Tyto trasy jsou potřebné mimo jiné k rezervaci provozu z místních sítí, které jsou členy seznamu adres „to_isp*“'

3.1.2.6. Registrujeme trasu pro místní provoz routeru do Internetu prostřednictvím ISP1:

/ip route rule add comment="From ISP1 IP to Inet" src-address=100.66.66.2 table=to_isp1

Poznámka. V kombinaci s pravidly z odstavce 1.8.2 poskytuje přístup k požadovanému kanálu s daným zdrojem. To je důležité pro vytváření tunelů, které určují místní IP adresu (EoIP, IP-IP, GRE). Vzhledem k tomu, že pravidla v pravidlech ip route se provádějí shora dolů, až do prvního splnění podmínek, pak by toto pravidlo mělo následovat za pravidly z článku 1.8.2.

3.1.3. Registrujeme pravidlo NAT pro odchozí provoz:

/ip firewall nat add action=src-nat chain=srcnat comment="NAT via ISP1"  
ipsec-policy=out,none out-interface=ether1 to-addresses=100.66.66.2

Poznámka. NATim vše, co vyjde, kromě toho, co se dostane do zásad IPsec. Snažím se nepoužívat akce=maškaráda, pokud to není nezbytně nutné. Je pomalejší a náročnější na zdroje než src-nat, protože počítá adresu NAT pro každé nové připojení.

3.1.4. Klienty ze seznamu, kteří mají zakázaný přístup přes jiné poskytovatele, posíláme přímo na bránu poskytovatele ISP1.

/ip firewall mangle add action=route chain=prerouting comment="Address List via ISP1 only" 
dst-address-list=!BOGONS passthrough=no route-dst=100.66.66.1 
src-address-list=Via_only_ISP1 place-before=0

Poznámka. action=route má vyšší prioritu a je aplikováno před ostatními směrovacími pravidly.


place-before=0 - umístí naše pravidlo na první místo v seznamu.

3.2. Nastavte připojení k ISP2.

Vzhledem k tomu, že poskytovatel ISP2 nám poskytuje nastavení prostřednictvím DHCP, je rozumné provést potřebné změny pomocí skriptu, který se spustí při spuštění klienta DHCP:

/ip dhcp-client
add add-default-route=no disabled=no interface=ether2 script=":if ($bound=1) do={r
    n    /ip route add check-gateway=ping comment="For recursion via ISP2" distance=1 
           dst-address=4.2.2.2/32 gateway=$"gateway-address" scope=10r
    n    /ip route add comment="Unmarked via ISP2" distance=1 gateway=4.2.2.2;r
    n    /ip route add comment="Marked via ISP2 Main" distance=1 gateway=4.2.2.2 
           routing-mark=to_isp2;r
    n    /ip route add comment="Marked via ISP1 Backup1" distance=2 gateway=4.2.2.2 
           routing-mark=to_isp1;r
    n    /ip route add comment="Marked via ISP3 Backup2" distance=3 gateway=4.2.2.2 
           routing-mark=to_isp3;r
    n    /ip firewall nat add action=src-nat chain=srcnat ipsec-policy=out,none 
           out-interface=$"interface" to-addresses=$"lease-address" comment="NAT via ISP2" 
           place-before=1;r
    n    if ([/ip route rule find comment="From ISP2 IP to Inet"] ="") do={r
    n        /ip route rule add comment="From ISP2 IP to Inet" 
               src-address=$"lease-address" table=to_isp2 r
    n    } else={r
    n       /ip route rule set [find comment="From ISP2 IP to Inet"] disabled=no 
              src-address=$"lease-address"r
    n    }      r
    n} else={r
    n   /ip firewall nat remove  [find comment="NAT via ISP2"];r
    n   /ip route remove [find comment="For recursion via ISP2"];r
    n   /ip route remove [find comment="Unmarked via ISP2"];r
    n   /ip route remove [find comment="Marked via ISP2 Main"];r
    n   /ip route remove [find comment="Marked via ISP1 Backup1"];r
    n   /ip route remove [find comment="Marked via ISP3 Backup2"];r
    n   /ip route rule set [find comment="From ISP2 IP to Inet"] disabled=yesr
    n}r
    n" use-peer-dns=no use-peer-ntp=no

Samotný skript v okně Winbox:

Multivan a směrování na Mikrotik RouterOS
Poznámka. První část skriptu se spustí po úspěšném získání zapůjčení, druhá po uvolnění zapůjčení.Viz poznámka 2

3.3. Nastavili jsme připojení k poskytovateli ISP3.

Vzhledem k tomu, že poskytovatel nastavení nám poskytuje dynamiku, je rozumné provést potřebné změny pomocí skriptů, které se spustí po zvýšení rozhraní ppp a po pádu.

3.3.1. Nejprve nakonfigurujeme profil:

/ppp profile
add comment="for PPPoE to ISP3" interface-list=WAN name=isp3_client 
on-down="/ip firewall nat remove  [find comment="NAT via ISP3"];r
    n/ip route remove [find comment="For recursion via ISP3"];r
    n/ip route remove [find comment="Unmarked via ISP3"];r
    n/ip route remove [find comment="Marked via ISP3 Main"];r
    n/ip route remove [find comment="Marked via ISP1 Backup2"];r
    n/ip route remove [find comment="Marked via ISP2 Backup2"];r
    n/ip route rule set [find comment="From ISP3 IP to Inet"] disabled=yes;" 
on-up="/ip route add check-gateway=ping comment="For recursion via ISP3" distance=1 
    dst-address=4.2.2.3/32 gateway=$"remote-address" scope=10r
    n/ip route add comment="Unmarked via ISP3" distance=3 gateway=4.2.2.3;r
    n/ip route add comment="Marked via ISP3 Main" distance=1 gateway=4.2.2.3 
    routing-mark=to_isp3;r
    n/ip route add comment="Marked via ISP1 Backup2" distance=3 gateway=4.2.2.3 
    routing-mark=to_isp1;r
    n/ip route add comment="Marked via ISP2 Backup2" distance=3 gateway=4.2.2.3 
    routing-mark=to_isp2;r
    n/ip firewall mangle set [find comment="Connmark in from ISP3"] 
    in-interface=$"interface";r
    n/ip firewall nat add action=src-nat chain=srcnat ipsec-policy=out,none 
    out-interface=$"interface" to-addresses=$"local-address" comment="NAT via ISP3" 
    place-before=1;r
    nif ([/ip route rule find comment="From ISP3 IP to Inet"] ="") do={r
    n   /ip route rule add comment="From ISP3 IP to Inet" src-address=$"local-address" 
    table=to_isp3 r
    n} else={r
    n   /ip route rule set [find comment="From ISP3 IP to Inet"] disabled=no 
    src-address=$"local-address"r
    n};r
    n"

Samotný skript v okně Winbox:

Multivan a směrování na Mikrotik RouterOS
Poznámka. Řetězec
/ip firewall mangle set [find comment="Connmark in from ISP3"] in-interface=$"interface";
umožňuje správně zvládnout přejmenování rozhraní, protože pracuje se svým kódem a ne se zobrazovaným názvem.

3.3.2. Nyní pomocí profilu vytvořte připojení ppp:

/interface pppoe-client add allow=mschap2 comment="to ISP3" disabled=no 
interface=ether3 name=pppoe-isp3 password=isp3_pass profile=isp3_client user=isp3_client

Na závěr nastavíme hodiny:

/system ntp client set enabled=yes server-dns-names=0.pool.ntp.org,1.pool.ntp.org,2.pool.ntp.org

Pro ty, kteří dočetli až do konce

Navrhovaný způsob realizace multivanu je osobní preferencí autora a není jediným možným. Sada nástrojů ROS je obsáhlá a flexibilní, což na jedné straně působí potíže začátečníkům a na druhé straně je důvodem jeho oblíbenosti. Učte se, zkoušejte, objevujte nové nástroje a řešení. Například jako aplikaci získaných znalostí je možné nahradit nástroj v této implementaci multivanu kontrolní brána s rekurzivními cestami netwatch.

Poznámky

  1. kontrolní brána - mechanismus, který umožňuje deaktivovat trasu po dvou po sobě jdoucích neúspěšných kontrolách dostupnosti brány. Kontrola se provádí jednou za 10 sekund plus časový limit odezvy. Celkově se vlastní čas sepnutí pohybuje v rozmezí 20-30 sekund. Pokud takové načasování přepnutí není dostatečné, existuje možnost použít nástroj netwatch, kde lze časovač kontroly nastavit ručně. kontrolní brána nespustí se při občasné ztrátě paketů na lince.

    Důležité! Deaktivace primární trasy deaktivuje všechny ostatní trasy, které na ni odkazují. Proto pro ně uvést check-gateway=ping není nutné.

  2. Stává se, že dojde k selhání v mechanismu DHCP, který vypadá, jako by klient uvízl ve stavu obnovení. V tomto případě druhá část skriptu nebude fungovat, ale nebude bránit provozu ve správné chůzi, protože stát sleduje odpovídající rekurzivní trasu.
  3. ECMP (stejné náklady na více cest) - v ROS je možné nastavit trasu s více branami a stejnou vzdáleností. V tomto případě budou připojení distribuována mezi kanály pomocí kruhového algoritmu v poměru k počtu specifikovaných bran.

Za podnět k napsání článku pomozte při formování jeho struktury a umístění akcentů - osobní poděkování Evgenymu @jscar

Zdroj: www.habr.com