Multivan dan penghalaan pada Mikrotik RouterOS

Pengenalan

Mengambil artikel itu, sebagai tambahan kepada kesombongan, didorong oleh kekerapan soalan yang menyedihkan mengenai topik ini dalam kumpulan profil komuniti telegram berbahasa Rusia. Artikel ini ditujukan kepada pentadbir Mikrotik RouterOS (selepas ini dirujuk sebagai ROS) pemula. Ia hanya berurusan dengan multivan, dengan penekanan pada penghalaan. Sebagai bonus, terdapat tetapan minimum yang mencukupi untuk memastikan operasi yang selamat dan mudah. Mereka yang mencari pendedahan topik baris gilir, pengimbangan beban, vlan, jambatan, analisis mendalam berbilang peringkat keadaan saluran dan seumpamanya - mungkin tidak membuang masa dan usaha membaca.

Data mentah

Sebagai subjek ujian, penghala Mikrotik lima port dengan versi ROS 6.45.3 telah dipilih. Ia akan mengarahkan trafik antara dua rangkaian tempatan (LAN1 dan LAN2) dan tiga pembekal (ISP1, ISP2, ISP3). Saluran ke ISP1 mempunyai alamat "kelabu" statik, ISP2 - "putih", diperoleh melalui DHCP, ISP3 - "putih" dengan kebenaran PPPoE. Rajah sambungan ditunjukkan dalam rajah:

Multivan dan penghalaan pada Mikrotik RouterOS

Tugasnya adalah untuk mengkonfigurasi penghala MTK berdasarkan skema supaya:

  1. Sediakan penukaran automatik kepada pembekal sandaran. Pembekal utama ialah ISP2, rizab pertama ialah ISP1, rizab kedua ialah ISP3.
  2. Atur akses rangkaian LAN1 ke Internet hanya melalui ISP1.
  3. Menyediakan keupayaan untuk menghalakan trafik dari rangkaian tempatan ke Internet melalui pembekal yang dipilih berdasarkan senarai alamat.
  4. Menyediakan kemungkinan perkhidmatan penerbitan dari rangkaian tempatan ke Internet (DSTNAT)
  5. Sediakan penapis tembok api untuk menyediakan keselamatan minimum yang mencukupi daripada Internet.
  6. Penghala boleh mengeluarkan trafiknya sendiri melalui mana-mana tiga pembekal, bergantung pada alamat sumber yang dipilih.
  7. Pastikan paket respons dihalakan ke saluran dari mana ia datang (termasuk LAN).

Komen. Kami akan mengkonfigurasi penghala "dari awal" untuk menjamin ketiadaan kejutan dalam konfigurasi permulaan "di luar kotak" yang berubah dari versi ke versi. Winbox telah dipilih sebagai alat konfigurasi, di mana perubahan akan dipaparkan secara visual. Tetapan itu sendiri akan ditetapkan oleh arahan dalam terminal Winbox. Sambungan fizikal untuk konfigurasi dibuat melalui sambungan terus ke antara muka Ether5.

Sedikit alasan tentang apa itu multivan, adakah ia masalah atau orang pintar yang licik di sekitar menganyam rangkaian konspirasi

Pentadbir yang ingin tahu dan penuh perhatian, menubuhkan skim sedemikian atau serupa sendiri, tiba-tiba menyedari bahawa ia sudah berfungsi seperti biasa. Ya, ya, tanpa jadual penghalaan tersuai anda dan peraturan laluan lain, yang kebanyakan artikel mengenai topik ini penuh. Jom semak?

Bolehkah kita mengkonfigurasi pengalamatan pada antara muka dan get laluan lalai? ya:

Pada ISP1, alamat dan pintu masuk telah didaftarkan dengan jarak=2 и check-gateway=ping.
Pada ISP2, tetapan klien dhcp lalai - oleh itu, jarak akan sama dengan satu.
Pada ISP3 dalam tetapan klien pppoe apabila add-default-route=ya letak lalai-laluan-jarak=3.

Jangan lupa untuk mendaftar NAT di pintu keluar:

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

Akibatnya, pengguna tapak tempatan berseronok memuat turun kucing melalui pembekal utama ISP2 dan terdapat tempahan saluran menggunakan mekanisme semak pintu masuk Lihat nota 1

Perkara 1 tugasan dilaksanakan. Di manakah multivan dengan tandanya? tidak…

Selanjutnya. Anda perlu melepaskan pelanggan tertentu daripada LAN melalui ISP1:

/ip firewall mangle add action=rantaian laluan=prerouting dst-address-list=!BOGONS
passthrough=ya route-dst=100.66.66.1 src-address-list=Melalui_ISP1
/ip firewall mangle add action=rantaian laluan=prerouting dst-address-list=!BOGONS
passthrough=tiada laluan-dst=100.66.66.1 src-address=192.168.88.0/24

Perkara 2 dan 3 tugasan telah dilaksanakan. Label, setem, peraturan laluan, di manakah anda?!

Perlu memberikan akses kepada pelayan OpenVPN kegemaran anda dengan alamat 172.17.17.17 untuk pelanggan dari Internet? Tolong:

/ip cloud set ddns-enabled=yes

Sebagai rakan sebaya, kami memberikan pelanggan hasil output: ": letak [ip cloud dapatkan dns-name]"

Kami mendaftarkan port forwarding dari Internet:

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

Item 4 sudah siap.

Kami menyediakan tembok api dan keselamatan lain untuk titik 5, pada masa yang sama kami gembira kerana semuanya sudah berfungsi untuk pengguna dan mencapai bekas dengan minuman kegemaran ...
A! Terowong dilupakan.

l2tp-client, dikonfigurasikan oleh artikel google, telah meningkat kepada VDS Belanda kegemaran anda? ya.
l2tp-server dengan IPsec telah meningkat dan pelanggan menggunakan nama DNS daripada IP Cloud (lihat di atas.) berpaut? ya.
Bersandar di kerusi, menghirup minuman, kami dengan malas mempertimbangkan mata 6 dan 7 tugas itu. Kami fikir - adakah kami memerlukannya? Sama sahaja, ia berfungsi seperti itu (c) ... Jadi, jika ia masih tidak diperlukan, maka itu sahaja. Multivan dilaksanakan.

Apa itu multivan? Ini ialah sambungan beberapa saluran Internet ke satu penghala.

Anda tidak perlu membaca artikel itu dengan lebih lanjut, kerana apa yang boleh ada selain menunjukkan kebolehgunaan yang meragukan?

Bagi mereka yang kekal, yang berminat dengan mata 6 dan 7 tugasan, dan juga merasakan gatal-gatal kesempurnaan, kami menyelam lebih dalam.

Tugas yang paling penting untuk melaksanakan multivan ialah penghalaan trafik yang betul. Iaitu: tidak kira yang (atau yang) Lihat. nota 3 saluran ISP melihat laluan lalai pada penghala kami, ia harus mengembalikan respons kepada saluran tepat yang datangnya paket. Tugas itu jelas. Dimana masalahnya? Sesungguhnya, dalam rangkaian tempatan yang mudah, tugasnya adalah sama, tetapi tiada siapa yang mengganggu tetapan tambahan dan tidak merasa masalah. Perbezaannya ialah mana-mana nod yang boleh dihalakan di Internet boleh diakses melalui setiap saluran kami, dan bukan melalui satu yang khusus, seperti dalam LAN mudah. Dan "masalah" ialah jika permintaan datang kepada kami untuk alamat IP ISP3, maka dalam kes kami jawapannya akan melalui saluran ISP2, kerana gerbang lalai diarahkan ke sana. Meninggalkan dan akan dibuang oleh pembekal sebagai tidak betul. Masalahnya telah dikenalpasti. Bagaimana untuk menyelesaikannya?

Penyelesaian dibahagikan kepada tiga peringkat:

  1. Pratetap. Pada peringkat ini, tetapan asas penghala akan ditetapkan: rangkaian tempatan, tembok api, senarai alamat, NAT jepit rambut, dsb.
  2. Multivan. Pada peringkat ini, sambungan yang diperlukan akan ditanda dan diisih ke dalam jadual penghalaan.
  3. Menyambung ke ISP. Pada peringkat ini, antara muka yang menyediakan sambungan ke Internet akan dikonfigurasikan, penghalaan dan mekanisme tempahan saluran Internet akan diaktifkan.

1. Pratetap

1.1. Kami mengosongkan konfigurasi penghala dengan arahan:

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

bersetuju dengan "bahaya! Tetapkan semula? [y/N]:” dan, selepas but semula, kami menyambung dengan Winbox melalui MAC. Pada peringkat ini, konfigurasi dan pangkalan pengguna dikosongkan.

1.2. Buat pengguna baharu:

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

log masuk di bawahnya dan padam yang lalai:

/user remove admin

Komen. Ia adalah pengalihan keluar dan bukan melumpuhkan pengguna lalai yang pengarang anggap lebih selamat dan mengesyorkan untuk digunakan.

1.3. Kami mencipta senarai antara muka asas untuk kemudahan beroperasi dalam firewall, tetapan penemuan dan pelayan MAC yang lain:

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

Menandatangani antara muka dengan ulasan

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

dan isikan senarai antara muka:

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

Komen. Menulis komen yang boleh difahami adalah berbaloi dengan masa yang dihabiskan untuk perkara ini, dan ia sangat memudahkan penyelesaian masalah dan memahami konfigurasi.

Penulis menganggap perlu, atas sebab keselamatan, untuk menambah antara muka ether3 ke senarai antara muka "WAN", walaupun pada hakikatnya protokol ip tidak akan melaluinya.

Jangan lupa bahawa selepas antara muka PPP dinaikkan pada ether3, ia juga perlu ditambah ke senarai antara muka "WAN"

1.4. Kami menyembunyikan penghala daripada pengesanan dan kawalan kejiranan daripada rangkaian pembekal melalui 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. Kami mencipta set peraturan penapis tembok api minimum yang mencukupi untuk melindungi penghala:

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

(peraturan itu memberikan kebenaran untuk sambungan yang ditubuhkan dan berkaitan yang dimulakan daripada kedua-dua rangkaian yang disambungkan dan penghala itu sendiri)

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

(ping dan bukan sahaja ping. Semua icmp dibenarkan masuk. Sangat berguna untuk mencari masalah MTU)

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

(peraturan yang menutup rantaian input melarang semua yang datang dari Internet)

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

(peraturan membenarkan sambungan yang ditubuhkan dan berkaitan yang melalui penghala)

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

(peraturan menetapkan semula sambungan dengan connection-state=invalid passing through the router. Ia amat disyorkan oleh Mikrotik, tetapi dalam beberapa situasi yang jarang berlaku ia boleh menyekat lalu lintas yang berguna)

/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

(peraturan melarang paket yang datang dari Internet dan tidak melepasi prosedur dstnat untuk melalui penghala. Ini akan melindungi rangkaian tempatan daripada penceroboh yang, berada dalam domain penyiaran yang sama dengan rangkaian luaran kami, akan mendaftarkan IP luaran kami sebagai gerbang dan, oleh itu, cuba "meneroka" rangkaian tempatan kami.)

Komen. Mari kita anggap bahawa rangkaian LAN1 dan LAN2 dipercayai dan trafik antara mereka dan daripadanya tidak ditapis.

1.6. Buat senarai dengan senarai rangkaian tidak boleh laluan:

/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

(Ini ialah senarai alamat dan rangkaian yang tidak boleh dialihkan ke Internet dan akan diikuti dengan sewajarnya.)

Komen. Senarai ini tertakluk kepada perubahan, jadi saya menasihati anda untuk menyemak perkaitan secara berkala.

1.7. Sediakan DNS untuk penghala itu sendiri:

/ip dns set servers=1.1.1.1,8.8.8.8

Komen. Dalam versi semasa ROS, pelayan dinamik diutamakan daripada pelayan statik. Permintaan resolusi nama dihantar ke pelayan pertama mengikut urutan dalam senarai. Peralihan ke pelayan seterusnya dijalankan apabila pelayan semasa tidak tersedia. Tamat masa adalah besar - lebih daripada 5 saat. Kembali, apabila "pelayan yang jatuh" disambung semula, tidak berlaku secara automatik. Memandangkan algoritma ini dan kehadiran multivan, penulis mengesyorkan untuk tidak menggunakan pelayan yang disediakan oleh pembekal.

1.8. Sediakan rangkaian tempatan.
1.8.1. Kami mengkonfigurasi alamat IP statik pada antara muka 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. Kami menetapkan peraturan untuk laluan ke rangkaian tempatan kami melalui jadual penghalaan utama:

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

Komen. Ini adalah salah satu cara cepat dan mudah untuk mengakses alamat LAN dengan sumber alamat IP luaran antara muka penghala yang tidak melalui laluan lalai.

1.8.3. Dayakan NAT Jepit Rambut untuk LAN1 dan 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

Komen. Ini membolehkan anda mengakses sumber anda (dstnat) melalui IP luaran semasa berada di dalam rangkaian.

2. Sebenarnya, pelaksanaan multivan yang sangat betul

Untuk menyelesaikan masalah "menjawab dari mana mereka bertanya", kami akan menggunakan dua alat ROS: tanda sambungan и tanda laluan. tanda sambungan membolehkan anda menandakan sambungan yang diingini dan kemudian bekerja dengan tanda ini sebagai syarat untuk memohon tanda laluan. Dan sudah dengan tanda laluan mungkin untuk bekerja laluan ip и peraturan laluan. Kami mengetahui alat, kini anda perlu memutuskan sambungan mana yang hendak ditanda - sekali, tepat di mana untuk menandakan - dua.

Dengan yang pertama, semuanya mudah - kita mesti menandakan semua sambungan yang datang ke penghala dari Internet melalui saluran yang sesuai. Dalam kes kami, ini ialah tiga label (mengikut bilangan saluran): "conn_isp1", "conn_isp2" dan "conn_isp3".

Nuansa dengan yang kedua ialah sambungan masuk terdiri daripada dua jenis: transit dan yang dimaksudkan untuk penghala itu sendiri. Mekanisme tanda sambungan berfungsi dalam jadual mangle. Pertimbangkan pergerakan pakej pada rajah yang dipermudahkan, disusun oleh pakar sumber mikrotik-trainings.com (bukan pengiklanan):

Multivan dan penghalaan pada Mikrotik RouterOS

Mengikuti anak panah, kita melihat bahawa paket itu tiba di “antara muka input”, melalui rantaian “Pra laluan” dan barulah ia dibahagikan kepada transit dan setempat dalam blok “Keputusan penghalaan". Oleh itu, untuk membunuh dua burung dengan satu batu, kita gunakan Tanda Sambungan di dalam jadual Pra-laluan Mangle rantai Pra laluan.

Nota:. Dalam ROS, label "Tanda Penghalaan" disenaraikan sebagai "Jadual" dalam bahagian Ip/Laluan/Peraturan dan sebagai "Tanda Penghalaan" di bahagian lain. Ini mungkin menimbulkan kekeliruan dalam pemahaman, tetapi, sebenarnya, ini adalah perkara yang sama, dan merupakan analog rt_tables dalam iproute2 pada linux.

2.1. Kami menandakan sambungan masuk daripada setiap pembekal:

/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

Komen. Untuk tidak menandakan sambungan yang telah ditanda, saya menggunakan keadaan sambungan-tanda=tiada-tanda dan bukannya keadaan sambungan=baru kerana saya fikir ini lebih betul, serta penolakan sambungan tidak sah digugurkan dalam penapis input.


passthrough=no - kerana dalam kaedah pelaksanaan ini, penandaan semula dikecualikan dan, untuk mempercepatkan, anda boleh mengganggu pengiraan peraturan selepas perlawanan pertama.

Perlu diingat bahawa kami tidak campur tangan dalam apa-apa cara dengan penghalaan lagi. Sekarang hanya ada peringkat persiapan. Peringkat pelaksanaan seterusnya ialah pemprosesan trafik transit yang kembali melalui sambungan yang telah ditetapkan dari destinasi dalam rangkaian tempatan. Itu. paket-paket yang (lihat rajah) melalui penghala di sepanjang jalan:

“Antara Muka Input”=>”Prerouting”=>”Keputusan Penghalaan”=>”Forward”=>”Post Routing”=>”Output Interface” dan sampai ke penerima mereka dalam rangkaian tempatan.

Penting! Dalam ROS, tiada pembahagian logik kepada antara muka luaran dan dalaman. Jika kita mengesan laluan paket tindak balas mengikut rajah di atas, maka ia akan mengikuti laluan logik yang sama seperti permintaan:

“Antara Muka Input”=>”Prerouting”=>”Keputusan Penghalaan”=>”Forward”=>”Post Routing”=>”Output Interface” hanya untuk permintaan"Antara muka input” ialah antara muka ISP, dan untuk jawapannya - LAN

2.2. Kami mengarahkan trafik transit balik ke jadual penghalaan yang sepadan:

/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

Komen. in-interface-list=!WAN - kami hanya bekerja dengan trafik dari rangkaian tempatan dan dst-address-type=!local yang tidak mempunyai alamat destinasi alamat antara muka penghala itu sendiri.

Perkara yang sama untuk paket tempatan yang datang ke penghala sepanjang perjalanan:

“Antara Muka Input”=>”Prerouting”=>”Keputusan Penghalaan”=>”Input”=>”Proses Setempat”

Penting! Jawapannya akan pergi dengan cara berikut:

”Proses Setempat”=>”Keputusan Penghalaan”=>”Keluaran”=>”Penghalaan Pos”=>”Antaramuka Keluaran”

2.3. Kami mengarahkan trafik tempatan respons ke jadual penghalaan yang sepadan:

/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

Pada peringkat ini, tugas menyediakan untuk menghantar respons ke saluran Internet dari mana permintaan itu datang boleh dianggap diselesaikan. Semuanya ditanda, dilabel dan sedia untuk dihalakan.
Kesan "sampingan" yang sangat baik dari persediaan ini ialah keupayaan untuk bekerja dengan pemajuan port DSNAT daripada kedua-dua pembekal (ISP2, ISP3) pada masa yang sama. Tidak sama sekali, kerana pada ISP1 kami mempunyai alamat yang tidak boleh dihalakan. Kesan ini penting, contohnya, untuk pelayan mel dengan dua MX yang melihat saluran Internet yang berbeza.

Untuk menghapuskan nuansa operasi rangkaian tempatan dengan penghala IP luaran, kami menggunakan penyelesaian daripada perenggan. 1.8.2 dan 3.1.2.6.

Di samping itu, anda boleh menggunakan alat dengan tanda untuk menyelesaikan perenggan 3 masalah. Kami melaksanakannya seperti ini:

2.4. Kami mengarahkan trafik daripada pelanggan tempatan daripada senarai penghalaan ke jadual yang sesuai:

/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

Akibatnya, ia kelihatan seperti ini:

Multivan dan penghalaan pada Mikrotik RouterOS

3. Sediakan sambungan kepada ISP dan dayakan penghalaan berjenama

3.1. Sediakan sambungan ke ISP1:
3.1.1. Konfigurasikan alamat IP statik:

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

3.1.2. Sediakan penghalaan statik:
3.1.2.1. Tambahkan laluan "kecemasan" lalai:

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

Komen. Laluan ini membenarkan trafik dari proses tempatan melepasi peringkat Keputusan Laluan, tanpa mengira keadaan pautan mana-mana penyedia. Nuansa trafik tempatan keluar ialah untuk membolehkan paket bergerak sekurang-kurangnya ke suatu tempat, jadual penghalaan utama mesti mempunyai laluan aktif ke get laluan lalai. Jika tidak, maka bungkusan itu akan dimusnahkan begitu saja.

Sebagai sambungan alat semak pintu masuk Untuk analisis yang lebih mendalam tentang keadaan saluran, saya cadangkan menggunakan kaedah laluan rekursif. Intipati kaedah ini ialah kami memberitahu penghala untuk mencari laluan ke pintu masuknya bukan secara langsung, tetapi melalui pintu masuk perantaraan. 4.2.2.1, 4.2.2.2 dan 4.2.2.3 akan dipilih sebagai gerbang "ujian" untuk ISP1, ISP2 dan ISP3 masing-masing.

3.1.2.2. Laluan ke alamat "pengesahan":

/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

Komen. Kami menurunkan nilai skop kepada lalai dalam skop sasaran ROS untuk menggunakan 4.2.2.1 sebagai get laluan rekursif pada masa hadapan. Saya tekankan: skop laluan ke alamat "ujian" mestilah kurang daripada atau sama dengan skop sasaran laluan yang akan merujuk kepada ujian.

3.1.2.3. Laluan lalai rekursif untuk trafik tanpa tanda penghalaan:

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

Komen. Nilai jarak=2 digunakan kerana ISP1 diisytiharkan sebagai sandaran pertama mengikut syarat tugas.

3.1.2.4. Laluan lalai rekursif untuk trafik dengan tanda penghalaan "ke_isp1":

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

Komen. Sebenarnya, di sini akhirnya kita mula menikmati hasil kerja persiapan yang telah dijalankan di perenggan 2.


Pada laluan ini, semua trafik yang mempunyai laluan tanda "ke_isp1" akan dihalakan ke get laluan penyedia pertama, tanpa mengira get laluan lalai mana yang aktif pada masa ini untuk jadual utama.

3.1.2.5. Laluan lalai rekursif sandaran pertama untuk trafik berteg ISP2 dan 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

Komen. Laluan ini diperlukan, antara lain, untuk menempah trafik daripada rangkaian tempatan yang merupakan ahli senarai alamat “to_isp*”'

3.1.2.6. Kami mendaftarkan laluan untuk trafik tempatan penghala ke Internet melalui ISP1:

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

Komen. Dalam kombinasi dengan peraturan dari perenggan 1.8.2, ia menyediakan akses kepada saluran yang dikehendaki dengan sumber tertentu. Ini penting untuk membina terowong yang menentukan alamat IP sebelah setempat (EoIP, IP-IP, GRE). Memandangkan peraturan dalam peraturan laluan ip dilaksanakan dari atas ke bawah, sehingga padanan pertama syarat, maka peraturan ini hendaklah selepas peraturan dari klausa 1.8.2.

3.1.3. Kami mendaftarkan peraturan NAT untuk trafik keluar:

/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

Komen. NATim semua yang keluar, kecuali apa yang masuk ke dalam dasar IPsec. Saya cuba untuk tidak menggunakan action=masquerade melainkan benar-benar perlu. Ia lebih perlahan dan lebih intensif sumber berbanding src-nat kerana ia mengira alamat NAT untuk setiap sambungan baharu.

3.1.4. Kami menghantar pelanggan daripada senarai yang dilarang daripada mengakses melalui pembekal lain terus ke gerbang penyedia 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

Komen. action=route mempunyai keutamaan yang lebih tinggi dan digunakan sebelum peraturan penghalaan lain.


place-before=0 - meletakkan peraturan kami dahulu dalam senarai.

3.2. Sediakan sambungan ke ISP2.

Memandangkan pembekal ISP2 memberikan kami tetapan melalui DHCP, adalah munasabah untuk membuat perubahan yang diperlukan dengan skrip yang bermula apabila klien DHCP dicetuskan:

/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

Skrip itu sendiri dalam tetingkap Winbox:

Multivan dan penghalaan pada Mikrotik RouterOS
Komen. Bahagian pertama skrip dicetuskan apabila pajakan berjaya diperoleh, yang kedua - selepas pajakan dikeluarkan.Lihat nota 2

3.3. Kami menyediakan sambungan kepada pembekal ISP3.

Memandangkan pembekal tetapan memberi kami dinamik, adalah munasabah untuk membuat perubahan yang diperlukan dengan skrip yang bermula selepas antara muka ppp telah dinaikkan dan selepas kejatuhan.

3.3.1. Mula-mula kita mengkonfigurasi profil:

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

Skrip itu sendiri dalam tetingkap Winbox:

Multivan dan penghalaan pada Mikrotik RouterOS
Komen. Garisan
/ip firewall mangle set [find comment="Connmark in from ISP3"] in-interface=$"interface";
membolehkan anda mengendalikan penamaan semula antara muka dengan betul, kerana ia berfungsi dengan kodnya dan bukan nama paparan.

3.3.2. Sekarang, menggunakan profil, buat sambungan 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

Sebagai sentuhan terakhir, mari kita tetapkan jam:

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

Bagi yang baca sampai habis

Cara yang dicadangkan untuk melaksanakan multivan adalah pilihan peribadi pengarang dan bukan satu-satunya yang mungkin. Kit alat ROS adalah luas dan fleksibel, yang, dalam satu tangan, menyebabkan kesukaran untuk pemula, dan, sebaliknya, adalah sebab popularitinya. Belajar, cuba, temui alatan dan penyelesaian baharu. Sebagai contoh, sebagai aplikasi pengetahuan yang diperoleh, adalah mungkin untuk menggantikan alat dalam pelaksanaan multivan ini pintu masuk semak dengan laluan rekursif ke Jam jaring.

Nota

  1. pintu masuk semak - mekanisme yang membolehkan anda menyahaktifkan laluan selepas dua semakan pintu masuk yang tidak berjaya untuk ketersediaan. Semakan dilakukan sekali setiap 10 saat, ditambah dengan tamat masa respons. Secara keseluruhan, pemasaan pensuisan sebenar terletak dalam julat 20-30 saat. Jika pemasaan penukaran tersebut tidak mencukupi, terdapat pilihan untuk menggunakan alat tersebut Jam jaring, di mana pemasa semak boleh ditetapkan secara manual. pintu masuk semak tidak menyala pada kehilangan paket yang terputus-putus pada pautan.

    Penting! Menyahaktifkan laluan utama akan menyahaktifkan semua laluan lain yang merujuk kepadanya. Oleh itu, untuk mereka menunjukkan check-gateway=ping tidak perlu.

  2. Ia berlaku bahawa kegagalan berlaku dalam mekanisme DHCP, yang kelihatan seperti pelanggan yang tersekat dalam keadaan pembaharuan. Dalam kes ini, bahagian kedua skrip tidak akan berfungsi, tetapi ia tidak akan menghalang lalu lintas daripada berjalan dengan betul, kerana keadaan menjejaki laluan rekursif yang sepadan.
  3. ECMP (Berbilang Laluan Kos Sama) - dalam ROS adalah mungkin untuk menetapkan laluan dengan beberapa pintu masuk dan jarak yang sama. Dalam kes ini, sambungan akan diedarkan merentasi saluran menggunakan algoritma round robin, berkadaran dengan bilangan get laluan yang ditentukan.

Untuk dorongan untuk menulis artikel, bantu dalam membentuk struktur dan penempatan aksennya - terima kasih peribadi kepada Evgeny @jscar

Sumber: www.habr.com