Penghalaan ialah proses mencari laluan terbaik untuk menghantar paket melalui rangkaian TCP/IP. Mana-mana peranti yang disambungkan ke rangkaian IPv4 mengandungi proses dan jadual penghalaan.
Artikel ini bukan HOWTO, ia menerangkan penghalaan statik dalam RouterOS dengan contoh, saya sengaja meninggalkan tetapan yang lain (contohnya, srcnat untuk mengakses Internet), jadi memahami bahan memerlukan tahap pengetahuan tertentu tentang rangkaian dan RouterOS.
Penukaran dan penghalaan
Penukaran ialah proses pertukaran paket dalam satu segmen Layer2 (Ethernet, ppp, ...). Jika peranti melihat bahawa penerima paket berada pada subnet Ethernet yang sama dengannya, ia mempelajari alamat mac menggunakan protokol arp dan menghantar paket secara terus, memintas penghala. Sambungan ppp (point-to-point) hanya boleh mempunyai dua peserta dan paket sentiasa dihantar ke satu alamat 0xff.
Penghalaan ialah proses pemindahan paket antara segmen Layer2. Jika peranti ingin menghantar paket yang penerimanya berada di luar segmen Ethernet, ia melihat ke dalam jadual penghalaannya dan menghantar paket ke get laluan, yang tahu ke mana hendak menghantar paket seterusnya (atau mungkin tidak tahu, penghantar asal paket itu tidak menyedari perkara ini).
Cara paling mudah untuk memikirkan penghala adalah sebagai peranti yang disambungkan kepada dua atau lebih segmen Layer2 dan mampu menghantar paket antara mereka dengan menentukan laluan terbaik dari jadual penghalaan.
Jika anda memahami segala-galanya, atau anda sudah mengetahuinya, maka bacalah. Untuk selebihnya, saya amat mengesyorkan agar anda membiasakan diri dengan yang kecil, tetapi sangat luas
Penghalaan dalam RouterOS dan PacketFlow
Hampir semua fungsi yang berkaitan dengan penghalaan statik terdapat dalam pakej sistem. Beg plastik routing menambah sokongan untuk algoritma penghalaan dinamik (RIP, OSPF, BGP, MME), Penapis Penghalaan dan BFD.
Menu utama untuk menyediakan penghalaan: [IP]->[Route]
. Skim kompleks mungkin memerlukan paket untuk dilabelkan terlebih dahulu dengan tanda penghalaan dalam: [IP]->[Firewall]->[Mangle]
(rantai PREROUTING
ΠΈ OUTPUT
).
Terdapat tiga tempat di PacketFlow di mana keputusan penghalaan paket IP dibuat:
- Menghalakan paket yang diterima oleh penghala. Pada peringkat ini, diputuskan sama ada paket akan pergi ke proses tempatan atau akan dihantar lebih jauh ke rangkaian. Pakej transit menerima Muka Output
- Menghalakan paket keluar tempatan. Paket keluar menerima Muka Output
- Langkah penghalaan tambahan untuk paket keluar, membolehkan anda menukar keputusan penghalaan masuk
[Output|Mangle]
- Laluan paket dalam blok 1, 2 bergantung pada peraturan dalam
[IP]->[Route]
- Laluan paket dalam titik 1, 2 dan 3 bergantung pada peraturan dalam
[IP]->[Route]->[Rules]
- Laluan pakej dalam blok 1, 3 boleh dipengaruhi menggunakan
[IP]->[Firewall]->[Mangle]
RIB, FIB, Cache Penghalaan
Pangkalan Maklumat Laluan
Pangkalan di mana laluan dikumpulkan daripada protokol penghalaan dinamik, laluan daripada ppp dan dhcp, laluan statik dan bersambung. Pangkalan data ini mengandungi semua laluan, kecuali laluan yang ditapis oleh pentadbir.
Bersyarat, kita boleh mengandaikan bahawa [IP]->[Route]
memaparkan RIB.
Pangkalan Maklumat Pemajuan
Pangkalan tempat laluan terbaik dari RIB dikumpulkan. Semua laluan dalam FIB adalah aktif dan digunakan untuk memajukan paket. Jika laluan menjadi tidak aktif (dilumpuhkan oleh pentadbir (sistem), atau antara muka yang melaluinya paket harus dihantar tidak aktif), laluan itu dialih keluar daripada FIB.
Untuk membuat keputusan penghalaan, jadual FIB menggunakan maklumat berikut tentang paket IP:
- Alamat Sumber
- Alamat destinasi
- antara muka sumber
- Tanda laluan
- ToS (DSCP)
Masuk ke dalam pakej FIB melalui peringkat berikut:
- Adakah pakej dimaksudkan untuk proses penghala tempatan?
- Adakah paket tertakluk kepada peraturan PBR sistem atau pengguna?
- Jika ya, maka paket dihantar ke jadual penghalaan yang ditentukan
- Paket dihantar ke meja utama
Bersyarat, kita boleh mengandaikan bahawa [IP]->[Route Active=yes]
memaparkan FIB.
Cache Penghalaan
Mekanisme cache laluan. Penghala mengingati di mana paket dihantar dan jika terdapat yang serupa (mungkin dari sambungan yang sama) ia membenarkan mereka pergi sepanjang laluan yang sama, tanpa menyemak FIB. Cache laluan dikosongkan secara berkala.
Untuk pentadbir RouterOS, mereka tidak membuat alatan untuk melihat dan mengurus Routing Cache, tetapi apabila ia boleh dilumpuhkan dalam [IP]->[Settings]
.
Mekanisme ini telah dikeluarkan daripada kernel linux 3.6, tetapi RouterOS masih menggunakan kernel 3.3.5, mungkin Routing cahce adalah salah satu sebabnya.
Tambah dialog laluan
[IP]->[Route]->[+]
- Subnet yang anda ingin buat laluan (lalai: 0.0.0.0/0)
- IP Gateway atau antara muka yang mana paket akan dihantar (mungkin terdapat beberapa, lihat ECMP di bawah)
- Semakan Ketersediaan Gerbang
- Jenis Rekod
- Jarak (metrik) untuk laluan
- Jadual laluan
- IP untuk paket keluar tempatan melalui laluan ini
- Tujuan Skop dan Skop Sasaran ditulis pada akhir artikel.
Bendera laluan
- X - Laluan dilumpuhkan oleh pentadbir (
disabled=yes
) - A - Laluan digunakan untuk menghantar paket
- D - Laluan ditambah secara dinamik (BGP, OSPF, RIP, MME, PPP, DHCP, Connected)
- C - Subnet disambungkan terus ke penghala
- S - Laluan statik
- r,b,o,m - Laluan ditambah oleh salah satu protokol penghalaan dinamik
- B,U,P - Laluan penapisan (menjatuhkan paket dan bukannya menghantar)
Apa yang perlu ditentukan dalam gerbang: alamat ip atau antara muka?
Sistem ini membenarkan anda untuk menentukan kedua-duanya, sementara ia tidak bersumpah dan tidak memberi petunjuk jika anda melakukan sesuatu yang salah.
alamat IP
Alamat get laluan mesti boleh diakses melalui Layer2. Untuk Ethernet, ini bermakna penghala mesti mempunyai alamat daripada subnet yang sama pada salah satu antara muka ip aktif, untuk ppp, bahawa alamat get laluan ditentukan pada salah satu antara muka aktif sebagai alamat subnet.
Jika syarat kebolehcapaian untuk Layer2 tidak dipenuhi, laluan itu dianggap tidak aktif dan tidak termasuk dalam FIB.
antara muka
Segala-galanya lebih rumit dan tingkah laku penghala bergantung pada jenis antara muka:
- Sambungan PPP (Async, PPTP, L2TP, SSTP, PPPoE, OpenVPN *) menganggap hanya dua peserta dan paket akan sentiasa dihantar ke get laluan untuk penghantaran, jika get laluan mengesan bahawa penerima adalah dirinya sendiri, maka ia akan memindahkan paket ke proses tempatannya.
- Ethernet menganggap kehadiran ramai peserta dan akan menghantar permintaan ke antara muka arp dengan alamat penerima paket, ini dijangka dan tingkah laku yang agak normal untuk laluan yang disambungkan.
Tetapi apabila anda cuba menggunakan antara muka sebagai laluan untuk subnet jauh, anda akan mendapat situasi berikut: laluan aktif, ping ke pas get laluan, tetapi tidak sampai ke penerima daripada subnet yang ditentukan. Jika anda melihat antara muka melalui sniffer, anda akan melihat permintaan arp dengan alamat dari subnet jauh.
Cuba tentukan alamat ip sebagai pintu masuk apabila boleh. Pengecualian ialah laluan bersambung (dicipta secara automatik) dan antara muka PPP (Async, PPTP, L2TP, SSTP, PPPoE, OpenVPN*).
OpenVPN tidak mengandungi pengepala PPP, tetapi anda boleh menggunakan nama antara muka OpenVPN untuk membuat laluan.
Laluan Lebih Spesifik
Peraturan laluan asas. Laluan yang menerangkan subnet yang lebih kecil (dengan subnet mask terbesar) diutamakan dalam keputusan penghalaan paket. Kedudukan entri dalam jadual penghalaan tidak berkaitan dengan pilihan - peraturan utama adalah Lebih Spesifik.
Semua laluan dari skim yang ditentukan adalah aktif (terletak di FIB). menunjuk ke subnet yang berbeza dan tidak bercanggah antara satu sama lain.
Jika salah satu gerbang menjadi tidak tersedia, laluan yang berkaitan akan dianggap tidak aktif (dialih keluar daripada FIB) dan paket akan dicari dari laluan yang tinggal.
Laluan dengan subnet 0.0.0.0/0 kadangkala diberi makna istimewa dan dipanggil "Laluan Lalai" atau "Gerbang pilihan terakhir". Sebenarnya, tiada apa-apa yang ajaib mengenainya dan ia hanya merangkumi semua alamat IPv4 yang mungkin, tetapi nama-nama ini menggambarkan tugasnya dengan baik - ia menunjukkan pintu masuk untuk memajukan paket yang tidak ada laluan lain yang lebih tepat.
Subnet mask maksimum yang mungkin untuk IPv4 ialah /32, laluan ini menghala ke hos tertentu dan boleh digunakan dalam jadual penghalaan.
Memahami Laluan Lebih Spesifik adalah asas kepada mana-mana peranti TCP/IP.
Jarak
Jarak (atau Metrik) diperlukan untuk penapisan pentadbiran laluan ke subnet tunggal yang boleh diakses melalui berbilang get laluan. Laluan dengan metrik yang lebih rendah dianggap sebagai keutamaan dan akan dimasukkan ke dalam FIB. Jika laluan dengan metrik yang lebih rendah tidak lagi aktif, maka ia akan digantikan dengan laluan dengan metrik yang lebih tinggi dalam FIB.
Jika terdapat beberapa laluan ke subnet yang sama dengan metrik yang sama, penghala akan menambah hanya satu daripadanya pada jadual FIB, berpandukan logik dalamannya.
Metrik boleh mengambil nilai dari 0 hingga 255:
- 0 - Metrik untuk laluan bersambung. Jarak 0 tidak boleh ditetapkan oleh pentadbir
- 1-254 - Metrik tersedia kepada pentadbir untuk menetapkan laluan. Metrik dengan nilai yang lebih rendah mempunyai keutamaan yang lebih tinggi
- 255 - Metrik tersedia kepada pentadbir untuk menetapkan laluan. Tidak seperti 1-254, laluan dengan metrik 255 sentiasa kekal tidak aktif dan tidak termasuk dalam FIB
- metrik tertentu. Laluan yang diperoleh daripada protokol penghalaan dinamik mempunyai nilai metrik standard
semak pintu masuk
Check gateway ialah sambungan MikroTik RoutesOS untuk menyemak ketersediaan get laluan melalui icmp atau arp. Sekali setiap 10 saat (tidak boleh ditukar), permintaan dihantar ke gerbang, jika respons tidak diterima dua kali, laluan itu dianggap tidak tersedia dan dialih keluar daripada FIB. Jika get laluan semak telah dilumpuhkan laluan semakan diteruskan dan laluan akan menjadi aktif semula selepas satu semakan berjaya.
Gerbang semak melumpuhkan entri di mana ia dikonfigurasikan dan semua entri lain (dalam semua jadual penghalaan dan laluan ecmp) dengan get laluan yang ditentukan.
Secara umum, semak get laluan berfungsi dengan baik selagi tiada masalah kehilangan paket ke get laluan. Gerbang semak tidak tahu apa yang berlaku dengan komunikasi di luar get laluan yang diperiksa, ini memerlukan alat tambahan: skrip, penghalaan rekursif, protokol penghalaan dinamik.
Kebanyakan protokol VPN dan terowong mengandungi alatan terbina dalam untuk menyemak aktiviti sambungan, mendayakan get laluan semak untuknya adalah beban tambahan (tetapi sangat kecil) pada rangkaian dan prestasi peranti.
laluan ECMP
Equal-Cost Multi-Path - menghantar paket kepada penerima menggunakan beberapa gateway secara serentak menggunakan algoritma Round Robin.
Laluan ECMP dicipta oleh pentadbir dengan menentukan berbilang get laluan untuk satu subnet (atau secara automatik, jika terdapat dua laluan OSPF yang setara).
ECMP digunakan untuk mengimbangi beban antara dua saluran, secara teori, jika terdapat dua saluran dalam laluan ecmp, maka untuk setiap paket saluran keluar harus berbeza. Tetapi mekanisme cache Routing menghantar paket dari sambungan di sepanjang laluan yang diambil oleh paket pertama, sebagai hasilnya, kami mendapat sejenis pengimbangan berdasarkan sambungan (pengimbangan pemuatan setiap sambungan).
Jika anda melumpuhkan Routing Cache, maka paket dalam laluan ECMP akan dikongsi dengan betul, tetapi terdapat masalah dengan NAT. Peraturan NAT hanya memproses paket pertama daripada sambungan (selebihnya diproses secara automatik), dan ternyata paket dengan alamat sumber yang sama meninggalkan antara muka yang berbeza.
Semak get laluan tidak berfungsi dalam laluan ECMP (pepijat RouterOS). Tetapi anda boleh mengatasi had ini dengan mencipta laluan pengesahan tambahan yang akan melumpuhkan entri dalam ECMP.
Penapisan melalui Penghalaan
Pilihan Jenis menentukan perkara yang perlu dilakukan dengan pakej:
- unicast - hantar ke gerbang yang ditentukan (antara muka)
- lubang hitam - buang sebungkus
- melarang, tidak boleh dicapai - buang paket dan hantar mesej icmp kepada pengirim
Penapisan biasanya digunakan apabila perlu untuk menjamin penghantaran paket di sepanjang laluan yang salah, sudah tentu, anda boleh menapis ini melalui tembok api.
Beberapa contoh
Untuk menyatukan perkara asas tentang penghalaan.
Penghala rumah biasa
/ip route
add dst-address=0.0.0.0/0 gateway=10.10.10.1
- Laluan statik ke 0.0.0.0/0 (laluan lalai)
- Laluan yang disambungkan pada antara muka dengan pembekal
- Laluan bersambung pada antara muka LAN
Penghala rumah biasa dengan PPPoE
- Laluan statik ke laluan lalai, ditambah secara automatik. ia dinyatakan dalam sifat sambungan
- Laluan bersambung untuk sambungan PPP
- Laluan bersambung pada antara muka LAN
Penghala rumah biasa dengan dua pembekal dan redundansi
/ip route
add dst-address=0.0.0.0/0 gateway=10.10.10.1 distance=1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.20.20.1 distance=2
- Laluan statik ke laluan lalai melalui pembekal pertama dengan metrik 1 dan semakan ketersediaan get laluan
- Laluan statik ke laluan lalai melalui pembekal kedua dengan metrik 2
- Laluan bersambung
Trafik ke 0.0.0.0/0 melalui 10.10.10.1 sementara get laluan ini tersedia, jika tidak, ia bertukar kepada 10.20.20.1
Skim sedemikian boleh dianggap sebagai tempahan saluran, tetapi ia bukan tanpa kelemahan. Jika rehat berlaku di luar get laluan pembekal (contohnya, di dalam rangkaian pengendali), penghala anda tidak akan mengetahuinya dan akan terus menganggap laluan itu sebagai aktif.
Penghala rumah biasa dengan dua pembekal, redundansi dan ECMP
/ip route
add dst-address=0.0.0.0/0 gateway=10.10.10.1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.20.20.1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.10.10.1,10.20.20.1 distance=1
- Laluan statik untuk menyemak pintu masuk chack
- laluan ECMP
- Laluan bersambung
Laluan untuk diperiksa adalah biru (warna laluan tidak aktif), tetapi ini tidak mengganggu pintu masuk semakan. Versi semasa (6.44) RoS memberikan keutamaan automatik kepada laluan ECMP, tetapi lebih baik untuk menambah laluan ujian pada jadual penghalaan lain (pilihan routing-mark
)
Pada Speedtest dan tapak lain yang serupa, tidak akan ada peningkatan dalam kelajuan (ECMP membahagikan trafik dengan sambungan, bukan dengan paket), tetapi aplikasi p2p harus memuat turun lebih cepat.
Penapisan melalui Penghalaan
/ip route
add dst-address=0.0.0.0/0 gateway=10.10.10.1
add dst-address=192.168.200.0/24 gateway=10.30.30.1 distance=1
add dst-address=192.168.200.0/24 gateway=10.10.10.1 distance=2 type=blackhole
- Laluan statik ke laluan lalai
- Laluan statik ke 192.168.200.0/24 melalui terowong ipip
- Melarang laluan statik ke 192.168.200.0/24 melalui penghala ISP
Pilihan penapisan di mana trafik terowong tidak akan pergi ke penghala pembekal apabila antara muka ipip dilumpuhkan. Skim sedemikian jarang diperlukan, kerana anda boleh melaksanakan penyekatan melalui tembok api.
Gelung penghalaan
Gelung penghalaan - keadaan apabila paket berjalan antara penghala sebelum ttl tamat tempoh. Biasanya ia adalah hasil daripada ralat konfigurasi, dalam rangkaian besar ia dirawat dengan pelaksanaan protokol penghalaan dinamik, dalam yang kecil - dengan berhati-hati.
Ia kelihatan seperti ini:
Contoh (paling mudah) cara mendapatkan hasil yang serupa:
Contoh gelung Penghalaan tidak berguna, tetapi ini menunjukkan bahawa penghala tidak tahu tentang jadual penghalaan jiran mereka.
Penghalaan Asas Dasar dan Jadual Penghalaan Tambahan
Apabila memilih laluan, penghala hanya menggunakan satu medan daripada pengepala paket (Alamat Dst.) - ini adalah penghalaan asas. Penghalaan berdasarkan syarat lain, seperti alamat sumber, jenis trafik (ToS), pengimbangan tanpa ECMP, tergolong dalam Penghalaan Pangkalan Dasar (PBR) dan menggunakan jadual penghalaan tambahan.
Laluan Lebih Spesifik ialah peraturan pemilihan laluan utama dalam jadual penghalaan.
Secara lalai, semua peraturan penghalaan ditambahkan pada jadual utama. Pentadbir boleh mencipta nombor sewenang-wenangnya jadual penghalaan tambahan dan paket laluan kepada mereka. Peraturan dalam jadual yang berbeza tidak bercanggah antara satu sama lain. Jika pakej tidak menemui peraturan yang sesuai dalam jadual yang ditentukan, ia akan pergi ke jadual utama.
Contoh dengan pengedaran melalui Firewall:
- 192.168.100.10 -> 8.8.8.8
- Trafik dari 192.168.100.10 akan dilabelkan melalui-isp1 Π²
[Prerouting|Mangle]
- Pada peringkat Penghalaan dalam jadual melalui-isp1 mencari laluan ke 8.8.8.8
- Laluan ditemui, lalu lintas dihantar ke pintu masuk 10.10.10.1
- Trafik dari 192.168.100.10 akan dilabelkan melalui-isp1 Π²
- 192.168.200.20 -> 8.8.8.8
- Trafik dari 192.168.200.20 akan dilabelkan melalui-isp2 Π²
[Prerouting|Mangle]
- Pada peringkat Penghalaan dalam jadual melalui-isp2 mencari laluan ke 8.8.8.8
- Laluan ditemui, lalu lintas dihantar ke pintu masuk 10.20.20.1
- Trafik dari 192.168.200.20 akan dilabelkan melalui-isp2 Π²
- Jika salah satu get laluan (10.10.10.1 atau 10.20.20.1) menjadi tidak tersedia, maka paket akan pergi ke jadual utama dan akan mencari laluan yang sesuai di sana
Isu istilah
RouterOS mempunyai masalah istilah tertentu.
Apabila bekerja dengan peraturan dalam [IP]->[Routes]
jadual penghalaan ditunjukkan, walaupun tertulis bahawa label:
Π [IP]->[Routes]->[Rule]
semuanya betul, dalam keadaan label dalam tindakan jadual:
Cara menghantar paket ke jadual penghalaan tertentu
RouterOS menyediakan beberapa alat:
- Peraturan dalam
[IP]->[Routes]->[Rules]
- Penanda laluan (
action=mark-routing
) dalam[IP]->[Firewall]->[Mangle]
- VRF
peraturan [IP]->[Route]->[Rules]
Peraturan diproses secara berurutan, jika paket sepadan dengan syarat peraturan, ia tidak lulus lebih jauh.
Peraturan Penghalaan membolehkan anda memperluaskan kemungkinan penghalaan, bergantung bukan sahaja pada alamat penerima, tetapi juga pada alamat sumber dan antara muka di mana paket itu diterima.
Peraturan terdiri daripada syarat dan tindakan:
- syarat. Ulangi secara praktikal senarai tanda yang mana pakej disemak dalam FIB, hanya ToS yang tiada.
- Aktiviti
- carian - hantar paket ke meja
- carian hanya dalam jadual - kunci pakej dalam jadual, jika laluan tidak dijumpai, pakej tidak akan pergi ke jadual utama
- drop - drop satu paket
- tidak boleh dicapai - buang paket dengan pemberitahuan penghantar
Dalam FIB, trafik ke proses tempatan diproses memintas peraturan [IP]->[Route]->[Rules]
:
menandakan [IP]->[Firewall]->[Mangle]
Label penghalaan membolehkan anda menetapkan get laluan untuk paket menggunakan hampir mana-mana syarat Firewall:
Secara praktikal, kerana tidak semuanya masuk akal, dan sesetengahnya mungkin berfungsi dengan tidak stabil.
Terdapat dua cara untuk melabelkan pakej:
- Segera letak tanda laluan
- dahulukan tanda sambungan, kemudian berdasarkan tanda sambungan untuk menetapkan tanda laluan
Dalam artikel mengenai tembok api, saya menulis bahawa pilihan kedua adalah lebih baik. mengurangkan beban pada cpu, dalam hal menanda laluan - ini tidak sepenuhnya benar. Kaedah penandaan ini tidak selalunya setara dan biasanya digunakan untuk menyelesaikan pelbagai masalah.
Contoh Penggunaan
Mari kita beralih kepada contoh menggunakan Penghalaan Dasar Dasar, ia lebih mudah untuk menunjukkan mengapa semua ini diperlukan.
MultiWAN dan kembali trafik keluar (Output).
Masalah biasa dengan konfigurasi MultiWAN: Mikrotik tersedia dari Internet hanya melalui pembekal "aktif".
Penghala tidak peduli dengan apa ip permintaan itu, apabila menjana respons, ia akan mencari laluan dalam jadual penghalaan di mana laluan melalui isp1 aktif. Selanjutnya, paket sedemikian kemungkinan besar akan ditapis sepanjang jalan ke penerima.
Satu lagi perkara yang menarik. Jika nat sumber "mudah" dikonfigurasikan pada antara muka ether1: /ip fi nat add out-interface=ether1 action=masquerade
pakej akan masuk dalam talian dengan src. address=10.10.10.100, yang memburukkan lagi keadaan.
Terdapat beberapa cara untuk menyelesaikan masalah, tetapi mana-mana daripadanya memerlukan jadual penghalaan tambahan:
/ip route
add dst-address=0.0.0.0/0 gateway=10.10.10.1 check-gateway=ping distance=1
add dst-address=0.0.0.0/0 gateway=10.20.20.1 check-gateway=ping distance=2
add dst-address=0.0.0.0/0 gateway=10.10.10.1 routing-mark=over-isp1
add dst-address=0.0.0.0/0 gateway=10.20.20.1 routing-mark=over-isp2
Gunakan [IP]->[Route]->[Rules]
Tentukan jadual penghalaan yang akan digunakan untuk paket dengan IP Sumber yang ditentukan.
/ip route rule
add src-address=10.10.10.100/32 action=lookup-only-in-table table=over-isp1
add src-address=10.20.20.200/32 action=lookup-only-in-table table=over-isp2
Boleh gunakan action=lookup
, tetapi untuk trafik keluar tempatan, pilihan ini mengecualikan sepenuhnya sambungan daripada antara muka yang salah.
- Sistem menjana paket tindak balas dengan Src. Alamat: 10.20.20.200
- Langkah Keputusan Penghalaan(2) menyemak
[IP]->[Routes]->[Rules]
dan paket dihantar ke jadual penghalaan terlebih-isp2 - Menurut jadual penghalaan, paket mesti dihantar ke gerbang 10.20.20.1 melalui antara muka ether2
Kaedah ini tidak memerlukan Penjejak Sambungan yang berfungsi, tidak seperti menggunakan jadual Mangle.
Gunakan [IP]->[Firewall]->[Mangle]
Sambungan bermula dengan paket masuk, jadi kami menandakannya (action=mark-connection
), untuk paket keluar dari sambungan yang ditanda, tetapkan label penghalaan (action=mark-routing
).
/ip firewall mangle
#ΠΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠ° Π²Ρ
ΠΎΠ΄ΡΡΠΈΡ
ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ
add chain=input in-interface=ether1 connection-state=new action=mark-connection new-connection-mark=from-isp1
add chain=input in-interface=ether2 connection-state=new action=mark-connection new-connection-mark=from-isp2
#ΠΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΈΡΡ
ΠΎΠ΄ΡΡΠΈΡ
ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ
add chain=output connection-mark=from-isp1 action=mark-routing new-routing-mark=over-isp1 passthrough=no
add chain=output connection-mark=from-isp2 action=mark-routing new-routing-mark=over-isp2 passthrough=no
Jika beberapa ips dikonfigurasikan pada satu antara muka, anda boleh menambah syarat dst-address
untuk memastikan.
- Satu paket membuka sambungan pada antara muka ether2. Pakej masuk
[INPUT|Mangle]
yang mengatakan untuk menandakan semua paket dari sambungan sebagai daripada-isp2 - Sistem menjana paket tindak balas dengan Src. Alamat: 10.20.20.200
- Pada peringkat Keputusan Penghalaan(2), paket, mengikut jadual penghalaan, dihantar ke get laluan 10.20.20.1 melalui antara muka eter1. Anda boleh mengesahkan ini dengan log masuk pakej
[OUTPUT|Filter]
- Di pentas
[OUTPUT|Mangle]
label sambungan diperiksa daripada-isp2 dan paket menerima label laluan terlebih-isp2 - Langkah Pelarasan Penghalaan(3) menyemak kehadiran label penghalaan dan menghantarnya ke jadual penghalaan yang sesuai
- Menurut jadual penghalaan, paket mesti dihantar ke gerbang 10.20.20.1 melalui antara muka ether2
MultiWAN dan kembalikan trafik dst-nat
Satu contoh adalah lebih rumit, apa yang perlu dilakukan jika terdapat pelayan (contohnya, web) di belakang penghala pada subnet peribadi dan anda perlu memberikan akses kepadanya melalui mana-mana pembekal.
/ip firewall nat
add chain=dstnat proto=tcp dst-port=80,443 in-interface=ether1 action=dst-nat to-address=192.168.100.100
add chain=dstnat proto=tcp dst-port=80,443 in-interface=ether2 action=dst-nat to-address=192.168.100.100
Intipati masalahnya akan sama, penyelesaiannya serupa dengan pilihan Firewall Mangle, hanya rantai lain yang akan digunakan:
/ip firewall mangle
add chain=prerouting connection-state=new in-interface=ether1 protocol=tcp dst-port=80,443 action=mark-connection new-connection-mark=web-input-isp1
add chain=prerouting connection-state=new in-interface=ether2 protocol=tcp dst-port=80,443 action=mark-connection new-connection-mark=web-input-isp2
add chain=prerouting connection-mark=web-input-isp1 in-interface=ether3 action=mark-routing new-routing-mark=over-isp1 passthrough=no
add chain=prerouting connection-mark=web-input-isp2 in-interface=ether3 action=mark-routing new-routing-mark=over-isp2 passthrough=no
Rajah tidak menunjukkan NAT, tetapi saya fikir semuanya jelas.
MultiWAN dan sambungan keluar
Anda boleh menggunakan keupayaan PBR untuk mencipta berbilang sambungan vpn (SSTP dalam contoh) daripada antara muka penghala yang berbeza.
Jadual penghalaan tambahan:
/ip route
add dst-address=0.0.0.0/0 gateway=192.168.100.1 routing-mark=over-isp1
add dst-address=0.0.0.0/0 gateway=192.168.200.1 routing-mark=over-isp2
add dst-address=0.0.0.0/0 gateway=192.168.0.1 routing-mark=over-isp3
add dst-address=0.0.0.0/0 gateway=192.168.100.1 distance=1
add dst-address=0.0.0.0/0 gateway=192.168.200.1 distance=2
add dst-address=0.0.0.0/0 gateway=192.168.0.1 distance=3
Tanda pakej:
/ip firewall mangle
add chain=output dst-address=10.10.10.100 proto=tcp dst-port=443 action=mark-routing new-routing-mark=over-isp1 passtrough=no
add chain=output dst-address=10.10.10.101 proto=tcp dst-port=443 action=mark-routing new-routing-mark=over-isp2 passtrough=no
add chain=output dst-address=10.10.10.102 proto=tcp dst-port=443 action=mark-routing new-routing-mark=over-isp3 passtrough=no
Peraturan NAT yang mudah, jika tidak, paket akan meninggalkan antara muka dengan Src yang salah. alamat:
/ip firewall nat
add chain=srcnat out-interface=ether1 action=masquerade
add chain=srcnat out-interface=ether2 action=masquerade
add chain=srcnat out-interface=ether3 action=masquerade
Menghuraikan:
- Penghala mencipta tiga proses SSTP
- Pada peringkat Keputusan Penghalaan (2), laluan dipilih untuk proses ini berdasarkan jadual penghalaan utama. Dari laluan yang sama, paket menerima Src. Alamat terikat kepada antara muka ether1
- Π
[Output|Mangle]
paket dari sambungan yang berbeza menerima label yang berbeza - Paket memasuki jadual yang sepadan dengan label pada peringkat Pelarasan Laluan dan menerima laluan baharu untuk menghantar paket
- Tetapi pakej masih mempunyai Src. Alamat dari ether1, di atas pentas
[Nat|Srcnat]
alamat digantikan mengikut antara muka
Menariknya, pada penghala anda akan melihat jadual sambungan berikut:
Penjejak Sambungan berfungsi lebih awal [Mangle]
ΠΈ [Srcnat]
, jadi semua sambungan datang dari alamat yang sama, jika anda melihat dengan lebih terperinci, kemudian masuk Replay Dst. Address
akan ada alamat selepas NAT:
Pada pelayan VPN (saya mempunyai satu di bangku ujian), anda boleh melihat bahawa semua sambungan datang dari alamat yang betul:
Tahan jalan
Terdapat cara yang lebih mudah, anda hanya boleh menentukan gerbang tertentu untuk setiap alamat:
/ip route
add dst-address=10.10.10.100 gateway=192.168.100.1
add dst-address=10.10.10.101 gateway=192.168.200.1
add dst-address=10.10.10.102 gateway=192.168.0.1
Tetapi laluan sedemikian akan menjejaskan bukan sahaja lalu lintas keluar tetapi juga trafik transit. Selain itu, jika anda tidak memerlukan trafik ke pelayan vpn untuk melalui saluran komunikasi yang tidak sesuai, maka anda perlu menambah 6 lagi peraturan untuk [IP]->[Routes]
Ρ type=blackhole
. Dalam versi sebelumnya - 3 peraturan dalam [IP]->[Route]->[Rules]
.
Pengagihan sambungan pengguna melalui saluran komunikasi
Mudah, tugas harian. Sekali lagi, jadual penghalaan tambahan akan diperlukan:
/ip route
add dst-address=0.0.0.0/0 gateway=10.10.10.1 dist=1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.20.20.1 dist=2 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.10.10.1 dist=1 routing-mark=over-isp1
add dst-address=0.0.0.0/0 gateway=10.20.20.1 dist=1 routing-mark=over-isp2
Menggunakan [IP]->[Route]->[Rules]
/ip route rules
add src-address=192.168.100.0/25 action=lookup-only-in-table table=over-isp1
add src-address=192.168.100.128/25 action=lookup-only-in-table table=over-isp2
Jika digunakan action=lookup
, maka apabila salah satu saluran dilumpuhkan, trafik akan pergi ke jadual utama dan melalui saluran berfungsi. Sama ada ini perlu atau tidak bergantung kepada tugas.
Menggunakan tanda dalam [IP]->[Firewall]->[Mangle]
Contoh mudah dengan senarai alamat ip. Pada dasarnya, hampir semua syarat boleh digunakan. Satu-satunya kaveat layer7, walaupun apabila digandingkan dengan label sambungan, nampaknya semuanya berfungsi dengan betul, tetapi sesetengah trafik masih akan pergi ke arah yang salah.
/ip firewall mangle
add chain=prerouting src-address-list=users-over-isp1 dst-address-type=!local action=mark-routing new-routing-mark=over-isp1
add chain=prerouting src-address-list=users-over-isp2 dst-address-type=!local action=mark-routing new-routing-mark=over-isp2
Anda boleh "mengunci" pengguna dalam satu jadual penghalaan [IP]->[Route]->[Rules]
:
/ip route rules
add routing-mark=over-isp1 action=lookup-only-in-table table=over-isp1
add routing-mark=over-isp2 action=lookup-only-in-table table=over-isp2
Sama ada melalui [IP]->[Firewall]->[Filter]
:
/ip firewall filter
add chain=forward routing-mark=over-isp1 out-interface=!ether1 action=reject
add chain=forward routing-mark=over-isp2 out-interface=!ether2 action=reject
Berundur pro dst-address-type=!local
Syarat tambahan dst-address-type=!local
adalah perlu bahawa trafik daripada pengguna mencapai proses tempatan penghala (dns, winbox, ssh, ...). Jika beberapa subnet tempatan disambungkan ke penghala, adalah perlu untuk memastikan bahawa trafik antara mereka tidak pergi ke Internet, contohnya, menggunakan dst-address-table
.
Dalam contoh menggunakan [IP]->[Route]->[Rules]
tiada pengecualian sedemikian, tetapi trafik mencapai proses tempatan. Hakikatnya ialah masuk ke dalam pakej FIB yang ditandakan [PREROUTING|Mangle]
mempunyai label laluan dan pergi ke jadual penghalaan selain daripada utama, di mana tiada antara muka tempatan. Dalam kes Peraturan Penghalaan, mula-mula ia diperiksa sama ada paket itu bertujuan untuk proses setempat dan hanya pada peringkat PBR Pengguna ia pergi ke jadual penghalaan yang ditentukan.
Menggunakan [IP]->[Firewall]->[Mangle action=route]
Tindakan ini hanya berfungsi dalam [Prerouting|Mangle]
dan membolehkan anda mengarahkan trafik ke get laluan yang ditentukan tanpa menggunakan jadual penghalaan tambahan, dengan menyatakan alamat get laluan secara terus:
/ip firewall mangle
add chain=prerouting src-address=192.168.100.0/25 action=route gateway=10.10.10.1
add chain=prerouting src-address=192.168.128.0/25 action=route gateway=10.20.20.1
kesan route
mempunyai keutamaan yang lebih rendah daripada peraturan penghalaan ([IP]->[Route]->[Rules]
). Dalam kes tanda laluan, semuanya bergantung pada kedudukan peraturan, jika peraturan dengan action=route
bernilai lebih daripada action=mark-route
, maka ia akan digunakan (tanpa mengira bendera passtrough
), jika tidak menandakan laluan.
Terdapat sedikit maklumat di wiki mengenai tindakan ini dan semua kesimpulan diperoleh secara eksperimen, dalam apa jua keadaan, saya tidak menemui pilihan apabila menggunakan pilihan ini memberikan kelebihan berbanding yang lain.
Pengimbangan dinamik berasaskan PPC
Pengelas Per Sambungan - ialah analog ECMP yang lebih fleksibel. Tidak seperti ECMP, ia membahagikan trafik mengikut sambungan dengan lebih ketat (ECMP tidak tahu apa-apa tentang sambungan, tetapi apabila dipasangkan dengan Routing Cache, sesuatu yang serupa diperolehi).
PCC mengambil medan yang ditentukan daripada pengepala ip, menukarnya kepada nilai 32-bit, dan membahagi dengan penyebut. Baki bahagian dibandingkan dengan yang ditentukan baki dan jika ia sepadan, maka tindakan yang ditentukan akan digunakan.
Contoh dengan tiga alamat:
192.168.100.10: 192+168+100+10 = 470 % 3 = 2
192.168.100.11: 192+168+100+11 = 471 % 3 = 0
192.168.100.12: 192+168+100+12 = 472 % 3 = 1
Contoh pengedaran dinamik trafik mengikut src.address antara tiga saluran:
#Π’Π°Π±Π»ΠΈΡΠ° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ
/ip route
add dst-address=0.0.0.0/0 gateway=10.10.10.1 dist=1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.20.20.1 dist=2 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.30.30.1 dist=3 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.10.10.1 dist=1 routing-mark=over-isp1
add dst-address=0.0.0.0/0 gateway=10.20.20.1 dist=1 routing-mark=over-isp2
add dst-address=0.0.0.0/0 gateway=10.30.30.1 dist=1 routing-mark=over-isp3
#ΠΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠ° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΠΈ ΠΌΠ°ΡΡΡΡΡΠΎΠ²
/ip firewall mangle
add chain=prerouting in-interface=br-lan dst-address-type=!local connection-state=new per-connection-classifier=src-address:3/0 action=mark-connection new-connection-mark=conn-over-isp1
add chain=prerouting in-interface=br-lan dst-address-type=!local connection-state=new per-connection-classifier=src-address:3/1 action=mark-connection new-connection-mark=conn-over-isp2
add chain=prerouting in-interface=br-lan dst-address-type=!local connection-state=new per-connection-classifier=src-address:3/2 action=mark-connection new-connection-mark=conn-over-isp3
add chain=prerouting in-interface=br-lan connection-mark=conn-over-isp1 action=mark-routing new-routing-mark=over-isp1
add chain=prerouting in-interface=br-lan connection-mark=conn-over-isp2 action=mark-routing new-routing-mark=over-isp2
add chain=prerouting in-interface=br-lan connection-mark=conn-over-isp3 action=mark-routing new-routing-mark=over-isp3
Apabila menandakan laluan, terdapat syarat tambahan: in-interface=br-lan
, tanpa ia di bawah action=mark-routing
trafik tindak balas daripada Internet akan mendapat dan, mengikut jadual penghalaan, akan kembali kepada pembekal.
Menukar saluran komunikasi
Semak ping ialah alat yang baik, tetapi ia hanya menyemak sambungan dengan rakan sebaya IP terdekat, rangkaian pembekal biasanya terdiri daripada sebilangan besar penghala dan putus sambungan boleh berlaku di luar rakan sebaya terdekat, dan kemudian terdapat operator telekomunikasi tulang belakang yang mungkin juga mempunyai masalah, secara umum semak ping tidak selalu menunjukkan maklumat terkini tentang akses kepada rangkaian global.
Jika pembekal dan syarikat besar mempunyai protokol penghalaan dinamik BGP, maka pengguna rumah dan pejabat perlu memikirkan secara bebas cara menyemak akses Internet melalui saluran komunikasi tertentu.
Biasanya, skrip digunakan yang, melalui saluran komunikasi tertentu, semak ketersediaan alamat ip di Internet, sambil memilih sesuatu yang boleh dipercayai, contohnya, google dns: 8.8.8.8. 8.8.4.4. Tetapi dalam komuniti Mikrotik, alat yang lebih menarik telah disesuaikan untuk ini.
Beberapa perkataan tentang penghalaan rekursif
Penghalaan rekursif diperlukan apabila membina peering Multihop BGP dan masuk ke artikel tentang asas-asas penghalaan statik hanya disebabkan oleh pengguna MikroTik yang licik yang memikirkan cara menggunakan laluan rekursif yang dipasangkan dengan get laluan semak untuk menukar saluran komunikasi tanpa skrip tambahan.
Sudah tiba masanya untuk memahami pilihan skop / skop sasaran secara umum dan cara laluan terikat kepada antara muka:
- Laluan mencari antara muka untuk menghantar paket berdasarkan nilai skopnya dan semua entri dalam jadual utama dengan nilai skop sasaran yang kurang daripada atau sama
- Daripada antara muka yang ditemui, yang melaluinya anda boleh menghantar paket ke get laluan yang ditentukan dipilih
- Antara muka masukan bersambung yang ditemui dipilih untuk menghantar paket ke get laluan
Dengan kehadiran laluan rekursif, perkara yang sama berlaku, tetapi dalam dua peringkat:
- 1-3 Satu lagi laluan ditambahkan pada laluan bersambung, yang melaluinya get laluan yang ditentukan boleh dicapai
- 4-6 Mencari laluan laluan yang disambungkan untuk get laluan "perantaraan".
Semua manipulasi dengan carian rekursif berlaku dalam RIB, dan hanya hasil akhir dipindahkan ke FIB: 0.0.0.0/0 via 10.10.10.1 on ether1
.
Contoh penggunaan penghalaan rekursif untuk menukar laluan
Konfigurasi:
/ip route
add dst-address=0.0.0.0/0 gateway=8.8.8.8 check-gateway=ping distance=1 target-scope=10
add dst-address=8.8.8.8 gateway=10.10.10.1 scope=10
add dst-address=0.0.0.0/0 gateway=10.20.20.1 distance=2
Anda boleh menyemak bahawa paket akan dihantar ke 10.10.10.1:
Check gateway tidak mengetahui apa-apa tentang penghalaan rekursif dan hanya menghantar ping ke alamat 8.8.8.8, yang (berdasarkan jadual utama) boleh dicapai melalui get laluan 10.10.10.1.
Jika terdapat kehilangan komunikasi antara 10.10.10.1 dan 8.8.8.8, maka laluan diputuskan sambungan, tetapi paket (termasuk ping ujian) ke 8.8.8.8 terus melalui 10.10.10.1:
Jika pautan ke ether1 hilang, maka situasi yang tidak menyenangkan berlaku apabila paket sebelum 8.8.8.8 melalui pembekal kedua:
Ini adalah masalah jika anda menggunakan NetWatch untuk menjalankan skrip apabila 8.8.8.8 tidak tersedia. Jika pautan terputus, NetWatch hanya akan berfungsi melalui saluran komunikasi sandaran dan akan menganggap bahawa semuanya baik-baik saja. Diselesaikan dengan menambahkan laluan penapis tambahan:
/ip route
add dst-address=8.8.8.8 gateway=10.20.20.1 distance=100 type=blackhole
Terdapat pada habrΓ©
Dan ya, apabila menggunakan tempahan sedemikian, alamat 8.8.8.8 akan disambungkan kepada salah satu penyedia, jadi memilihnya sebagai sumber dns bukanlah idea yang baik.
Beberapa perkataan tentang Penghalaan Maya dan Pemajuan (VRF)
Teknologi VRF direka untuk mencipta beberapa penghala maya dalam satu fizikal, teknologi ini digunakan secara meluas oleh pengendali telekomunikasi (biasanya bersama MPLS) untuk menyediakan perkhidmatan L3VPN kepada pelanggan dengan alamat subnet yang bertindih:
Tetapi VRF dalam Mikrotik disusun berdasarkan jadual penghalaan dan mempunyai beberapa kelemahan, sebagai contoh, alamat ip tempatan penghala tersedia dari semua VRF, anda boleh membaca lebih lanjut
contoh konfigurasi vrf:
/ip route vrf
add interfaces=ether1 routing-mark=vrf1
add interfaces=ether2 routing-mark=vrf2
/ip address
add address=192.168.100.1/24 interface=ether1 network=192.168.100.0
add address=192.168.200.1/24 interface=ether2 network=192.168.200.0
Daripada peranti yang disambungkan ke ether2, kita melihat bahawa ping pergi ke alamat penghala dari vrf lain (dan ini adalah masalah), manakala ping tidak pergi ke Internet:
Untuk mengakses Internet, anda perlu mendaftar laluan tambahan yang mengakses jadual utama (dalam terminologi vrf, ini dipanggil bocor laluan):
/ip route
add distance=1 gateway=172.17.0.1@main routing-mark=vrf1
add distance=1 gateway=172.17.0.1%wlan1 routing-mark=vrf2
Berikut ialah dua cara laluan bocor: menggunakan jadual penghalaan: 172.17.0.1@main
dan menggunakan nama antara muka: 172.17.0.1%wlan1
.
Dan sediakan penandaan untuk trafik balik masuk [PREROUTING|Mangle]
:
/ip firewall mangle
add chain=prerouting in-interface=ether1 action=mark-connection new-connection-mark=from-vrf1 passthrough=no
add chain=prerouting connection-mark=from-vrf1 routing-mark=!vrf1 action=mark-routing new-routing-mark=vrf1 passthrough=no
add chain=prerouting in-interface=ether2 action=mark-connection new-connection-mark=from-vrf2 passthrough=no
add chain=prerouting connection-mark=from-vrf2 routing-mark=!vrf1 action=mark-routing new-routing-mark=vrf2 passthrough=no
Subnet dengan alamat yang sama
Organisasi akses kepada subnet dengan pengalamatan yang sama pada penghala yang sama menggunakan VRF dan netmap:
Konfigurasi asas:
/ip route vrf
add interfaces=ether1 routing-mark=vrf1
add interfaces=ether2 routing-mark=vrf2
/ip address
add address=192.168.100.1/24 interface=ether1 network=192.168.100.0
add address=192.168.100.1/24 interface=ether2 network=192.168.100.0
add address=192.168.0.1/24 interface=ether3 network=192.168.0.0
peraturan firewall:
#ΠΠ°ΡΠΊΠΈΡΡΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅ΡΡ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ
/ip firewall mangle
add chain=prerouting dst-address=192.168.101.0/24 in-interface=ether3 action=mark-routing new-routing-mark=vrf1 passthrough=no
add chain=prerouting dst-address=192.168.102.0/24 in-interface=ether3 action=mark-routing new-routing-mark=vrf2 passthrough=no
#Π‘ΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ netmap Π·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌ Π°Π΄ΡΠ΅ΡΠ° "ΡΡΠΈΠΌΠ΅ΡΠ½ΡΡ
" ΠΏΠΎΠ΄ΡΠ΅ΡΠ΅ΠΉ Π½Π° ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ΄ΡΠ΅ΡΠΈ
/ip firewall nat
add chain=dstnat dst-address=192.168.101.0/24 in-interface=ether3 action=netmap to-addresses=192.168.100.0/24
add chain=dstnat dst-address=192.168.102.0/24 in-interface=ether3 action=netmap to-addresses=192.168.100.0/24
Peraturan laluan untuk trafik balik:
#Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΡΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΈΡΠ°ΡΡΡΡ route leaking, Π½ΠΎ ΠΏΠΎ ΡΡΡΠΈ ΡΡΡ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π°Π½Π°Π»ΠΎΠ³ connected ΠΌΠ°ΡΡΡΡΡΠ°
/ip route
add distance=1 dst-address=192.168.0.0/24 gateway=ether3 routing-mark=vrf1
add distance=1 dst-address=192.168.0.0/24 gateway=ether3 routing-mark=vrf2
Menambah laluan yang diterima melalui dhcp pada jadual penghalaan yang diberikan
VRF boleh menjadi menarik jika anda perlu menambah laluan dinamik secara automatik (contohnya, daripada klien dhcp) ke jadual penghalaan tertentu.
Menambah antara muka pada vrf:
/ip route vrf
add interface=ether1 routing-mark=over-isp1
Peraturan untuk menghantar trafik (keluar dan transit) melalui jadual terlebih-isp1:
/ip firewall mangle
add chain=output out-interface=!br-lan action=mark-routing new-routing-mark=over-isp1 passthrough=no
add chain=prerouting in-interface=br-lan dst-address-type=!local action=mark-routing new-routing-mark=over-isp1 passthrough=no
Laluan palsu tambahan untuk laluan keluar ke tempat kerja:
/interface bridge
add name=bare
/ip route
add dst-address=0.0.0.0/0 gateway=bare
Laluan ini hanya diperlukan supaya paket keluar tempatan boleh melalui keputusan Routing (2) sebelum ini [OUTPUT|Mangle]
dan dapatkan label penghalaan, jika terdapat laluan aktif lain pada penghala sebelum 0.0.0.0/0 dalam jadual utama, ia tidak diperlukan.
Rantai connected-in
ΠΈ dynamic-in
Π² [Routing] -> [Filters]
Penapisan laluan (masuk dan keluar) ialah alat yang biasanya digunakan bersama dengan protokol penghalaan dinamik (dan oleh itu hanya tersedia selepas memasang pakej routing), tetapi terdapat dua rantaian menarik dalam penapis masuk:
- disambung-masuk β menapis laluan bersambung
- dynamic-in - menapis laluan dinamik yang diterima oleh PPP dan DCHP
Penapisan membolehkan anda bukan sahaja membuang laluan, tetapi juga menukar beberapa pilihan: jarak, tanda laluan, ulasan, skop, skop sasaran, ...
Ini adalah alat yang sangat tepat dan jika anda boleh melakukan sesuatu tanpa Penapis Penghalaan (tetapi bukan skrip), maka jangan gunakan Penapis Penghalaan, jangan mengelirukan diri anda dan mereka yang akan mengkonfigurasi penghala selepas anda. Dalam konteks penghalaan dinamik, Penapis Penghalaan akan digunakan dengan lebih kerap dan lebih produktif.
Menetapkan Tanda Laluan untuk Laluan Dinamik
Contoh dari penghala rumah. Saya mempunyai dua sambungan VPN yang dikonfigurasikan dan trafik di dalamnya harus dibalut mengikut jadual penghalaan. Pada masa yang sama, saya mahu laluan dibuat secara automatik apabila antara muka diaktifkan:
#ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ vpn ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ default route ΠΈ Π·Π°Π΄Π°Π΅ΠΌ Π΄ΠΈΡΡΠ°Π½ΡΠΈΡ
/interface pptp-client
add connect-to=X.X.X.X add-default-route=yes default-route-distance=101 ...
add connect-to=Y.Y.Y.Y add-default-route=yes default-route-distance=100 ...
#Π€ΠΈΠ»ΡΡΡΠ°ΠΌΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΌΠ°ΡΡΡΡΡΡ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠΎΠ΄ΡΠ΅ΡΠΈ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΈ
/routing filter
add chain=dynamic-in distance=100 prefix=0.0.0.0/0 action=passthrough set-routing-mark=over-vpn1
add chain=dynamic-in distance=101 prefix=0.0.0.0/0 action=passthrough set-routing-mark=over-vpn2
Saya tidak tahu mengapa, mungkin pepijat, tetapi jika anda mencipta vrf untuk antara muka ppp, maka laluan ke 0.0.0.0/0 masih akan masuk ke dalam jadual utama. Jika tidak, semuanya akan menjadi lebih mudah.
Melumpuhkan Laluan Bersambung
Kadang-kadang ini diperlukan:
/route filter
add chain=connected-in prefix=192.168.100.0/24 action=reject
Alat nyahpepijat
RouterOS menyediakan beberapa alat untuk penyahpepijatan penghalaan:
[Tool]->[Tourch]
- membolehkan anda melihat paket pada antara muka/ip route check
- membolehkan anda melihat gerbang mana paket akan dihantar, tidak berfungsi dengan jadual penghalaan/ping routing-table=<name>
ΠΈ/tool traceroute routing-table=<name>
- ping dan jejak menggunakan jadual penghalaan yang ditentukanaction=log
Π²[IP]->[Firewall]
- alat yang sangat baik yang membolehkan anda mengesan laluan paket sepanjang aliran paket, tindakan ini tersedia dalam semua rantai dan jadual
Sumber: www.habr.com