Multivan и рутирање на Mikrotik RouterOS

Вовед

Преземањето на статијата, покрај суетата, беше поттикнато и од депресивната фреквенција на прашања на оваа тема во профилните групи на телеграмската заедница на руски јазик. Статијата е наменета за почетници администратори на Mikrotik RouterOS (во натамошниот текст ROS). Се занимава само со мултиван, со акцент на рутирањето. Како бонус, има минимално доволно поставки за да се обезбеди безбедно и удобно работење. Оние кои бараат обелоденување на темите на редици, load balancing, vlans, bridges, повеќестепена длабока анализа на состојбата на каналот и слично - можеби нема да губат време и напор за читање.

Сурови податоци

Како предмет на тестирање, избран е рутер со пет порти Mikrotik со ROS верзија 6.45.3. Ќе го насочува сообраќајот помеѓу две локални мрежи (LAN1 и LAN2) и три провајдери (ISP1, ISP2, ISP3). Каналот до ISP1 има статична „сива“ адреса, ISP2 - „бела“, добиена преку DHCP, ISP3 - „бела“ со овластување PPPoE. Дијаграмот за поврзување е прикажан на сликата:

Multivan и рутирање на Mikrotik RouterOS

Задачата е да го конфигурирате рутерот MTK врз основа на шемата така што:

  1. Обезбедете автоматско префрлување на добавувач на резервни копии. Главниот провајдер е ISP2, првата резерва е ISP1, втората резерва е ISP3.
  2. Организирајте LAN1 мрежен пристап до Интернет само преку ISP1.
  3. Обезбедете можност за насочување на сообраќајот од локалните мрежи на Интернет преку избраниот провајдер врз основа на списокот со адреси.
  4. Обезбедете можност за објавување услуги од локалната мрежа на Интернет (DSTNAT)
  5. Поставете филтер за заштитен ѕид за да обезбедите минимална доволна безбедност од Интернет.
  6. Рутерот може да издава сопствен сообраќај преку кој било од трите провајдери, во зависност од избраната изворна адреса.
  7. Осигурете се дека пакетите за одговор се насочени до каналот од кој дошле (вклучувајќи LAN).

Забелешка Ќе го конфигурираме рутерот „од нула“ за да гарантираме отсуство на изненадувања во почетните конфигурации „надвор од кутијата“ кои се менуваат од верзија до верзија. Winbox е избран како алатка за конфигурација, каде промените ќе бидат визуелно прикажани. Самите поставки ќе бидат поставени со команди во терминалот Winbox. Физичката врска за конфигурација е направена со директно поврзување со интерфејсот Ether5.

Малку размислување за тоа што е мултиван, дали е проблем или се лукави паметни луѓе околу плетењето мрежи за заговор

Истражувачки и внимателен администратор, поставувајќи ваква или слична шема сам, одеднаш одеднаш сфаќа дека таа веќе работи нормално. Да, да, без вашите сопствени табели за рутирање и други правила за маршрутата, со кои се полни повеќето написи на оваа тема. Ајде да провериме?

Можеме ли да конфигурираме адресирање на интерфејси и стандардни порти? Да:

На интернет провајдерот 1, адресата и портата беа регистрирани со растојание=2 и check-gateway=пинг.
На ISP2, стандардната поставка за клиент dhcp - соодветно, растојанието ќе биде еднакво на еден.
На ISP3 во поставките на клиентот pppoe кога add-default-route=да стави default-route-distance=3.

Не заборавајте да регистрирате NAT на излезот:

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

Како резултат на тоа, корисниците на локалните сајтови се забавуваат преземајќи мачки преку главниот ISP2 провајдер и има резервација на канал со помош на механизмот проверете го порталот Види белешка 1

Се спроведува точка 1 од задачата. Каде е мултиванот со неговите ознаки? Не…

Понатаму. Треба да ослободите одредени клиенти од LAN преку ISP1:

/ip firewall mangle add action=route chain=prerouting dst-address-list=!BOGONS
passthrough=да route-dst=100.66.66.1 src-address-list=Преку_ISP1
/ip firewall mangle add action=route chain=prerouting dst-address-list=!BOGONS
премин=без рута-dst=100.66.66.1 src-адреса=192.168.88.0/24

Точките 2 и 3 од задачата се имплементирани. Етикети, поштенски марки, правила за рути, каде си?!

Дали треба да дадете пристап до вашиот омилен OpenVPN сервер со адреса 172.17.17.17 за клиенти од Интернет? Ве молиме:

/ip cloud set ddns-enabled=да

Како колеги, на клиентот му го даваме излезниот резултат: “:стави [ip cloud get dns-name]"

Регистрираме препраќање порти од Интернет:

/ip firewall nat add action=dst-nat chain=dstnat dst-port=1194
in-interface-list=WAN протокол=udp to-addresses=172.17.17.17

Ставката 4 е подготвена.

Поставивме заштитен ѕид и друго обезбедување за точка 5, истовремено ни е драго што веќе се работи за корисниците и посегнуваме по контејнер со омилен пијалок ...
А! Тунелите се заборавени.

l2tp-client, конфигуриран од статијата на Google, се искачи на вашиот омилен холандски VDS? Да.
l2tp-серверот со IPsec се зголеми и клиентите по име DNS од IP Cloud (види погоре.) се држат? Да.
Наведнувајќи се на столот, пиејќи пијалок, мрзеливо ги разгледуваме точките 6 и 7 од задачата. Мислиме - дали ни треба? Сеедно, така функционира (в) ... Значи, ако сè уште не е потребно, тогаш тоа е тоа. Имплементиран мултиван.

Што е мултиван? Ова е поврзување на неколку интернет канали со еден рутер.

Не мора да ја читате написот понатаму, бидејќи што може да има освен покажување на сомнителна применливост?

За оние кои остануваат, кои се заинтересирани за точките 6 и 7 од задачата, а исто така го чувствуваат чешањето на перфекционизмот, нурнуваме подлабоко.

Најважната задача за имплементирање на мултиван е правилното насочување на сообраќајот. Имено: без разлика кој (или кој) Види. забелешка 3 каналот(ите) на интернет провајдерот ја гледа стандардната рута на нашиот рутер, тој треба да врати одговор на точниот канал од кој дошол пакетот. Задачата е јасна. Каде е проблемот? Навистина, во едноставна локална мрежа, задачата е иста, но никој не се мачи со дополнителни поставки и не чувствува проблеми. Разликата е во тоа што секој рутирачки јазол на Интернет е достапен преку секој наш канал, а не преку строго специфичен, како во едноставна LAN. И „проблемата“ е што ако дојде до нас барање за IP адресата на ISP3, тогаш во нашиот случај одговорот ќе оди преку каналот ISP2, бидејќи стандардната порта е насочена таму. Остава и ќе биде отфрлен од давателот како неточен. Проблемот е идентификуван. Како да се реши?

Решението е поделено во три фази:

  1. Претходно поставување. Во оваа фаза ќе се постават основните поставки на рутерот: локална мрежа, заштитен ѕид, списоци со адреси, фиба NAT итн.
  2. Мултиван. Во оваа фаза, потребните врски ќе бидат означени и подредени во рутирачки табели.
  3. Поврзување со интернет провајдер. Во оваа фаза ќе се конфигурираат интерфејсите кои обезбедуваат поврзување на Интернет, ќе се насочуваат и ќе се активира механизмот за резервација на интернет канали.

1. Претходно поставување

1.1. Ја бришеме конфигурацијата на рутерот со командата:

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

се согласувам со "Опасно! Сепак да се ресетира? [y/N]:” и, по рестартирањето, се поврзуваме со Winbox преку MAC. Во оваа фаза, конфигурацијата и корисничката база се исчистени.

1.2. Креирај нов корисник:

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

најавете се под него и избришете го стандардниот:

/user remove admin

Забелешка Отстранувањето и неоневозможувањето на стандардниот корисник е она што авторот го смета за побезбедно и препорачува за употреба.

1.3. Ние создаваме основни списоци на интерфејси за практичноста на работењето во заштитен ѕид, поставки за откривање и други MAC сервери:

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

Потпишување интерфејси со коментари

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

и пополнете ги списоците за интерфејс:

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

Забелешка Пишувањето разбирливи коментари е вредно за времето поминато на ова, плус тоа во голема мера го олеснува решавањето на проблеми и разбирањето на конфигурацијата.

Авторот смета дека е неопходно, од безбедносни причини, да го додаде интерфејсот ether3 во списокот на интерфејси „WAN“, и покрај фактот што протоколот ip нема да помине низ него.

Не заборавајте дека откако интерфејсот PPP ќе се подигне на ether3, тој исто така ќе треба да се додаде во списокот на интерфејси „WAN“

1.4. Го криеме рутерот од откривање и контрола на соседството од мрежите на провајдерите преку 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. Ние создаваме минимален доволен сет на правила за филтер за заштитен ѕид за да го заштитиме рутерот:

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

(правилото обезбедува дозвола за воспоставени и поврзани врски кои се иницирани од двете поврзани мрежи и од самиот рутер)

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

(пинг и не само пинг. Сите icmp се дозволени. Многу корисно за наоѓање проблеми со MTU)

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

(правилото со кое се затвора влезниот синџир забранува се друго што доаѓа од Интернет)

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

(правилото дозволува воспоставени и поврзани врски што минуваат низ рутерот)

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

(правилото ги ресетира врските со конекција-состојба=невалидно поминување низ рутерот. Силно го препорачува Микротик, но во некои ретки ситуации може да го блокира корисниот сообраќај)

/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

(правилото забранува пакетите кои доаѓаат од Интернет и не ја поминале процедурата dstnat да минуваат низ рутерот. Ова ќе ги заштити локалните мрежи од натрапници кои, бидејќи се во истиот домен на емитување со нашите надворешни мрежи, ќе ги регистрираат нашите надворешни IP-адреси како портал и, на тој начин, обидете се да ги „истражите“ нашите локални мрежи.)

Забелешка Да претпоставиме дека мрежите LAN1 и LAN2 се доверливи и сообраќајот помеѓу нив и од нив не е филтриран.

1.6. Создадете листа со список на мрежи кои не се рутираат:

/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

(Ова е список на адреси и мрежи кои не се рутираат на Интернет и соодветно ќе се следат.)

Забелешка Списокот може да се промени, затоа ве советувам периодично да ја проверувате релевантноста.

1.7. Поставете DNS за самиот рутер:

/ip dns set servers=1.1.1.1,8.8.8.8

Забелешка Во тековната верзија на ROS, динамичните сервери имаат предност пред статичните. Барањето за решавање на името се испраќа до првиот сервер по ред во списокот. Преминот кон следниот сервер се врши кога тековниот е недостапен. Тајмаутот е голем - повеќе од 5 секунди. Враќањето назад, кога ќе се продолжи со „паднатиот сервер“, не се случува автоматски. Со оглед на овој алгоритам и присуството на мултиван, авторот препорачува да не се користат сервери обезбедени од провајдерите.

1.8. Поставете локална мрежа.
1.8.1. Ние конфигурираме статични IP адреси на 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. Ги поставивме правилата за маршрутите до нашите локални мрежи преку главната рутирачка табела:

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

Забелешка Ова е еден од брзите и лесни начини за пристап до LAN адреси со извори на надворешни IP адреси на интерфејси на рутерот што не поминуваат низ стандардната рута.

1.8.3. Овозможете фиба NAT за LAN1 и 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

Забелешка Ова ви овозможува да пристапите до вашите ресурси (dstnat) преку надворешна IP адреса додека сте внатре во мрежата.

2. Всушност, имплементацијата на многу точниот мултиван

За да го решиме проблемот со „одговор од каде побарале“, ќе користиме две алатки за ROS: ознака за поврзување и ознака за насочување. ознака за поврзување ви овозможува да ја означите саканата врска и потоа да работите со оваа ознака како услов за аплицирање ознака за насочување. И веќе со ознака за насочување можно да се работи во IP пат и правила на рутата. Ги сфативме алатките, сега треба да одлучите кои врски да ги обележите - еднаш, точно каде да означите - две.

Со првиот, сè е едноставно - мора да ги означиме сите врски што доаѓаат до рутерот од Интернет преку соодветниот канал. Во нашиот случај, тоа ќе бидат три етикети (по бројот на канали): „conn_isp1“, „conn_isp2“ и „conn_isp3“.

Нијансата со втората е дека дојдовните врски ќе бидат од два вида: транзитни и оние што се наменети за самиот рутер. Механизмот на ознаката за поврзување работи во табелата магли. Размислете за движењето на пакетот на поедноставен дијаграм, љубезно составен од специјалистите на ресурсот mikrotik-trainings.com (не рекламирање):

Multivan и рутирање на Mikrotik RouterOS

Следејќи ги стрелките, гледаме дека пакетот пристигнува на „влез интерфејс“, поминува низ синџирот “Прерутирање“ и дури тогаш се дели на транзитен и локално во блокот “Одлука за рутирање“. Затоа, за да убиеме две птици со еден камен, користиме Ознака за поврзување во табелата Mangle Пред-насочување синџири Прерутирање.

Забелешка:. Во ROS, етикетите „Ознака за насочување“ се наведени како „Табела“ во делот Ip/Routes/Rules и како „Ознака за насочување“ во другите делови. Ова може да внесе одредена конфузија во разбирањето, но, всушност, ова е истото и е аналог на rt_tables во iproute2 на Linux.

2.1. Ги означуваме дојдовните врски од секој од давателите на услуги:

/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

Забелешка За да не ги означувам веќе означените врски, ја користам состојбата конекција-марк=без ознака наместо конекција-состојба=ново бидејќи мислам дека ова е поправилно, како и отфрлање на пад на невалидни врски во влезниот филтер.


passthrough=не - затоа што во овој метод на имплементација, повторното обележување е исклучено и, за да се забрза, можете да го прекинете набројувањето на правилата по првиот натпревар.

Треба да се има предвид дека сè уште не се мешаме на никаков начин со рутирањето. Сега има само фази на подготовка. Следната фаза на имплементација ќе биде обработка на транзитниот сообраќај кој се враќа преку воспоставената врска од дестинацијата во локалната мрежа. Оние. оние пакети кои (види го дијаграмот) поминале низ рутерот на патот:

“Input Interface”=>”Prerouting”=>”Routing Decision”=>”Forward”=>”Post Routing”=>”Излезен интерфејс” и стигнале до нивниот адресант во локалната мрежа.

Важно! Во ROS, не постои логична поделба на надворешни и внатрешни интерфејси. Ако ја следиме патеката на пакетот одговор според горниот дијаграм, тогаш тој ќе ја следи истата логична патека како и барањето:

“Input Interface”=>”Prerouting”=>”Routing Decision”=>”Forward”=>”Post Routing”=>”Излезен интерфејс” само за барање“влез интерфејс“ беше интерфејсот на интернет провајдерот, а за одговорот – LAN

2.2. Го насочуваме транзитниот сообраќај на одговор до соодветните табели за насочување:

/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

Коментар. in-interface-list=!WAN - работиме само со сообраќај од локалната мрежа и dst-address-type=!local што ја нема дестинацијата на адресата на интерфејсите на самиот рутер.

Истото за локалните пакети што дојдоа до рутерот на патот:

„Влезен интерфејс“=>„Претходно насочување“=>„Одлука за насочување“=>„Влез“=>„Локален процес“

Важно! Одговорот ќе оди на следниов начин:

„Локален процес“=>“Одлука за насочување“=>„Излез“=>„Рутирање на пост“=>„Излезен интерфејс“

2.3. Го насочуваме одговорот на локалниот сообраќај до соодветните табели за рутирање:

/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

Во оваа фаза, задачата да се подготви за испраќање одговор на интернет каналот од кој дојде барањето може да се смета за решена. Сè е означено, означено и подготвено за рутирање.
Одличен „страничен“ ефект на ова поставување е способноста да се работи со препраќање порти DSNAT од двата провајдери (ISP2, ISP3) истовремено. Воопшто не, бидејќи на ISP1 имаме адреса која не може да се рутира. Овој ефект е важен, на пример, за сервер за пошта со два MX кои гледаат на различни интернет канали.

За да ги елиминираме нијансите на работата на локалните мрежи со надворешни IP рутери, ги користиме решенијата од ставовите. 1.8.2 и 3.1.2.6.

Покрај тоа, можете да користите алатка со ознаки за да го решите ставот 3 од проблемот. Ние го спроведуваме вака:

2.4. Ние го насочуваме сообраќајот од локалните клиенти од списоците за насочување до соодветните табели:

/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

Како резултат на тоа, изгледа нешто вака:

Multivan и рутирање на Mikrotik RouterOS

3. Поставете врска со интернет провајдерот и овозможете брендирано рутирање

3.1. Поставете врска со ISP1:
3.1.1. Конфигурирајте статична IP адреса:

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

3.1.2. Поставете статичко рутирање:
3.1.2.1. Додајте стандардна рута за „итни случаи“:

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

Забелешка Оваа рута овозможува сообраќајот од локалните процеси да ја помине фазата Решение за рута, без оглед на состојбата на врските на кој било од давателите на услуги. Нијансата на појдовниот локален сообраќај е дека за да може пакетот да се движи барем некаде, главната рутирачка табела мора да има активна рута до стандардната порта. Ако не, тогаш пакетот едноставно ќе биде уништен.

Како додаток на алатката проверете го порталот За подлабока анализа на состојбата на каналот, предлагам да се користи методот на рекурзивна рута. Суштината на методот е тоа што му кажуваме на рутерот да бара патека до својата порта не директно, туку преку средна порта. 4.2.2.1, 4.2.2.2 и 4.2.2.3 ќе бидат избрани како такви „тестни“ портали за ISP1, ISP2 и ISP3 соодветно.

3.1.2.2. Пат до адресата „верификација“:

/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

Забелешка Ја намалуваме вредноста на опсегот на стандардното во целниот опсег на ROS со цел да ја користиме 4.2.2.1 како рекурзивен портал во иднина. Нагласувам: опсегот на рутата до „тестната“ адреса мора да биде помал или еднаков на целниот опсег на рутата што ќе се однесува на пробната.

3.1.2.3. Рекурзивна стандардна рута за сообраќај без ознака за насочување:

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

Забелешка Вредноста растојание=2 се користи затоа што ISP1 е деклариран како прва резервна копија според условите на задачата.

3.1.2.4. Рекурзивна стандардна рута за сообраќај со ознака за насочување „to_isp1“:

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

Забелешка Всушност, овде конечно почнуваме да уживаме во плодовите на подготвителната работа што беше спроведена во став 2.


На оваа рута, целиот сообраќај што ја има ознаката рута „to_isp1“ ќе биде насочен кон портата на првиот провајдер, без оглед на тоа кој стандарден портал е моментално активен за главната табела.

3.1.2.5. Прва резервна рекурзивна стандардна рута за сообраќај означен со ISP2 и 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

Забелешка Овие рути се потребни, меѓу другото, за да се резервира сообраќај од локални мрежи кои се членови на списокот со адреси „to_isp*“

3.1.2.6. Ние ја регистрираме рутата за локалниот сообраќај на рутерот до Интернет преку ISP1:

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

Забелешка Во комбинација со правилата од став 1.8.2, обезбедува пристап до саканиот канал со даден извор. Ова е критично за изградба на тунели кои ја специфицираат локалната странична IP адреса (EoIP, IP-IP, GRE). Бидејќи правилата во правилата за ip route се извршуваат од горе до долу, до првото совпаѓање на условите, тогаш ова правило треба да биде по правилата од клаузулата 1.8.2.

3.1.3. Го регистрираме NAT правилото за појдовен сообраќај:

/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

Забелешка NATim сè што излегува, освен она што влегува во политиките на IPsec. Се трудам да не користам акција=маскарада освен ако е апсолутно неопходно. Тој е побавен и поинтензивен за ресурси од src-nat бидејќи ја пресметува NAT адресата за секоја нова врска.

3.1.4. Ние испраќаме клиенти од списокот на кои им е забранет пристап преку други провајдери директно до портата на провајдерот 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

Забелешка action=route има повисок приоритет и се применува пред другите правила за рутирање.


place-before=0 - го става нашето правило на прво место во листата.

3.2. Поставете врска со ISP2.

Бидејќи провајдерот ISP2 ни ги дава поставките преку DHCP, разумно е да ги направиме потребните промени со скрипта што започнува кога ќе се активира клиентот 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

Самата скрипта во прозорецот Winbox:

Multivan и рутирање на Mikrotik RouterOS
Забелешка Првиот дел од сценариото се активира кога закупот е успешно добиен, вториот - по ослободувањето на закупот.Види белешка 2

3.3. Поставивме врска со провајдерот ISP3.

Бидејќи давателот на поставките ни дава динамична, разумно е да ги направиме потребните промени со скрипти кои започнуваат откако ќе се подигне интерфејсот ppp и по падот.

3.3.1. Прво го конфигурираме профилот:

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

Самата скрипта во прозорецот Winbox:

Multivan и рутирање на Mikrotik RouterOS
Забелешка Линија
/ip firewall mangle set [find comment="Connmark in from ISP3"] in-interface=$"interface";
ви овозможува правилно да се справите со преименувањето на интерфејсот, бидејќи тој работи со неговиот код, а не со приказното име.

3.3.2. Сега, користејќи го профилот, креирајте 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

Како последен допир, да го поставиме часовникот:

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

За оние кои читаат до крај

Предложениот начин за имплементација на мултиван е лична преференца на авторот и не е единствениот можен. Комплетот со алатки ROS е обемен и флексибилен, што, од една страна, предизвикува тешкотии кај почетниците, а од друга страна, е причина за неговата популарност. Научете, обидете се, откријте нови алатки и решенија. На пример, како примена на стекнатото знаење, можно е да се замени алатот во оваа имплементација на мултиванот чек-порта со рекурзивни правци до мрежен часовник.

Белешки

  1. чек-порта - механизам кој ви овозможува да ја деактивирате рутата по две последователни неуспешни проверки на портата за достапност. Проверката се врши еднаш на секои 10 секунди, плус истекот на одговорот. Севкупно, вистинското време на префрлување лежи во опсег од 20-30 секунди. Ако таквото време на префрлување не е доволно, постои опција да се користи алатката мрежен часовник, каде што тајмерот за проверка може да се постави рачно. чек-порта не вклучува наизменична загуба на пакети на врската.

    Важно! Деактивирањето на примарна рута ќе ги деактивира сите други маршрути што се однесуваат на неа. Затоа, за тие да укажуваат check-gateway=пинг не е потребно

  2. Се случува да дојде до дефект во механизмот DHCP, кој изгледа како клиент заглавен во состојба на обновување. Во овој случај, вториот дел од сценариото нема да работи, но нема да го спречи сообраќајот да оди правилно, бидејќи државата ја следи соодветната рекурзивна рута.
  3. ECMP (повеќе патеки со еднакви трошоци) - во ROS е можно да се постави рута со неколку порти и исто растојание. Во овој случај, врските ќе бидат дистрибуирани низ каналите користејќи го алгоритмот за круг, пропорционално на бројот на наведените порти.

За поттик за пишување на статијата, помогнете во обликувањето на нејзината структура и поставувањето на акцентите - лична благодарност до Евгениј @jscar

Извор: www.habr.com