Multivan en roetering op Mikrotik RouterOS

Inleiding

Die opneem van die artikel, benewens ydelheid, is aangespoor deur die neerdrukkende frekwensie van vrae oor hierdie onderwerp in die profielgroepe van die Russiessprekende telegramgemeenskap. Die artikel is gemik op nuweling Mikrotik RouterOS (hierna verwys as ROS) administrateurs. Dit handel net oor die multivan, met die klem op roetering. As 'n bonus is daar minimaal voldoende instellings om veilige en gerieflike werking te verseker. Diegene wat op soek is na bekendmaking van die onderwerpe van toue, vragbalansering, vlans, brûe, multi-stadium diep analise van die toestand van die kanaal en dies meer - mag nie tyd en moeite mors om te lees nie.

Aanvanklike gegewens

As 'n proefpersoon is 'n vyfpoort Mikrotik-roeteerder met ROS-weergawe 6.45.3 gekies. Dit sal verkeer tussen twee plaaslike netwerke (LAN1 en LAN2) en drie verskaffers (ISP1, ISP2, ISP3) stuur. Die kanaal na ISP1 het 'n statiese "grys" adres, ISP2 - "wit", verkry via DHCP, ISP3 - "wit" met PPPoE-magtiging. Die verbindingsdiagram word in die figuur getoon:

Multivan en roetering op Mikrotik RouterOS

Die taak is om die MTK-roeteerder op grond van die skema op te stel sodat:

  1. Verskaf outomatiese oorskakeling na 'n rugsteunverskaffer. Die hoofverskaffer is ISP2, die eerste reserwe is ISP1, die tweede reserwe is ISP3.
  2. Organiseer LAN1-netwerktoegang tot die internet slegs deur ISP1.
  3. Verskaf die vermoë om verkeer van plaaslike netwerke na die internet te stuur deur die geselekteerde verskaffer gebaseer op die adreslys.
  4. Maak voorsiening vir die moontlikheid om dienste vanaf die plaaslike netwerk na die internet te publiseer (DSTNAT)
  5. Stel 'n brandmuurfilter op om die minimum voldoende sekuriteit vanaf die internet te verskaf.
  6. Die router kan sy eie verkeer deur enige van die drie verskaffers uitreik, afhangende van die gekose bronadres.
  7. Maak seker dat antwoordpakkies na die kanaal waarvandaan hulle kom (insluitend LAN) gestuur word.

Let daarop. Ons sal die router "van nuuts af" opstel om die afwesigheid van verrassings te waarborg in die beginkonfigurasies "uit die boks" wat van weergawe tot weergawe verander. Winbox is gekies as 'n konfigurasie-instrument, waar veranderinge visueel vertoon sal word. Die instellings self sal gestel word deur opdragte in die Winbox-terminaal. Die fisiese verbinding vir konfigurasie word gemaak deur 'n direkte verbinding met die Ether5-koppelvlak.

'n Bietjie redenasie oor wat 'n multivan is, is dit 'n probleem of is slinkse slim mense rondom die weef van samesweringsnetwerke

'n Nuuskierige en oplettende administrateur, wat so of 'n soortgelyke skema op sy eie opstel, besef skielik dat dit reeds normaal werk. Ja, ja, sonder jou pasgemaakte roetetabelle en ander roetereëls, waarvan die meeste artikels oor hierdie onderwerp vol is. Kom ons kyk?

Kan ons adressering op koppelvlakke en verstekpoorte instel? Ja:

Op ISP1 is die adres en poort geregistreer by afstand=2 и check-gateway=ping.
Op ISP2, die verstek-dhcp-kliënt-instelling - dienooreenkomstig sal afstand gelyk wees aan een.
Op ISP3 in die pppoe kliënt instellings wanneer add-default-route=ja sit verstek-roete-afstand=3.

Moenie vergeet om NAT by die uitgang te registreer nie:

/ip firewall nat voeg aksie = maskerade ketting = srcnat out-interface-list = WAN

As gevolg hiervan geniet gebruikers van plaaslike webwerwe dit om katte af te laai deur die hoof-ISP2-verskaffer en daar is 'n kanaalbespreking wat die meganisme gebruik kontroleer poort Sien nota 1

Punt 1 van die taak word geïmplementeer. Waar is die multivan met sy merke? Geen…

Verder. U moet spesifieke kliënte van die LAN vrystel via ISP1:

/ip firewall mangle voeg aksie=roeteketting=voorrouting dst-address-list=!BOGONS
passthrough=ja route-dst=100.66.66.1 src-adreslys=Via_ISP1
/ip firewall mangle voeg aksie=roeteketting=voorrouting dst-address-list=!BOGONS
deurlaat=geen roete-dst=100.66.66.1 src-adres=192.168.88.0/24

Items 2 en 3 van die taak is geïmplementeer. Etikette, seëls, roetereëls, waar is jy?!

Moet u toegang gee tot u gunsteling OpenVPN-bediener met die adres 172.17.17.17 vir kliënte vanaf die internet? Asseblief:

/ip wolkstel ddns-enabled=ja

As 'n eweknie gee ons die kliënt die uitsetresultaat: ": sit [ip wolk kry dns-naam]"

Ons registreer poortaanstuur vanaf die internet:

/ip firewall nat voeg action=dst-nat ketting=dstnat dst-port=1194
in-interface-list=WAN-protokol=udp na-adresse=172.17.17.17

Item 4 is gereed.

Ons het 'n firewall en ander sekuriteit vir punt 5 opgestel, terselfdertyd is ons bly dat alles reeds werk vir gebruikers en reik na 'n houer met 'n gunsteling drankie ...
A! Tonnels is vergete.

l2tp-kliënt, gekonfigureer deur Google-artikel, het gestyg tot jou gunsteling Nederlandse VDS? Ja.
l2tp-bediener met IPsec het gestyg en kliënte volgens DNS-naam van IP Cloud (sien hierbo.) klou? Ja.
Terwyl ons terugleun in ons stoel, teug aan 'n drankie, oorweeg ons luilekker punte 6 en 7 van die taak. Ons dink – het ons dit nodig? Tog werk dit so (c) ... So, as dit steeds nie nodig is nie, dan is dit dit. Multivan geïmplementeer.

Wat is 'n multivan? Dit is die koppeling van verskeie internetkanale aan een router.

Jy hoef nie die artikel verder te lees nie, want wat kan daar wees behalwe 'n pronk van twyfelagtige toepaslikheid?

Vir diegene wat oorbly, wat belangstel in punte 6 en 7 van die taak, en ook die jeuk van perfeksionisme voel, duik ons ​​dieper.

Die belangrikste taak van die implementering van 'n multivan is die korrekte verkeersroetes. Naamlik: ongeag watter (of watter) Sien. nota 3 die ISP se kanaal(e) kyk na die verstekroete op ons router, dit behoort 'n antwoord terug te gee na die presiese kanaal waarvandaan die pakkie gekom het. Die taak is duidelik. Waar is die probleem? Inderdaad, in 'n eenvoudige plaaslike netwerk is die taak dieselfde, maar niemand pla met bykomende instellings nie en voel nie moeilikheid nie. Die verskil is dat enige roeteerbare nodus op die internet toeganklik is deur elkeen van ons kanale, en nie deur 'n streng spesifieke een nie, soos in 'n eenvoudige LAN. En die "probleem" is dat as 'n versoek na ons gekom het vir die IP-adres van ISP3, dan sal die antwoord in ons geval deur die ISP2-kanaal gaan, aangesien die verstekpoort daarheen gerig is. Laat en sal deur die verskaffer weggegooi word as verkeerd. Die probleem is geïdentifiseer. Hoe om dit op te los?

Die oplossing word in drie fases verdeel:

  1. Voorafstelling. Op hierdie stadium sal die basiese instellings van die router ingestel word: plaaslike netwerk, firewall, adreslyste, haarnaald NAT, ens.
  2. Multivan. Op hierdie stadium sal die nodige verbindings gemerk en in roeteringstabelle gesorteer word.
  3. Koppel aan 'n ISP. Op hierdie stadium sal die koppelvlakke wat verbinding met die internet verskaf, gekonfigureer word, roetering en die internetkanaalbesprekingsmeganisme sal geaktiveer word.

1. Voorinstelling

1.1. Ons maak die router-konfigurasie skoon met die opdrag:

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

stem saam met "Gevaarlik! Stel in elk geval terug? [j/N]:” en, nadat ons herlaai het, verbind ons met Winbox via MAC. Op hierdie stadium word die konfigurasie en gebruikersbasis uitgevee.

1.2. Skep 'n nuwe gebruiker:

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

teken daaronder aan en vee die verstek een uit:

/user remove admin

Let daarop. Dit is die verwydering en nie deaktivering van die verstekgebruiker wat die skrywer as veiliger beskou en aanbeveel vir gebruik.

1.3. Ons skep basiese koppelvlaklyste vir die gerief om in 'n firewall, ontdekkingsinstellings en ander MAC-bedieners te werk:

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

Teken koppelvlakke met opmerkings

/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"

en vul die koppelvlaklyste in:

/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"

Let daarop. Die skryf van verstaanbare opmerkings is die moeite werd om hieraan spandeer te word, en dit vergemaklik die foutopsporing en begrip van die konfigurasie aansienlik.

Die skrywer ag dit nodig om veiligheidsredes die ether3-koppelvlak by die “WAN”-koppelvlaklys te voeg, ten spyte van die feit dat die ip-protokol nie daardeur sal gaan nie.

Moenie vergeet dat nadat die PPP-koppelvlak op ether3 verhoog is, dit ook by die koppelvlaklys "WAN" gevoeg moet word

1.4. Ons versteek die router vir buurtopsporing en beheer van verskaffernetwerke via 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. Ons skep die minimum voldoende stel firewall-filterreëls om die router te beskerm:

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

(die reël gee toestemming vir gevestigde en verwante verbindings wat vanaf beide gekoppelde netwerke en die router self geïnisieer word)

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

(ping en nie net ping nie. Alle icmp word toegelaat. Baie nuttig om MTU-probleme te vind)

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

(die reël wat die invoerketting sluit, verbied alles anders wat van die internet af kom)

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

(die reël laat gevestigde en verwante verbindings toe wat deur die router gaan)

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

(die reël stel verbindings terug met verbinding-staat=ongeldig wat deur die roeteerder gaan. Dit word sterk aanbeveel deur Mikrotik, maar in sommige seldsame situasies kan dit nuttige verkeer blokkeer)

/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

(die reël verbied pakkies wat van die internet af kom en nie die dstnat-prosedure geslaag het om deur die router te gaan nie. Dit sal plaaslike netwerke beskerm teen indringers wat, wat in dieselfde uitsaaidomein met ons eksterne netwerke is, ons eksterne IP's as 'n poort en dus probeer om ons plaaslike netwerke te "verken".)

Let daarop. Kom ons neem aan dat die netwerke LAN1 en LAN2 vertrou word en die verkeer tussen hulle en van hulle word nie gefiltreer nie.

1.6. Skep 'n lys met 'n lys van nie-roubare netwerke:

/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

(Hierdie is 'n lys van adresse en netwerke wat nie na die internet herleibaar is nie en dienooreenkomstig gevolg sal word.)

Let daarop. Die lys is onderhewig aan verandering, so ek raai u aan om gereeld die relevansie na te gaan.

1.7. Stel DNS vir die router self op:

/ip dns set servers=1.1.1.1,8.8.8.8

Let daarop. In die huidige weergawe van ROS geniet dinamiese bedieners voorrang bo statiese. Die naamresolusieversoek word na die eerste bediener gestuur in volgorde in die lys. Die oorgang na die volgende bediener word uitgevoer wanneer die huidige een nie beskikbaar is nie. Die tydsduur is groot - meer as 5 sekondes. Terugkeer, wanneer die "gevalle bediener" hervat word, vind nie outomaties plaas nie. Gegewe hierdie algoritme en die teenwoordigheid van 'n multivan, beveel die skrywer aan om nie bedieners te gebruik wat deur verskaffers verskaf word nie.

1.8. Stel 'n plaaslike netwerk op.
1.8.1. Ons konfigureer statiese IP-adresse op LAN-koppelvlakke:

/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. Ons stel die reëls vir roetes na ons plaaslike netwerke deur die hoofroeteringtabel:

/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"

Let daarop. Dit is een van die vinnige en maklike maniere om toegang te verkry tot LAN-adresse met bronne van eksterne IP-adresse van router-koppelvlakke wat nie deur die verstekroete gaan nie.

1.8.3. Aktiveer haarnaald NAT vir LAN1 en 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

Let daarop. Dit laat jou toe om toegang tot jou hulpbronne (dstnat) via 'n eksterne IP te kry terwyl jy binne die netwerk is.

2. Eintlik die implementering van die baie korrekte multivan

Om die probleem op te los van "antwoord waar hulle vandaan gevra het", sal ons twee ROS-instrumente gebruik: verbindingsmerk и roetemerk. verbindingsmerk laat jou toe om die gewenste verbinding te merk en dan met hierdie etiket te werk as 'n voorwaarde vir aansoek roetemerk. En reeds met roetemerk moontlik om in te werk ip-roete и roete reëls. Ons het die gereedskap uitgepluis, nou moet jy besluit watter verbindings om te merk - een keer, presies waar om te merk - twee.

Met die eerste een is alles eenvoudig - ons moet al die verbindings wat vanaf die internet na die router kom, merk via die toepaslike kanaal. In ons geval sal dit drie etikette wees (volgens die aantal kanale): "conn_isp1", "conn_isp2" en "conn_isp3".

Die nuanse met die tweede is dat inkomende verbindings van twee tipes sal wees: transito en dié wat vir die router self bedoel is. Die verbindingsmerkmeganisme werk in die tabel mangel. Oorweeg die beweging van die pakket op 'n vereenvoudigde diagram, vriendelik saamgestel deur die spesialiste van die mikrotik-trainings.com hulpbron (nie advertensies):

Multivan en roetering op Mikrotik RouterOS

Na aanleiding van die pyle, sien ons dat die pakkie aankom by "insette koppelvlak", gaan deur die ketting"Voorafroetering” en eers dan word dit in transito en plaaslik in die blok verdeel “Roetingsbesluit". Daarom, om twee voëls met een klap te slag, gebruik ons Verbindingsmerk in die tabel Mangle Pre-routing kettings Voorafroetering.

opmerking. In ROS word "Roetingmerk"-etikette gelys as "Tabel" in die Ip/Roetes/Reëls-afdeling, en as "Roetingmerk" in ander afdelings. Dit kan 'n mate van verwarring in begrip veroorsaak, maar in werklikheid is dit dieselfde ding, en is 'n analoog van rt_tables in iproute2 op linux.

2.1. Ons merk inkomende verbindings van elk van die verskaffers:

/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

Let daarop. Om nie reeds gemerkte verbindings te merk nie, gebruik ek die verbinding-merk=geen-merk toestand in plaas van verbinding-staat=nuut omdat ek dink dit is meer korrek, asook die verwerping van val ongeldige verbindings in die invoerfilter.


passthrough=no - want in hierdie implementeringsmetode is hermerk uitgesluit en om te bespoedig, kan jy die opsomming van reëls na die eerste wedstryd onderbreek.

Daar moet in gedagte gehou word dat ons nog nie op enige manier met roetering inmeng nie. Nou is daar net stadiums van voorbereiding. Die volgende fase van implementering sal die verwerking van transitoverkeer wees wat oor die gevestigde verbinding terugkeer vanaf die bestemming in die plaaslike netwerk. Dié. daardie pakkies wat (sien die diagram) langs die pad deur die router gegaan het:

“Invoerkoppelvlak”=>”Voorrouting”=>”Roetingbesluit”=>”Voorwaarts”=>”Na-roetering”=>”Uitvoerkoppelvlak” en het by hul geadresseerde in die plaaslike netwerk gekom.

Belangrik! In ROS is daar geen logiese verdeling in eksterne en interne koppelvlakke nie. As ons die pad van die antwoordpakkie volgens die bostaande diagram naspeur, sal dit dieselfde logiese pad volg as die versoek:

“Invoerkoppelvlak”=>”Voorrouting”=>”Roetingbesluit”=>”Voorwaarts”=>”Na-roetering”=>”Uitvoerkoppelvlak” net vir 'n versoek"insette Interface” was die ISP-koppelvlak, en vir die antwoord - LAN

2.2. Ons rig reaksie-vervoerverkeer na die ooreenstemmende roeteringstabelle:

/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

Lewer kommentaar. in-interface-list=!WAN - ons werk slegs met verkeer vanaf die plaaslike netwerk en dst-address-type=!local wat nie die bestemmingsadres van die adres van die koppelvlakke van die router self het nie.

Dieselfde vir plaaslike pakkies wat langs die pad na die router gekom het:

“Invoerkoppelvlak”=>”Prerouting”=>”Roetingbesluit”=>”Invoer”=>”Plaaslike proses”

Belangrik! Die antwoord sal op die volgende manier verloop:

”Plaaslike Proses”=>”Routing-besluit”=>”Uitvoer”=>”Na-roetering”=>”Uitvoerkoppelvlak”

2.3. Ons stuur reaksie op plaaslike verkeer na die ooreenstemmende roeteertabelle:

/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

Op hierdie stadium kan die taak om voor te berei om 'n antwoord te stuur na die internetkanaal waarvandaan die versoek gekom het, as opgelos beskou word. Alles is gemerk, gemerk en gereed om herlei te word.
'n Uitstekende "newe"-effek van hierdie opstelling is die vermoë om tegelyk met DSNAT-poortaanstuur van beide (ISP2, ISP3) verskaffers te werk. Glad nie, aangesien ons op ISP1 'n nie-roubare adres het. Hierdie effek is belangrik, byvoorbeeld, vir 'n posbediener met twee MX'e wat na verskillende internetkanale kyk.

Om die nuanses van die werking van plaaslike netwerke met eksterne IP-routers uit te skakel, gebruik ons ​​die oplossings uit paragrawe. 1.8.2 en 3.1.2.6.

Daarbenewens kan jy 'n hulpmiddel met merke gebruik om paragraaf 3 van die probleem op te los. Ons implementeer dit so:

2.4. Ons lei verkeer van plaaslike kliënte vanaf die roeteringlyste na die toepaslike tabelle:

/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

As gevolg hiervan lyk dit so iets:

Multivan en roetering op Mikrotik RouterOS

3. Stel 'n verbinding met die ISP op en aktiveer handelsmerkroetering

3.1. Stel 'n verbinding met ISP1 op:
3.1.1. Stel 'n statiese IP-adres op:

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

3.1.2. Stel statiese roetering op:
3.1.2.1. Voeg 'n verstek "nood"-roete by:

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

Let daarop. Hierdie roete laat verkeer van plaaslike prosesse toe om die Roetebesluitstadium te slaag, ongeag die toestand van die skakels van enige van die verskaffers. Die nuanse van uitgaande plaaslike verkeer is dat die hoofroetetabel 'n aktiewe roete na die verstekpoort moet hê om die pakkie ten minste iewers heen te beweeg. Indien nie, sal die pakkie eenvoudig vernietig word.

As 'n hulpmiddel uitbreiding kontroleer poort Vir 'n dieper ontleding van die kanaaltoestand, stel ek voor om die rekursiewe roetemetode te gebruik. Die essensie van die metode is dat ons die router vertel om nie direk na 'n pad na sy poort te soek nie, maar deur 'n tussendeur. 4.2.2.1, 4.2.2.2 en 4.2.2.3 sal as sulke "toets"-poorte vir ISP1, ISP2 en ISP3 onderskeidelik gekies word.

3.1.2.2. Roete na die "verifikasie" adres:

/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

Let daarop. Ons verlaag die omvangwaarde na die verstek in ROS-teikenomvang om 4.2.2.1 as 'n rekursiewe poort in die toekoms te gebruik. Ek beklemtoon: die omvang van die roete na die “toets”-adres moet minder as of gelyk wees aan die teikenomvang van die roete wat na die toets een sal verwys.

3.1.2.3. Rekursiewe verstekroete vir verkeer sonder roetemerk:

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

Let daarop. Die afstand=2-waarde word gebruik omdat ISP1 volgens die taakvoorwaardes as die eerste rugsteun verklaar word.

3.1.2.4. Rekursiewe verstekroete vir verkeer met roetemerk “to_isp1”:

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

Let daarop. Eintlik, hier begin ons uiteindelik die vrugte geniet van die voorbereidingswerk wat in paragraaf 2 gedoen is.


Op hierdie roete sal alle verkeer wat die merkroete "to_isp1" het, na die poort van die eerste verskaffer gelei word, ongeag watter verstekpoort tans aktief is vir die hooftabel.

3.1.2.5. Eerste terugval-rekursiewe verstekroete vir ISP2- en ISP3-gemerkte verkeer:

/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

Let daarop. Hierdie roetes is onder andere nodig om verkeer te bespreek vanaf plaaslike netwerke wat lede van die adreslys “to_isp*”' is.

3.1.2.6. Ons registreer die roete vir die plaaslike verkeer van die router na die internet deur ISP1:

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

Let daarop. In kombinasie met die reëls van paragraaf 1.8.2 bied dit toegang tot die verlangde kanaal met 'n gegewe bron. Dit is van kritieke belang vir die bou van tonnels wat die plaaslike sy-IP-adres (EoIP, IP-IP, GRE) spesifiseer. Aangesien die reëls in ip-roetereëls van bo na onder uitgevoer word, tot die eerste wedstryd van die voorwaardes, moet hierdie reël na die reëls van klousule 1.8.2 wees.

3.1.3. Ons registreer die NAT-reël vir uitgaande verkeer:

/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

Let daarop. NATim alles wat uitgaan, behalwe vir wat in die IPsec-beleide kom. Ek probeer om nie action=maskerade te gebruik nie, tensy dit absoluut noodsaaklik is. Dit is stadiger en meer hulpbronintensief as src-nat omdat dit die NAT-adres vir elke nuwe verbinding bereken.

3.1.4. Ons stuur kliënte vanaf die lys wat verbied word om deur ander verskaffers toegang te verkry, direk na die ISP1-verskaffer se poort.

/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

Let daarop. action=roete het 'n hoër prioriteit en word voor ander roetereëls toegepas.


place-before=0 - plaas ons reël eerste in die lys.

3.2. Stel 'n verbinding met ISP2 op.

Aangesien die ISP2-verskaffer vir ons die instellings via DHCP gee, is dit redelik om die nodige veranderinge aan te bring met 'n skrip wat begin wanneer die DHCP-kliënt geaktiveer word:

/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

Die skrip self in die Winbox-venster:

Multivan en roetering op Mikrotik RouterOS
Let daarop. Die eerste deel van die draaiboek word geaktiveer wanneer die huurkontrak suksesvol verkry is, die tweede - nadat die huurkontrak vrygestel is.Sien nota 2

3.3. Ons het 'n verbinding met die ISP3-verskaffer opgestel.

Aangesien die instellingsverskaffer ons dinamiese gee, is dit redelik om die nodige veranderinge aan te bring met skrifte wat begin nadat die ppp-koppelvlak verhoog is en na die val.

3.3.1. Eerstens konfigureer ons die profiel:

/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"

Die skrip self in die Winbox-venster:

Multivan en roetering op Mikrotik RouterOS
Let daarop. ry
/ip firewall mangle set [find comment="Connmark in from ISP3"] in-interface=$"interface";
laat jou toe om die hernoeming van die koppelvlak korrek te hanteer, aangesien dit met sy kode werk en nie die vertoonnaam nie.

3.3.2. Skep nou 'n ppp-verbinding deur die profiel te gebruik:

/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

As 'n laaste aanraking, laat ons die horlosie stel:

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

Vir die wat tot die einde lees

Die voorgestelde manier om 'n multivan te implementeer is die persoonlike voorkeur van die skrywer en is nie die enigste moontlike een nie. Die ROS-gereedskapstel is omvangryk en buigsaam, wat aan die een kant probleme vir beginners veroorsaak, en aan die ander kant die rede vir sy gewildheid is. Leer, probeer, ontdek nuwe gereedskap en oplossings. Byvoorbeeld, as 'n toepassing van die verworwe kennis, is dit moontlik om die instrument in hierdie implementering van die multivan te vervang kontroleerpoort met rekursiewe roetes na nethorlosie.

Notes

  1. kontroleerpoort - 'n meganisme wat jou toelaat om die roete te deaktiveer na twee opeenvolgende onsuksesvolle kontrole van die poort vir beskikbaarheid. Die kontrole word een keer elke 10 sekondes uitgevoer, plus die reaksie-time-out. In totaal lê die werklike skakeltydsberekening in die reeks van 20-30 sekondes. As sulke skakeltydsberekening nie voldoende is nie, is daar 'n opsie om die instrument te gebruik nethorlosie, waar die kontrole-timer met die hand ingestel kan word. kontroleerpoort brand nie op intermitterende pakkieverlies op die skakel nie.

    Belangrik! Deaktiveer 'n primêre roete sal alle ander roetes wat daarna verwys, deaktiveer. Daarom, vir hulle om aan te dui check-gateway=ping nie nodig nie.

  2. Dit gebeur dat 'n mislukking in die DHCP-meganisme voorkom, wat lyk soos 'n kliënt wat in die hernutoestand vassit. In hierdie geval sal die tweede deel van die skrif nie werk nie, maar dit sal nie verhoed dat verkeer korrek loop nie, aangesien die staat die ooreenstemmende rekursiewe roete volg.
  3. ECMP (Equal Cost Multi-Path) - in ROS is dit moontlik om 'n roete met verskeie poorte en dieselfde afstand te stel. In hierdie geval sal verbindings oor kanale versprei word deur die round robin-algoritme te gebruik, in verhouding tot die aantal gespesifiseerde poorte.

Vir die stukrag om die artikel te skryf, help met die vorming van die struktuur en plasing van aksente - persoonlike dankbaarheid aan Evgeny @jscar

Bron: will.com