Pengenalan
PCC matcher akan memungkinkan Anda untuk membagi lalu lintas ke dalam aliran yang sama dengan kemampuan untuk menjaga paket dengan serangkaian tertentu pilihan dalam satu aliran tertentu (Anda dapat menentukan rangkaian pilihan dari src-address, src-port, dst-alamat, dst-port)
Teori
PCC mengambil bidang yang dipilih dari header IP, dan dengan bantuan algoritma hashing mengubah field yang dipilih ke nilai 32-bit. Nilai ini kemudian dibagi dengan ditentukan Penyebut dan sisanya kemudian dibandingkan dengan yang ditentukan Remainder , jika sama maka paket akan ditangkap. Anda dapat memilih dari src-address, dst-alamat, src-port, dst-port dari header untuk digunakan dalam operasi ini
per-connection-classifier=
PerConnectionClassifier ::= [!]ValuesToHash:Denominator/Remainder
Remainder ::= 0..4294967295 (integer number)
Denominator ::= 1..4294967295 (integer number)
ValuesToHash ::= both-addresses|both-ports|dst-address-and-port|
src-address|src-port|both-addresses-and-ports|dst-address|dst-port|src-address-and-port
Contoh
Konfigurasi ini akan membagi semua koneksi menjadi 3 kelompok berdasarkan alamat sumber dan port
/ip firewall mangle add chain=prerouting action=mark-connection \
new-connection-mark=1st_conn per-connection-classifier=src-address-and-port:3/0
/ip firewall mangle add chain=prerouting action=mark-connection \
new-connection-mark=2nd_conn per-connection-classifier=src-address-and-port:3/1
/ip firewall mangle add chain=prerouting action=mark-connection \
new-connection-mark=3rd_conn per-connection-classifier=src-address-and-port:3/2
Catatan
PCC tersedia di RouterOS sejak v3.24. Pilihan ini diperkenalkan untuk mengatasi masalah konfigurasi dengan load balancing lebih beberapa gateway yang berkedok
Sebelumnya konfigurasi:
- ECMP load balancing yang berkedok
- Beban NTH balancing yang berkedok
- Beban NTH balancing yang berkedok (pendekatan lain)
Aplikasi Contoh - Load Balancing
Pertimbangkan tata letak jaringan berikut:
Ringkas untuk sabar
Konfigurasi ekspor dari router gateway:
/ ip address
add address=192.168.0.1/24 network=192.168.0.0 broadcast=192.168.0.255 interface=LAN
add address=10.111.0.2/24 network=10.111.0.0 broadcast=10.111.0.255 interface=ISP1
add address=10.112.0.2/24 network=10.112.0.0 broadcast=10.112.0.255 interface=ISP2
/ ip firewall mangle
add chain=prerouting dst-address=10.111.0.0/24 action=accept in-interface=LAN
add chain=prerouting dst-address=10.112.0.0/24 action=accept in-interface=LAN
add chain=prerouting in-interface=ISP1 connection-mark=no-mark action=mark-connection \
new-connection-mark=ISP1_conn
add chain=prerouting in-interface=ISP2 connection-mark=no-mark action=mark-connection \
new-connection-mark=ISP2_conn
add chain=prerouting in-interface=LAN connection-mark=no-mark dst-address-type=!local \
per-connection-classifier=both-addresses:2/0 action=mark-connection new-connection-mark=ISP1_conn
add chain=prerouting in-interface=LAN connection-mark=no-mark dst-address-type=!local \
per-connection-classifier=both-addresses:2/1 action=mark-connection new-connection-mark=ISP2_conn
add chain=prerouting connection-mark=ISP1_conn in-interface=LAN action=mark-routing \
new-routing-mark=to_ISP1
add chain=prerouting connection-mark=ISP2_conn in-interface=LAN action=mark-routing \
new-routing-mark=to_ISP2
add chain=output connection-mark=ISP1_conn action=mark-routing new-routing-mark=to_ISP1
add chain=output connection-mark=ISP2_conn action=mark-routing new-routing-mark=to_ISP2
/ ip route
add dst-address=0.0.0.0/0 gateway=10.111.0.1 routing-mark=to_ISP1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.112.0.1 routing-mark=to_ISP2 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.111.0.1 distance=1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.112.0.1 distance=2 check-gateway=ping
/ ip firewall nat
add chain=srcnat out-interface=ISP1 action=masquerade
add chain=srcnat out-interface=ISP2 action=masquerade
Penjelasan
Mari kita asumsikan konfigurasi ini:
Alamat IP
/ ip address
add address=192.168.0.1/24 network=192.168.0.0 broadcast=192.168.0.255 interface=LAN
add address=10.111.0.2/24 network=10.111.0.0 broadcast=10.111.0.255 interface=ISP1
add address=10.112.0.2/24 network=10.112.0.0 broadcast=10.112.0.255 interface=ISP2
Router memiliki dua hulu (ISP) antarmuka dengan alamat 10.111.0.2/24 dan 10.112.0.2/24. Antarmuka LAN memiliki alamat IP 192.168.0.1/24.
Kebijakan routing
/ ip firewall mangle
add chain=prerouting dst-address=10.111.0.0/24 action=accept in-interface=LAN
add chain=prerouting dst-address=10.112.0.0/24 action=accept in-interface=LAN
Dengan kebijakan routing adalah mungkin untuk memaksa semua lalu lintas ke gateway tertentu, bahkan jika lalu lintas ditakdirkan untuk host (selain bahwa gateway) dari jaringan yang terhubung. Dengan cara routing loop akan dibuat dan komunikasi dengan orang-host akan mungkin. Untuk menghindari situasi ini kita perlu untuk memungkinkan penggunaan tabel default routing untuk lalu lintas ke jaringan yang terhubung.
add chain=prerouting in-interface=ISP1 connection-mark=no-mark action=mark-connection \
new-connection-mark=ISP1_conn
add chain=prerouting in-interface=ISP2 connection-mark=no-mark action=mark-connection \
new-connection-mark=ISP2_conn
Pertama perlu untuk mengelola koneksi dimulai dari luar - balasan harus meninggalkan melalui antarmuka yang sama (dari IP Public yang sama) permintaan datang. Kami akan menandai semua koneksi masuk yang baru, untuk mengingat apa yang antarmuka
add chain=prerouting in-interface=LAN connection-mark=no-mark dst-address-type=!local \
per-connection-classifier=both-addresses:2/0 action=mark-connection new-connection-mark=ISP1_conn
add chain=prerouting in-interface=LAN connection-mark=no-mark dst-address-type=!local \
per-connection-classifier=both-addresses:2/1 action=mark-connection new-connection-mark=ISP2_conn
Aksi mark-routing dapat digunakan hanya dalam mangle rantai produksi dan prerouting , tapi mangle chain preroutingadalah menangkap semua lalu lintas yang akan router itu sendiri. Untuk menghindari hal ini kita akan menggunakan dst-address-type = lokal! . Dan dengan bantuan dari PCC baru kami akan membagi lalu lintas menjadi dua kelompok berdasarkan sumber dan alamat yang tujuan.
add chain=prerouting connection-mark=ISP1_conn in-interface=LAN action=mark-routing \
new-routing-mark=to_ISP1
add chain=prerouting connection-mark=ISP2_conn in-interface=LAN action=mark-routing \
new-routing-mark=to_ISP2
add chain=output connection-mark=ISP1_conn action=mark-routing new-routing-mark=to_ISP1
add chain=output connection-mark=ISP2_conn action=mark-routing new-routing-mark=to_ISP2
Kemudian kita perlu untuk menandai semua paket dari koneksi tersebut dengan tanda yang tepat. Sebagai kebijakan routing hanya diperlukan untuk lalu lintas akan Internet, jangan lupa untuk menentukan dalam-interface pilihan.
/ ip route
add dst-address=0.0.0.0/0 gateway=10.111.0.1 routing-mark=to_ISP1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.112.0.1 routing-mark=to_ISP2 check-gateway=ping
Buat rute untuk setiap rute-tanda
add dst-address=0.0.0.0/0 gateway=10.111.0.1 distance=1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.112.0.1 distance=2 check-gateway=ping
Untuk mengaktifkan failover, perlu untuk memiliki rute yang akan melompat secepat orang lain akan menjadi tidak aktif pada kegagalan gateway. (Dan itu akan terjadi hanya jika cek-gateway pilihan aktif)
NAT
/ ip firewall nat
add chain=srcnat out-interface=ISP1 action=masquerade
add chain=srcnat out-interface=ISP2 action=masquerade
Sebagai keputusan routing sudah membuat kita hanya perlu aturan yang akan memperbaiki src-address untuk semua paket keluar. Jika paket ini akan meninggalkan melalui wlan1 akan ditunjuk untuk 10.112.0.2, jika melalui wlan2 kemudian ditunjuk untuk 10.111.0.2
No comments:
Post a Comment