Multivan en routing op Mikrotik RouterOS

Ynlieding

It opnimmen fan it artikel, neist idelens, waard feroarsake troch de deprimearjende frekwinsje fan fragen oer dit ûnderwerp yn 'e profylgroepen fan' e Russysktalige telegrammienskip. It artikel is rjochte op novice Mikrotik RouterOS (hjirnei oantsjutten as ROS) behearders. It giet allinnich mei de multivan, mei in klam op routing. As bonus binne d'r minimaal genôch ynstellingen om feilige en handige operaasje te garandearjen. Dejingen dy't op syk binne nei iepenbiering fan de ûnderwerpen fan wachtrijen, load balancing, vlans, brêgen, multi-stage djippe analyze fan de steat fan it kanaal en sa - meie net fergrieme tiid en muoite lêzen.

Roald gegevens

As test ûnderwerp waard selektearre in fiif-poarte Mikrotik router mei ROS ferzje 6.45.3. It sil ferkear rûte tusken twa lokale netwurken (LAN1 en LAN2) en trije providers (ISP1, ISP2, ISP3). It kanaal nei ISP1 hat in statysk "griis" adres, ISP2 - "wyt", krigen fia DHCP, ISP3 - "wyt" mei PPPoE autorisaasje. It ferbiningsdiagram wurdt werjûn yn 'e figuer:

Multivan en routing op Mikrotik RouterOS

De taak is om de MTK-router te konfigurearjen basearre op it skema sadat:

  1. Soargje foar automatyske oerstap nei in reservekopyprovider. De haadprovider is ISP2, de earste reserve is ISP1, de twadde reserve is ISP3.
  2. Organisearje LAN1 netwurk tagong ta it ynternet allinich fia ISP1.
  3. Biede de mooglikheid om ferkear fan lokale netwurken nei it ynternet te routeren fia de selektearre provider basearre op de adreslist.
  4. Soargje foar de mooglikheid om tsjinsten te publisearjen fan it lokale netwurk nei it ynternet (DSTNAT)
  5. Stel in firewallfilter yn om de minimaal genôch feiligens fan it ynternet te leverjen.
  6. De router koe syn eigen ferkear útjaan fia ien fan 'e trije providers, ôfhinklik fan it selektearre boarneadres.
  7. Soargje derfoar dat antwurdpakketten wurde trochstjoerd nei it kanaal wêrfan se kamen (ynklusyf LAN).

Opmerking. Wy sille de router "fanôf it begjin" konfigurearje om it ûntbrekken fan ferrassingen te garandearjen yn 'e startkonfiguraasjes "út it fak" dy't feroarje fan ferzje nei ferzje. Winbox waard keazen as in konfiguraasje ark, dêr't feroarings sille wurde visueel werjûn. De ynstellings sels wurde ynsteld troch kommando's yn 'e Winbox-terminal. De fysike ferbining foar konfiguraasje wurdt makke troch in direkte ferbining mei de Ether5-ynterface.

In bytsje redenearring oer wat in multivan is, is it in probleem of binne slûchslimme tûke minsken om it weven fan gearspanningsnetwurken

In nijsgjirrige en oandachtige behearder, dy't sa'n of sa'n skema op himsels opset, beseft ynienen dat it al normaal wurket. Ja, ja, sûnder jo oanpaste routingtabellen en oare rûteregels, wêrfan de measte artikels oer dit ûnderwerp fol binne. Litte wy kontrolearje?

Kinne wy ​​adressering ynstelle op ynterfaces en standert gateways? Ja:

Op ISP1 waarden it adres en de poarte registrearre mei ôfstân=2 и check-gateway=ping.
Op ISP2 is de standert dhcp-kliïntynstelling - sadwaande sil ôfstân gelyk wêze oan ien.
Op ISP3 yn de pppoe client ynstellings wannear add-default-route=ja sette default-route-ôfstân=3.

Ferjit net NAT te registrearjen by de útgong:

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

As gefolch hawwe brûkers fan pleatslike siden wille mei it downloaden fan katten fia de wichtichste ISP2-provider en is d'r in kanaalreservaasje mei it meganisme kontrolearje gateway Sjoch noat 1

Punt 1 fan de taak wurdt útfierd. Wêr is de multivan mei syn merken? Nee…

Fierder. Jo moatte spesifike kliïnten frijlitte fan it LAN fia ISP1:

/ip-firewall-mangle tafoegje aksje = rûteketen = dst-adres-list foarôf router =!BOGONS
passthrough=ja route-dst=100.66.66.1 src-address-list=Via_ISP1
/ip-firewall-mangle tafoegje aksje = rûteketen = dst-adres-list foarôf router =!BOGONS
passthrough=gjin route-dst=100.66.66.1 src-adres=192.168.88.0/24

Item 2 en 3 fan de taak binne útfierd. Labels, postsegels, rûteregels, wêr bisto?!

Moatte jo tagong jaan ta jo favorite OpenVPN-tsjinner mei it adres 172.17.17.17 foar kliïnten fan it ynternet? Asjebleaft:

/ip wolk set ddns-enabled=ja

As peer jouwe wy de klant it útfierresultaat: ":put [ip wolk krije dns-namme]"

Wy registrearje poarte trochstjoere fan it ynternet:

/ ip firewall nat tafoegje aksje = dst-nat ketting = dstnat dst-port = 1194
in-interface-list=WAN protokol=udp to-adressen=172.17.17.17

Item 4 is klear.

Wy sette in firewall en oare feiligens op foar punt 5, tagelyk binne wy ​​bliid dat alles al wurket foar brûkers en berikke in kontener mei in favorite drankje ...
IN! Tunnels binne fergetten.

l2tp-client, konfigurearre troch google artikel, is opstien ta jo favorite Nederlânske VDS? Ja.
l2tp-tsjinner mei IPsec is opstien en kliïnten troch DNS-namme fan IP Cloud (sjoch hjirboppe.) cling? Ja.
Leunend efteroer yn ús stoel, nipje in drankje, beskôgje wy loai de punten 6 en 7 fan de taak. Wy tinke - hawwe wy it nedich? Dochs wurket it sa (c) ... Dus, as it noch net nedich is, dan is it it. Multivan útfierd.

Wat is in multivan? Dit is de ferbining fan ferskate ynternetkanalen nei ien router.

Jo hoege it artikel net fierder te lêzen, want wat kin der njonken in pronk fan dubieuze tapasberens?

Foar dyjingen dy't bliuwe, dy't ynteressearre binne yn punten 6 en 7 fan 'e taak, en ek fiele de jeuk fan perfeksjonisme, wy dûke djipper.

De wichtichste taak fan it útfieren fan in multivan is de juste ferkearsrûte. Nammentlik: nettsjinsteande hokker (of hokker) Sjoch. note 3 de ISP's kanaal(s) sjogge nei de standertrûte op ús router, it moat in antwurd jaan op it krekte kanaal wêrfan it pakket kaam. De taak is dúdlik. Wêr is it probleem? Yndied, yn in ienfâldich lokaal netwurk is de taak itselde, mar gjinien makket har mei ekstra ynstellingen en fielt gjin problemen. It ferskil is dat elke rûtebere knooppunt op it ynternet tagonklik is fia elk fan ús kanalen, en net fia in strikt spesifike, lykas yn in ienfâldich LAN. En it "probleem" is dat as in fersyk by ús kaam foar it IP-adres fan ISP3, dan sil yn ús gefal it antwurd troch it ISP2-kanaal gean, om't de standertpoarte dêr rjochte is. Bliuwt en sil wurde wegere troch de provider as ferkeard. It probleem is identifisearre. Hoe oplosse it?

De oplossing is ferdield yn trije stadia:

  1. Presetting. Op dit poadium wurde de basisynstellingen fan 'e router ynsteld: lokaal netwurk, firewall, adreslisten, hairpin NAT, ensfh.
  2. Multivan. Op dit stadium sille de nedige ferbinings wurde markearre en sortearre yn routingtabellen.
  3. Ferbine mei in ISP. Op dit poadium wurde de ynterfaces dy't ferbining leverje mei it ynternet wurde konfigureare, routing en it meganisme foar reservearring fan ynternetkanalen wurde aktivearre.

1. Presetting

1.1. Wy wiskje de routerkonfiguraasje mei it kommando:

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

iens mei "Gefaarlik! Hoe dan ek weromsette? [y/N]:” en, nei it herstarten, ferbine wy ​​mei Winbox fia MAC. Op dit stadium wurde de konfiguraasje en brûkersbasis wiske.

1.2. Meitsje in nije brûker:

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

ynlogge ûnder it en wiskje de standert ien:

/user remove admin

Opmerking. It is it fuortheljen en net útskeakeljen fan 'e standertbrûker dat de auteur feiliger achtet en oanbefellet foar gebrûk.

1.3. Wy meitsje basisynterfacelisten foar it gemak fan operearjen yn in firewall, ûntdekkingsynstellingen en oare MAC-tsjinners:

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

Undertekenjen ynterfaces mei 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 folje de ynterfacelisten yn:

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

Opmerking. It skriuwen fan begryplike opmerkings is de tiid wurdich dy't hjiroan bestege, en it fasilitearret it probleemoplossing en it begripen fan 'e konfiguraasje sterk.

De skriuwer achtet it nedich om feiligens redenen de ether3-ynterface ta te foegjen oan 'e "WAN"-ynterfacelist, nettsjinsteande it feit dat it ip-protokol der net troch giet.

Ferjit net dat nei't de PPP-ynterface is ferhege op ether3, it ek moat wurde tafoege oan 'e ynterfacelist "WAN"

1.4. Wy ferbergje de router foar buertdeteksje en kontrôle fan providernetwurken fia 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. Wy meitsje de minimaal genôch set fan firewallfilterregels om de router te beskermjen:

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

(de regel jout tastimming foar fêststelde en relatearre ferbiningen dy't binne inisjeare fan sawol ferbûne netwurken as de router sels)

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

(ping en net allinnich ping. Alle icmp is tastien yn. Hiel nuttich foar it finen fan MTU problemen)

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

(de regel dy't de ynfierketen slút ferbiedt al it oare dat fan it ynternet komt)

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

(de regel lit fêstige en relatearre ferbiningen ta dy't troch de router passe)

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

(de regel reset ferbinings mei ferbining-state = ûnjildich trochjaan troch de router. It wurdt sterk oanrikkemandearre troch Mikrotik, mar yn guon seldsume situaasjes kin blokkearje nuttich ferkear)

/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

(de regel ferbiedt pakketten dy't fan it ynternet komme en de dstnat-proseduere net trochjûn hawwe om troch de router te gean. Dit sil lokale netwurken beskermje tsjin ynbrekkers dy't, yn itselde útstjoerdomein mei ús eksterne netwurken, ús eksterne IP's registrearje as in gateway en besykje dus ús lokale netwurken te "ferkenne".

Opmerking. Lit ús oannimme dat de netwurken LAN1 en LAN2 fertroud binne en it ferkear tusken har en fan har wurdt net filtere.

1.6. Meitsje in list mei in list mei net-routerbere netwurken:

/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

(Dit is in list mei adressen en netwurken dy't net nei it ynternet routber binne en dêrmei folge wurde.)

Opmerking. De list is ûnder foarbehâld fan feroaring, dus ik advisearje jo om periodyk de relevânsje te kontrolearjen.

1.7. Stel DNS yn foar de router sels:

/ip dns set servers=1.1.1.1,8.8.8.8

Opmerking. Yn 'e hjoeddeistige ferzje fan ROS hawwe dynamyske servers foarrang boppe statyske. It fersyk foar nammeresolúsje wurdt stjoerd nei de earste tsjinner yn folchoarder yn 'e list. De oergong nei de folgjende tsjinner wurdt útfierd as de aktuele net beskikber is. De timeout is grut - mear as 5 sekonden. Werom werom, as de "fallen tsjinner" wurdt ferfongen, komt net automatysk foar. Mei it each op dit algoritme en de oanwêzigens fan in multivan, advisearret de auteur gjin servers te brûken dy't levere wurde troch providers.

1.8. Stel in lokaal netwurk yn.
1.8.1. Wy konfigurearje statyske IP-adressen op LAN-ynterfaces:

/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. Wy sette de regels foar rûtes nei ús lokale netwurken fia de haadroutingtabel:

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

Opmerking. Dit is ien fan 'e flugge en maklike manieren om tagong te krijen ta LAN-adressen mei boarnen fan eksterne IP-adressen fan router-ynterfaces dy't net troch de standertrûte gean.

1.8.3. Hairpin NAT ynskeakelje foar 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

Opmerking. Hjirmei kinne jo tagong krije ta jo boarnen (dstnat) fia in eksterne IP wylst jo binnen it netwurk binne.

2. Eins, de útfiering fan de hiel korrekte multivan

Om it probleem op te lossen fan "antwurdzje wêr't se fan frege hawwe", sille wy twa ROS-ark brûke: ferbining mark и routing mark. ferbining mark kinne jo markearje de winske ferbining en dan wurkje mei dit label as betingst foar it oanfreegjen routing mark. En al mei routing mark mooglik om yn te wurkjen ip rûte и rûte regels. Wy hawwe de ark útfûn, no moatte jo beslute hokker ferbiningen jo moatte markearje - ien kear, krekt wêr't jo moatte markearje - twa.

Mei de earste is alles ienfâldich - wy moatte alle ferbiningen markearje dy't nei de router komme fan it ynternet fia it passende kanaal. Yn ús gefal sille dit trije labels wêze (troch it oantal kanalen): "conn_isp1", "conn_isp2" en "conn_isp3".

De nuânse mei de twadde is dat ynkommende ferbinings sille wêze fan twa soarten: transit en dyjingen dy't bedoeld binne foar de router sels. De ferbining markmeganisme wurket yn 'e tabel mingje. Beskôgje de beweging fan it pakket op in ferienfâldige diagram, freonlik gearstald troch de spesjalisten fan 'e boarne mikrotik-trainings.com (gjin reklame):

Multivan en routing op Mikrotik RouterOS

Nei de pylken sjogge wy dat it pakket oankomt by "ynfier ynterface", giet troch de keatling"Prerouting" en pas dan is it ferdield yn transit en lokaal yn it blok "Routing beslút". Dêrom, om twa fûgels mei ien stien te deadzjen, brûke wy Ferbining Mark yn 'e tafel Mangle Pre-routing keatlingen Prerouting.

Notysje. Yn ROS wurde labels "Routing mark" neamd as "Tabel" yn 'e seksje Ip / Routes / Rules, en as "Routing Mark" yn oare seksjes. Dit kin wat betizing ynfiere yn begryp, mar, yn feite, dit is itselde ding, en is in analoog fan rt_tables yn iproute2 op linux.

2.1. Wy markearje ynkommende ferbiningen fan elk fan 'e providers:

/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

Opmerking. Om al markearre ferbiningen net te markearjen, brûk ik de ferbining-mark=no-mark condition ynstee fan connection-state=new, om't ik tink dat dit krekter is, en ek de ôfwizing fan drop ûnjildige ferbiningen yn it ynfierfilter.


passthrough=nee - om't yn dizze ymplemintaasjemetoade it opnij markearjen is útsletten en, om te rapperjen, kinne jo de oplisting fan regels nei de earste wedstriid ûnderbrekke.

Dêrby moat betocht wurde dat wy noch net bemuoie mei routing. No binne d'r allinich stadia fan tarieding. De folgjende poadium fan ymplemintaasje sil de ferwurking wêze fan transitferkear dat weromkomt oer de fêststelde ferbining fan 'e bestimming yn it lokale netwurk. Dy. dy pakketten dy't (sjoch it diagram) ûnderweis troch de router gongen:

"Ynputynterface"=>"Prerouting"=>"Routingbeslút"=>"Foarút"=>"Post Routing"=>"Utfierynterface" en kaam by har adressaat yn it lokale netwurk.

Wichtich! Yn ROS is d'r gjin logyske ferdieling yn eksterne en ynterne ynterfaces. As wy it paad fan it antwurdpakket folgje neffens it boppesteande diagram, dan sil it itselde logyske paad folgje as it fersyk:

"Ynputynterface"=>"Prerouting"=>"Routingbeslút"=>"Foarút"=>"Post Routing"=>"Utfierynterface" gewoan foar in fersyk"Ynfierynterface” wie de ISP-ynterface, en foar it antwurd - LAN

2.2. Wy rjochtsje it antwurd transitferkear nei de oerienkommende routingtabellen:

/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

Kommentaar. in-interface-list=!WAN - wy wurkje allinich mei ferkear fan it lokale netwurk en dst-address-type=!local dat net it bestimmingsadres hat fan it adres fan de ynterfaces fan de router sels.

Itselde foar lokale pakketten dy't ûnderweis nei de router kamen:

"Ynputynterface"=>"Prerouting"=>"Routingbeslút"=>"Ynfier"=>"Lokaal proses"

Wichtich! It antwurd sil op 'e folgjende manier gean:

”Lokaal proses”=>”Routingbeslút”=>”Output”=>”Post Routing”=>”Utfierynterface”

2.3. Wy reagearje lokaal ferkear nei de oerienkommende routingtabellen:

/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 dit stadium kin de taak fan it tarieden op it stjoeren fan in antwurd nei it ynternetkanaal wêrfan it fersyk kaam, wurde beskôge as oplost. Alles is markearre, bestimpele en klear om troch te gean.
In treflik "side" effekt fan dizze opset is de mooglikheid om te wurkjen mei DSNAT haven trochstjoere fan beide (ISP2, ISP3) providers tagelyk. Helemaal net, om't wy op ISP1 in net-routerber adres hawwe. Dit effekt is wichtich, bygelyks, foar in e-posttsjinner mei twa MX's dy't nei ferskate ynternetkanalen sjogge.

Om de nuânses fan 'e wurking fan lokale netwurken mei eksterne IP-routers te eliminearjen, brûke wy de oplossingen út paragrafen. 1.8.2 en 3.1.2.6.

Derneist kinne jo in ark mei markearring brûke om paragraaf 3 fan it probleem op te lossen. Wy implementearje it sa:

2.4. Wy rjochtsje ferkear fan lokale kliïnten fan 'e routinglisten nei de passende tabellen:

/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 resultaat sjocht it der sa út:

Multivan en routing op Mikrotik RouterOS

3. Stel in ferbining mei de ISP en ynskeakelje branded routing

3.1. Stel in ferbining mei ISP1 yn:
3.1.1. Konfigurearje in statysk IP-adres:

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

3.1.2. Stel statyske routing yn:
3.1.2.1. Foegje in standert "need"-rûte ta:

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

Opmerking. Dizze rûte lit ferkear fan lokale prosessen de rûtebeslútstadium passe, nettsjinsteande de steat fan 'e keppelings fan ien fan' e providers. De nuânse fan útgeande lokaal ferkear is dat om it pakket op syn minst earne te ferpleatsen, moat de haadroutingtabel in aktive rûte hawwe nei de standertpoarte. Sa net, dan sil it pakket gewoan wurde ferneatige.

As ark útwreiding kontrolearje gateway Foar in djipper analyze fan it kanaal steat, Ik stel foar mei help fan de rekursive rûte metoade. De essinsje fan 'e metoade is dat wy de router fertelle om in paad nei syn poarte te sykjen net direkt, mar troch in tuskenpoarte. 4.2.2.1, 4.2.2.2 en 4.2.2.3 wurde keazen as sadanich "test" poarten foar respektivelik ISP1, ISP2 en ISP3.

3.1.2.2. Rûte nei it "ferifikaasje" 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

Opmerking. Wy ferleegje de berikwearde nei de standert yn ROS-doelomfang om 4.2.2.1 as in rekursive poarte yn 'e takomst te brûken. Ik beklamje: de omfang fan 'e rûte nei it "test" adres moat minder wêze as of gelyk oan it doelbereik fan 'e rûte dy't ferwize nei de test ien.

3.1.2.3. Rekursive standertrûte foar ferkear sûnder rûtemerk:

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

Opmerking. De ôfstân = 2 wearde wurdt brûkt omdat ISP1 wurdt ferklearre as de earste reservekopy neffens de taak betingsten.

3.1.2.4. Rekursive standertrûte foar ferkear mei rûtemerk "to_isp1":

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

Opmerking. Eins begjinne wy ​​hjir einliks te genietsjen fan de fruchten fan it tariedend wurk dat yn paragraaf 2 waard útfierd.


Op dizze rûte, alle ferkear dat hat de mark rûte "to_isp1" wurdt rjochte oan de poarte fan de earste provider, nettsjinsteande hokker standert poarte is op it stuit aktyf foar de haadtafel.

3.1.2.5. Earste fallback rekursive standertrûte foar ferkear mei ISP2 en ISP3 tagged:

/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

Opmerking. Dizze rûtes binne ûnder oare nedich om ferkear te reservearjen fan lokale netwurken dy't lid binne fan 'e adreslist "to_isp*"'

3.1.2.6. Wy registrearje de rûte foar it lokale ferkear fan 'e router nei it ynternet fia ISP1:

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

Opmerking. Yn kombinaasje mei de regels út paragraaf 1.8.2 jout it tagong ta it winske kanaal mei in opjûne boarne. Dit is kritysk foar it bouwen fan tunnels dy't it lokale IP-adres oantsjutte (EoIP, IP-IP, GRE). Sûnt de regels yn ip rûte regels wurde útfierd fan boppen nei ûnderen, oant de earste wedstriid fan de betingsten, dan dizze regel moat wêze nei de regels út klausule 1.8.2.

3.1.3. Wy registrearje de NAT-regel foar útgeand ferkear:

/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

Opmerking. NATim alles wat útgiet, útsein wat yn it IPsec-belied komt. Ik besykje gjin aksje = maskerade te brûken, útsein as perfoarst nedich. It is stadiger en mear boarne yntinsiver dan src-nat omdat it berekkent it NAT adres foar eltse nije ferbining.

3.1.4. Wy stjoere kliïnten út 'e list dy't ferbean tagong fia oare providers direkt nei de poarte fan' e ISP1-provider.

/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

Opmerking. action=rûte hat in hegere prioriteit en wurdt tapast foar oare routingregels.


place-before=0 - pleatst ús regel earst yn 'e list.

3.2. Stel in ferbining mei ISP2 yn.

Sûnt de ISP2-oanbieder ús de ynstellings fia DHCP jout, is it ridlik om de nedige wizigingen te meitsjen mei in skript dat begjint as de DHCP-kliïnt wurdt trigger:

/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

It skript sels yn it Winbox-finster:

Multivan en routing op Mikrotik RouterOS
Opmerking. It earste diel fan it skript wurdt aktivearre as de lease mei súkses wurdt krigen, it twadde - neidat de lease is frijlitten.Sjoch noat 2

3.3. Wy sette in ferbining mei de ISP3 provider.

Sûnt de ynstellingsprovider ús dynamysk jout, is it ridlik om de nedige wizigingen te meitsjen mei skripts dy't begjinne nei't de ppp-ynterface is ferhege en nei de hjerst.

3.3.1. Earst konfigurearje wy it profyl:

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

It skript sels yn it Winbox-finster:

Multivan en routing op Mikrotik RouterOS
Opmerking. String
/ ip firewall mangle set [fine comment = "Connmark yn fan ISP3"] in-interface = $"ynterface";
kinne jo de werneaming fan 'e ynterface korrekt behannelje, om't it wurket mei syn koade en net de werjeftenamme.

3.3.2. Meitsje no, mei it profyl, in ppp-ferbining:

/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 lêste touch, lit ús de klok ynstelle:

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

Foar dyjingen dy't lêze oant it ein

De foarstelde manier om in multivan te realisearjen is de persoanlike foarkar fan 'e skriuwer en is net de ienige mooglike. De ROS toolkit is wiidweidich en fleksibel, dy't oan 'e iene kant swierrichheden foar begjinners feroarsaket, en oan' e oare kant is de reden foar syn populariteit. Learje, besykje, ûntdek nije ark en oplossingen. Bygelyks, as in tapassing fan 'e ferwurven kennis, is it mooglik om it ark te ferfangen yn dizze útfiering fan' e multivan check-gateway mei rekursive rûtes nei netwatch.

Notysjes

  1. check-gateway - in meganisme wêrmei jo de rûte kinne deaktivearje nei twa opienfolgjende net-suksesfolle kontrôles fan 'e poarte foar beskikberens. De kontrôle wurdt ien kear elke 10 sekonden útfierd, plus de antwurd-timeout. Yn totaal leit de eigentlike skeakeltiming yn it berik fan 20-30 sekonden. As sa'n wikseltiming net genôch is, is d'r in opsje om it ark te brûken netwatch, wêr't de kontrôle timer mei de hân ynsteld wurde kin. check-gateway fjoer net op intermitterend pakketferlies op 'e keppeling.

    Belangryk! It deaktivearjen fan in primêre rûte sil alle oare rûtes deaktivearje dy't dernei ferwize. Dêrom, foar harren te spesifisearjen check-gateway=ping net nedich.

  2. It bart dat der in mislearring optreedt yn it DHCP-meganisme, dat liket op in kliïnt fêst te sitten yn 'e fernijingsstatus. Yn dit gefal sil it twadde diel fan it skript net wurkje, mar it sil net foarkomme dat ferkear goed rint, om't de steat de oerienkommende rekursive rûte folget.
  3. ECMP (Equal Cost Multi-Path) - yn ROS is it mooglik om in rûte yn te stellen mei ferskate poarten en deselde ôfstân. Yn dit gefal sille ferbiningen wurde ferdield oer kanalen mei it round robin-algoritme, yn ferhâlding mei it oantal oantsjutte poarten.

Foar de ympuls om it artikel te skriuwen, helpe by it foarmjen fan har struktuer en pleatsing fan aksinten - persoanlike tankberens foar Evgeny @jscar

Boarne: www.habr.com