Multivan dan routing pada Mikrotik RouterOS

pengenalan

Mengambil artikel tersebut, selain kesombongan, dipicu oleh frekuensi pertanyaan yang menyedihkan tentang topik ini di grup profil komunitas telegram berbahasa Rusia. Artikel ini ditujukan untuk administrator Mikrotik RouterOS pemula (selanjutnya disebut ROS). Ini hanya berurusan dengan multivan, dengan penekanan pada perutean. Sebagai bonus, ada pengaturan minimal yang cukup untuk memastikan pengoperasian yang aman dan nyaman. Mereka yang mencari pengungkapan topik antrian, penyeimbangan muatan, vlan, jembatan, analisis mendalam multi-tahap tentang status saluran dan sejenisnya - tidak boleh membuang waktu dan tenaga untuk membaca.

Data mentah

Sebagai subjek uji, router Mikrotik lima port dengan ROS versi 6.45.3 dipilih. Ini akan merutekan lalu lintas antara dua jaringan lokal (LAN1 dan LAN2) dan tiga penyedia (ISP1, ISP2, ISP3). Saluran ke ISP1 memiliki alamat "abu-abu" statis, ISP2 - "putih", diperoleh melalui DHCP, ISP3 - "putih" dengan otorisasi PPPoE. Diagram koneksi ditunjukkan pada gambar:

Multivan dan routing pada Mikrotik RouterOS

Tugasnya adalah mengkonfigurasi router MTK berdasarkan skema tersebut sehingga:

  1. Berikan peralihan otomatis ke penyedia cadangan. Penyedia utama adalah ISP2, cadangan pertama adalah ISP1, cadangan kedua adalah ISP3.
  2. Mengatur akses jaringan LAN1 ke Internet hanya melalui ISP1.
  3. Memberikan kemampuan untuk merutekan lalu lintas dari jaringan lokal ke Internet melalui penyedia yang dipilih berdasarkan daftar alamat.
  4. Menyediakan kemungkinan penerbitan layanan dari jaringan lokal ke Internet (DSTNAT)
  5. Siapkan filter firewall untuk memberikan keamanan minimum yang memadai dari Internet.
  6. Router dapat mengeluarkan lalu lintasnya sendiri melalui salah satu dari tiga penyedia, tergantung pada alamat sumber yang dipilih.
  7. Pastikan bahwa paket respons dirutekan ke saluran asalnya (termasuk LAN).

Komentar. Kami akan mengonfigurasi router "dari awal" untuk menjamin tidak adanya kejutan dalam konfigurasi awal "di luar kotak" yang berubah dari versi ke versi. Winbox dipilih sebagai alat konfigurasi, dimana perubahan akan ditampilkan secara visual. Pengaturannya sendiri akan diatur oleh perintah di terminal Winbox. Sambungan fisik untuk konfigurasi dibuat dengan sambungan langsung ke antarmuka Ether5.

Sedikit penalaran tentang apa itu multivan, apakah itu masalah atau apakah orang pintar yang licik sedang menjalin jaringan konspirasi

Seorang administrator yang ingin tahu dan penuh perhatian, yang membuat sendiri skema ini atau yang serupa, tiba-tiba menyadari bahwa itu sudah berfungsi normal. Ya, ya, tanpa tabel perutean khusus dan aturan rute lainnya, yang berisi sebagian besar artikel tentang topik ini. Mari kita periksa?

Bisakah kita mengonfigurasi pengalamatan pada antarmuka dan gateway default? Ya:

Di ISP1, alamat dan gateway didaftarkan jarak = 2 и periksa-gateway=ping.
Pada ISP2, pengaturan klien dhcp default - karenanya, jarak akan sama dengan satu.
Pada ISP3 dalam pengaturan klien pppoe kapan tambahkan-default-rute=ya taruh jarak-rute-default=3.

Jangan lupa untuk mendaftarkan NAT di pintu keluar:

/ip firewall nat add action=rantai penyamaran=srcnat out-interface-list=WAN

Hasilnya, pengguna situs lokal asyik mengunduh kucing melalui penyedia ISP2 utama dan ada reservasi saluran menggunakan mekanisme tersebut periksa gerbang Lihat catatan 1

Poin 1 dari tugas dilaksanakan. Di mana multivan dengan tandanya? TIDAK…

Lebih jauh. Anda perlu melepaskan klien tertentu dari LAN melalui ISP1:

/ip firewall mangle add action=route chain=prerouting dst-address-list=!BOGONS
passthrough=ya route-dst=100.66.66.1 src-address-list=Via_ISP1
/ip firewall mangle add action=route chain=prerouting dst-address-list=!BOGONS
lewat=tidak ada rute-dst=100.66.66.1 src-alamat=192.168.88.0/24

Item 2 dan 3 dari tugas telah dilaksanakan. Label, perangko, aturan rute, dimana kamu?!

Perlu memberikan akses ke server OpenVPN favorit Anda dengan alamat 172.17.17.17 untuk klien dari Internet? Silakan:

/ ip cloud set ddns-enabled = ya

Sebagai rekan, kami memberikan hasil keluaran kepada klien: “:letakkan [ip cloud dapatkan nama-dns]"

Kami mendaftarkan penerusan porta dari Internet:

/ip firewall nat tambahkan aksi=dst-nat chain=dstnat dst-port=1194
dalam-interface-list=protokol WAN=udp ke alamat=172.17.17.17

Barang 4 sudah siap.

Kami memasang firewall dan keamanan lainnya untuk poin 5, pada saat yang sama kami senang bahwa semuanya sudah berfungsi untuk pengguna dan meraih wadah dengan minuman favorit ...
A! Terowongan dilupakan.

l2tp-client, dikonfigurasi oleh artikel google, telah naik ke VDS Belanda favorit Anda? Ya.
l2tp-server dengan IPsec telah meningkat dan klien dengan nama DNS dari IP Cloud (lihat di atas.) melekat? Ya.
Bersandar di kursi kami, menyeruput minuman, kami dengan malas mempertimbangkan poin 6 dan 7 tugas. Kami pikir - apakah kami membutuhkannya? Semua sama, itu berfungsi seperti itu (c) ... Jadi, jika masih tidak diperlukan, maka itu saja. Multivan diimplementasikan.

Apa itu multivan? Ini adalah koneksi dari beberapa saluran Internet ke satu router.

Anda tidak perlu membaca artikel lebih lanjut, karena apa yang bisa ada selain pamer penerapan yang meragukan?

Bagi yang tetap, yang tertarik dengan poin 6 dan 7 tugas, dan juga merasakan gatal perfeksionisme, kami menyelam lebih dalam.

Tugas terpenting dalam mengimplementasikan multivan adalah perutean lalu lintas yang benar. Yaitu: terlepas dari yang mana (atau yang) Lihat. note 3 saluran ISP melihat rute default pada router kami, itu harus mengembalikan respons ke saluran yang tepat dari mana paket itu berasal. Tugasnya jelas. Dimana masalahnya? Memang, di jaringan lokal yang sederhana, tugasnya sama, tetapi tidak ada yang peduli dengan pengaturan tambahan dan tidak merasa kesulitan. Perbedaannya adalah bahwa setiap node yang dapat dirutekan di Internet dapat diakses melalui masing-masing saluran kami, dan bukan melalui saluran yang sangat spesifik, seperti di LAN sederhana. Dan "masalahnya" adalah jika permintaan datang kepada kami untuk alamat IP ISP3, maka dalam kasus kami jawabannya akan melalui saluran ISP2, karena gateway default diarahkan ke sana. Meninggalkan dan akan dibuang oleh penyedia sebagai salah. Masalahnya telah diidentifikasi. Bagaimana mengatasinya?

Solusinya dibagi menjadi tiga tahap:

  1. Prasetel. Pada tahap ini, pengaturan dasar router akan diatur: jaringan lokal, firewall, daftar alamat, NAT jepit rambut, dll.
  2. Multivan. Pada tahap ini, koneksi yang diperlukan akan ditandai dan disortir ke dalam tabel routing.
  3. Menghubungkan ke ISP. Pada tahap ini, antarmuka yang menyediakan koneksi ke Internet akan dikonfigurasi, perutean dan mekanisme reservasi saluran Internet akan diaktifkan.

1. Preset

1.1. Kami menghapus konfigurasi router dengan perintah:

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

setuju dengan "Berbahaya! Tetap setel ulang? [y/T]:” dan, setelah mem-boot ulang, kami terhubung dengan Winbox melalui MAC. Pada tahap ini, konfigurasi dan basis pengguna dibersihkan.

1.2. Buat pengguna baru:

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

masuk di bawahnya dan hapus yang default:

/user remove admin

Komentar. Ini adalah penghapusan dan bukan penonaktifan pengguna default yang menurut penulis lebih aman dan direkomendasikan untuk digunakan.

1.3. Kami membuat daftar antarmuka dasar untuk kenyamanan pengoperasian di firewall, pengaturan penemuan, dan server MAC lainnya:

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

Menandatangani antarmuka dengan komentar

/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 isi daftar antarmuka:

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

Komentar. Menulis komentar yang dapat dipahami sepadan dengan waktu yang dihabiskan untuk ini, ditambah lagi sangat memudahkan pemecahan masalah dan pemahaman konfigurasi.

Penulis menganggap perlu, untuk alasan keamanan, untuk menambahkan antarmuka ether3 ke daftar antarmuka "WAN", meskipun protokol ip tidak akan melewatinya.

Jangan lupa bahwa setelah antarmuka PPP dinaikkan pada ether3, itu juga perlu ditambahkan ke daftar antarmuka "WAN"

1.4. Kami menyembunyikan router dari deteksi dan kontrol lingkungan dari jaringan penyedia 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 membuat set aturan filter firewall yang cukup minimum untuk melindungi router:

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

(aturan memberikan izin untuk koneksi yang dibuat dan terkait yang dimulai dari jaringan yang terhubung dan router itu sendiri)

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

(ping dan tidak hanya ping. Semua icmp diperbolehkan masuk. Sangat berguna untuk menemukan masalah MTU)

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

(aturan yang menutup rantai input melarang semua hal lain yang berasal dari Internet)

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

(aturan memungkinkan koneksi yang dibuat dan terkait yang melewati router)

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

(aturan me-reset koneksi dengan connection-state=invalid melewati router. Sangat disarankan oleh Mikrotik, tetapi dalam beberapa situasi yang jarang terjadi dapat memblokir 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

(aturan melarang paket yang datang dari Internet dan belum melewati prosedur dstnat untuk melewati router. Ini akan melindungi jaringan lokal dari penyusup yang, berada di domain siaran yang sama dengan jaringan eksternal kami, akan mendaftarkan IP eksternal kami sebagai gateway dan, dengan demikian, cobalah untuk "menjelajahi" jaringan lokal kami.)

Komentar. Mari kita asumsikan bahwa jaringan LAN1 dan LAN2 dipercaya dan lalu lintas antara mereka dan dari mereka tidak disaring.

1.6. Buat daftar dengan daftar jaringan yang tidak dapat dirutekan:

/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 adalah daftar alamat dan jaringan yang tidak dapat dirutekan ke Internet dan akan diikuti sebagaimana mestinya.)

Komentar. Daftar ini dapat berubah, jadi saya menyarankan Anda untuk memeriksa relevansinya secara berkala.

1.7. Siapkan DNS untuk router itu sendiri:

/ip dns set servers=1.1.1.1,8.8.8.8

Komentar. Dalam versi ROS saat ini, server dinamis lebih diutamakan daripada yang statis. Permintaan resolusi nama dikirim ke server pertama secara berurutan dalam daftar. Transisi ke server berikutnya dilakukan saat server saat ini tidak tersedia. Batas waktunya besar - lebih dari 5 detik. Kembali, ketika "server jatuh" dilanjutkan, tidak terjadi secara otomatis. Mengingat algoritma ini dan adanya multivan, penulis merekomendasikan untuk tidak menggunakan server yang disediakan oleh provider.

1.8. Menyiapkan jaringan lokal.
1.8.1. Kami mengonfigurasi alamat IP statis pada antarmuka 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 aturan untuk rute ke jaringan lokal kami melalui tabel perutean 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"

Komentar. Ini adalah salah satu cara cepat dan mudah untuk mengakses alamat LAN dengan sumber alamat IP eksternal dari antarmuka router yang tidak melalui rute default.

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

Komentar. Ini memungkinkan Anda untuk mengakses sumber daya Anda (dstnat) melalui IP eksternal saat berada di dalam jaringan.

2. Sebenarnya penerapan multivan sangat tepat

Untuk mengatasi masalah “menjawab dari mana mereka bertanya”, kami akan menggunakan dua alat ROS: tanda koneksi и tanda rute. tanda koneksi memungkinkan Anda untuk menandai koneksi yang diinginkan dan kemudian bekerja dengan label ini sebagai syarat untuk melamar tanda rute. Dan sudah dengan tanda rute mungkin untuk bekerja di rute ip и aturan rute. Kami menemukan alatnya, sekarang Anda perlu memutuskan koneksi mana yang akan ditandai - sekali, tepat di mana harus menandai - dua.

Dengan yang pertama, semuanya sederhana - kita harus menandai semua koneksi yang datang ke router dari Internet melalui saluran yang sesuai. Dalam kasus kami, ini akan menjadi tiga label (berdasarkan jumlah saluran): "conn_isp1", "conn_isp2" dan "conn_isp3".

Nuansa yang kedua adalah koneksi yang masuk akan terdiri dari dua jenis: transit dan yang ditujukan untuk router itu sendiri. Mekanisme tanda koneksi berfungsi di tabel mengoyakkan. Pertimbangkan pergerakan paket pada diagram yang disederhanakan, disusun dengan ramah oleh spesialis sumber daya mikrotik-trainings.com (bukan iklan):

Multivan dan routing pada Mikrotik RouterOS

Mengikuti panah, kita melihat bahwa paket tiba di “antarmuka masukan”, melewati rantai “Pra-perutean” dan baru kemudian dibagi menjadi transit dan lokal di blok “Keputusan perutean". Oleh karena itu, untuk membunuh dua burung dengan satu batu, kami menggunakan Tanda Koneksi di meja Prerouting Mangle rantai Pra-perutean.

Catatan. Di ROS, label “Routing mark” dicantumkan sebagai “Table” di bagian Ip/Rute/Aturan, dan sebagai “Routing Mark” di bagian lainnya. Ini mungkin menimbulkan kebingungan dalam pemahaman, tetapi, pada kenyataannya, ini adalah hal yang sama, dan merupakan analog dari rt_tables di iproute2 di linux.

2.1. Kami menandai koneksi masuk dari masing-masing penyedia:

/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

Komentar. Agar tidak menandai koneksi yang sudah ditandai, saya menggunakan kondisi connection-mark=no-mark alih-alih connection-state=new karena menurut saya ini lebih tepat, serta penolakan koneksi yang tidak valid di filter input.


passthrough=no - karena dalam metode penerapan ini, penandaan ulang dikecualikan dan, untuk mempercepat, Anda dapat menghentikan pencacahan aturan setelah pertandingan pertama.

Perlu diingat bahwa kami belum mengganggu perutean dengan cara apa pun. Sekarang tinggal tahap persiapan. Tahap implementasi selanjutnya adalah pemrosesan lalu lintas transit yang kembali melalui koneksi yang dibuat dari tujuan di jaringan lokal. Itu. paket-paket yang (lihat diagram) melewati router di sepanjang jalan:

“Input Interface”=>”Prerouting”=>”Keputusan Routing”=>”Maju”=>”Post Routing”=>”Antarmuka Output” dan sampai ke penerima mereka di jaringan lokal.

Penting! Di ROS, tidak ada pembagian logis menjadi antarmuka eksternal dan internal. Jika kita melacak jalur paket respons sesuai dengan diagram di atas, maka itu akan mengikuti jalur logis yang sama dengan permintaan:

“Input Interface”=>”Prerouting”=>”Keputusan Routing”=>”Maju”=>”Post Routing”=>”Antarmuka Output” hanya untuk sebuah permintaan"Antarmuka masukan” adalah antarmuka ISP, dan untuk jawabannya - LAN

2.2. Kami mengarahkan lalu lintas transit respons ke tabel perutean yang sesuai:

/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

Komentar. in-interface-list=!WAN - kami hanya bekerja dengan lalu lintas dari jaringan lokal dan dst-address-type=!local yang tidak memiliki alamat tujuan dari alamat antarmuka router itu sendiri.

Hal yang sama untuk paket lokal yang datang ke router di sepanjang jalan:

“Input Interface”=>”Prerouting”=>”Keputusan Routing”=>”Input”=>”Proses Lokal”

Penting! Jawabannya akan seperti berikut:

”Local Process”=>”Keputusan Routing”=>”Output”=>”Post Routing”=>”Antarmuka Output”

2.3. Kami mengarahkan lalu lintas lokal respons ke tabel perutean yang sesuai:

/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 tahap ini, tugas mempersiapkan pengiriman respons ke saluran Internet tempat permintaan datang dapat dianggap diselesaikan. Semuanya ditandai, diberi label dan siap dialihkan.
Efek "samping" yang sangat baik dari penyiapan ini adalah kemampuan untuk bekerja dengan penerusan port DSNAT dari kedua penyedia (ISP2, ISP3) secara bersamaan. Tidak sama sekali, karena di ISP1 kami memiliki alamat yang tidak dapat dirutekan. Efek ini penting, misalnya, untuk server email dengan dua MX yang melihat saluran Internet berbeda.

Untuk menghilangkan nuansa pengoperasian jaringan lokal dengan router IP eksternal, kami menggunakan solusi dari paragraf. 1.8.2 dan 3.1.2.6.

Selain itu, Anda dapat menggunakan alat bertanda untuk menyelesaikan paragraf 3 soal. Kami menerapkannya seperti ini:

2.4. Kami mengarahkan lalu lintas dari klien lokal dari daftar perutean ke tabel 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, tampilannya seperti ini:

Multivan dan routing pada Mikrotik RouterOS

3. Siapkan koneksi ke ISP dan aktifkan perutean bermerek

3.1. Siapkan koneksi ke ISP1:
3.1.1. Konfigurasikan alamat IP statis:

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

3.1.2. Siapkan perutean statis:
3.1.2.1. Tambahkan rute "darurat" default:

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

Komentar. Rute ini memungkinkan lalu lintas dari proses lokal melewati tahap Keputusan Rute, terlepas dari status tautan penyedia mana pun. Nuansa lalu lintas lokal keluar adalah agar paket bergerak setidaknya ke suatu tempat, tabel perutean utama harus memiliki rute aktif ke gateway default. Jika tidak, maka paket tersebut akan dihancurkan begitu saja.

Sebagai perpanjangan alat periksa gerbang Untuk analisis yang lebih dalam tentang status saluran, saya sarankan menggunakan metode rute rekursif. Inti dari metode ini adalah kami memberi tahu router untuk mencari jalur ke gateway-nya tidak secara langsung, tetapi melalui gateway perantara. 4.2.2.1, 4.2.2.2 dan 4.2.2.3 akan dipilih sebagai gerbang "pengujian" untuk masing-masing ISP1, ISP2 dan ISP3.

3.1.2.2. Rutekan ke alamat "verifikasi":

/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

Komentar. Kami menurunkan nilai cakupan ke default dalam cakupan target ROS untuk menggunakan 4.2.2.1 sebagai gerbang rekursif di masa mendatang. Saya tekankan: cakupan rute ke alamat "tes" harus kurang dari atau sama dengan cakupan target rute yang akan merujuk ke alamat tes.

3.1.2.3. Rute default rekursif untuk lalu lintas tanpa tanda perutean:

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

Komentar. Nilai distance=2 digunakan karena ISP1 dideklarasikan sebagai backup pertama sesuai dengan kondisi tugas.

3.1.2.4. Rute default rekursif untuk lalu lintas dengan tanda perutean “to_isp1”:

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

Komentar. Sebenarnya disinilah kita akhirnya mulai menikmati buah dari kerja persiapan yang dilakukan pada paragraf 2.


Pada rute ini, semua lalu lintas yang memiliki tanda rute "to_isp1" akan diarahkan ke gateway penyedia pertama, terlepas dari gateway default mana yang sedang aktif untuk tabel utama.

3.1.2.5. Rute default rekursif mundur pertama untuk lalu lintas yang ditandai 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

Komentar. Rute-rute ini diperlukan, antara lain, untuk mencadangkan lalu lintas dari jaringan lokal yang tergabung dalam daftar alamat “to_isp*”'

3.1.2.6. Kami mendaftarkan rute untuk lalu lintas lokal router ke Internet melalui ISP1:

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

Komentar. Dikombinasikan dengan aturan dari paragraf 1.8.2, menyediakan akses ke saluran yang diinginkan dengan sumber tertentu. Ini sangat penting untuk membangun terowongan yang menentukan alamat IP sisi lokal (EoIP, IP-IP, GRE). Karena aturan dalam aturan rute ip dijalankan dari atas ke bawah, hingga kondisi pertama cocok, maka aturan ini harus mengikuti aturan dari pasal 1.8.2.

3.1.3. Kami mendaftarkan aturan NAT untuk lalu lintas 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

Komentar. NATim semua yang keluar, kecuali yang masuk ke dalam kebijakan IPsec. Saya mencoba untuk tidak menggunakan action=masquerade kecuali benar-benar diperlukan. Ini lebih lambat dan lebih intensif sumber daya daripada src-nat karena menghitung alamat NAT untuk setiap koneksi baru.

3.1.4. Kami mengirim klien dari daftar yang dilarang mengakses melalui penyedia lain langsung ke gateway 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

Komentar. action=route memiliki prioritas lebih tinggi dan diterapkan sebelum aturan perutean lainnya.


place-before=0 - tempatkan aturan kita terlebih dahulu dalam daftar.

3.2. Atur koneksi ke ISP2.

Karena penyedia ISP2 memberi kami pengaturan melalui DHCP, masuk akal untuk membuat perubahan yang diperlukan dengan skrip yang dimulai saat klien DHCP dipicu:

/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 di jendela Winbox:

Multivan dan routing pada Mikrotik RouterOS
Komentar. Bagian pertama dari skrip dipicu saat sewa berhasil diperoleh, yang kedua - setelah sewa dilepaskan.Lihat catatan 2

3.3. Kami mengatur koneksi ke penyedia ISP3.

Karena penyedia pengaturan memberi kami dinamis, masuk akal untuk membuat perubahan yang diperlukan dengan skrip yang dimulai setelah antarmuka ppp dinaikkan dan setelah musim gugur.

3.3.1. Pertama 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 di jendela Winbox:

Multivan dan routing pada Mikrotik RouterOS
Komentar. Tali
/ ip firewall mangle set [find comment="Connmark in from ISP3"] in-interface=$"interface";
memungkinkan Anda menangani penggantian nama antarmuka dengan benar, karena ini berfungsi dengan kodenya dan bukan nama tampilan.

3.3.2. Sekarang, dengan menggunakan profil, buat koneksi 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 atur jamnya:

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

Bagi yang membaca sampai akhir

Cara yang diusulkan untuk mengimplementasikan multivan adalah preferensi pribadi penulis dan bukan satu-satunya yang mungkin. Toolkit ROS sangat luas dan fleksibel, yang, di satu sisi, menyebabkan kesulitan bagi pemula, dan, di sisi lain, menjadi alasan popularitasnya. Pelajari, coba, temukan alat dan solusi baru. Misalnya, sebagai aplikasi dari pengetahuan yang diperoleh, dimungkinkan untuk mengganti alat dalam implementasi multivan ini check-gateway dengan rute rekursif ke netwatch.

Catatan

  1. check-gateway - mekanisme yang memungkinkan Anda untuk menonaktifkan rute setelah dua pemeriksaan gateway yang gagal berturut-turut untuk ketersediaan. Pemeriksaan dilakukan setiap 10 detik sekali, ditambah waktu tunggu respons. Secara total, waktu peralihan sebenarnya berada pada kisaran 20-30 detik. Jika waktu peralihan tersebut tidak cukup, ada opsi untuk menggunakan alat ini netwatch, di mana pengatur waktu pemeriksaan dapat diatur secara manual. check-gateway tidak menyala pada kehilangan paket intermiten pada tautan.

    Penting! Menonaktifkan rute utama akan menonaktifkan semua rute lain yang merujuk ke sana. Oleh karena itu, bagi mereka untuk menentukan periksa-gateway=ping tidak perlu.

  2. Kebetulan terjadi kegagalan dalam mekanisme DHCP, yang terlihat seperti klien terjebak dalam status pembaruan. Dalam hal ini, bagian kedua dari skrip tidak akan berfungsi, tetapi tidak akan mencegah lalu lintas berjalan dengan benar, karena status melacak rute rekursif yang sesuai.
  3. ECMP (Jalur Multi-Biaya Sama) - di ROS dimungkinkan untuk mengatur rute dengan beberapa gateway dan jarak yang sama. Dalam hal ini, koneksi akan didistribusikan ke seluruh saluran menggunakan algoritma round robin, sebanding dengan jumlah gateway yang ditentukan.

Untuk dorongan menulis artikel, membantu dalam membentuk struktur dan penempatan aksennya - terima kasih pribadi kepada Evgeny @jscar

Sumber: www.habr.com