Kes Praktikal I: Memahami keseimbangan beban lapisan 4 NAT dan DNAT

DIPOS oleh Zevenet | 20 September 2017

Kes praktikal ini adalah panduan latihan untuk memahami dengan lebih baik bagaimana rangkaian, keselamatan dan teknologi ketersediaan tinggi berfungsi.

Pertama, cuba senaman berikut:

Step 1. Install Zevenet CE from GIT, SF or Docker
            https://www.zevenet.com/community

Step 2. Create L4xNAT farm with 2 backends and NAT or DNAT mode
            https://www.zevenet.com/knowledge-base/

Step 3. Execute in a console of Zevenet CE and try to understand the result of:
            root# iptables -t mangle -n -L
            root# iptables -t nat -n -L

Keraguan dan komen di pejabat mailing list!

jawapan

Pengimbangan beban adalah peranti rangkaian yang bertanggungjawab memastikan aliran trafik antara pelanggan dan belakang atau pelayan sejati, jadi langkah 4 akan dijaga untuk memastikan aliran, paket setiap paket sambungan di lapisan 4:

Load_Balancer_l4_packet_flows

1. Paket dari pelanggan dihantar dari klien kepada pengimbang beban
2. Pekap dihantar dari pengimbang beban kepada satu pelayan atau backend sebenar yang dipilih
3. Balasan paket dari pelayan kepada pengimbang beban
4. Pakej dihantar semula kepada pelanggan sebagai respons

Zevenet lapisan 4 (profil LSLB - L4xNAT) mengendalikan semua paket ini menggunakan netfilter subsistem melalui iptables dan sistem penghalaan rangkaian.

Atas sebab ini, apabila mengkonfigurasi a DNAT mod ladang dan melaksanakan arahan iptables kita boleh mencari peraturan yang dihasilkan dalam jadual mangle dan nat daripada netfilter. Maklumat lanjut mengenai Jadual penapis bersih di sini .

Dalam PREROUTING rantaian mangle jadual ditunjukkan peraturan yang sepadan:

- Semua paket masuk dari semua sumber atau pelanggan yang tujuannya adalah alamat maya dan port perkhidmatan (dalam contohnya akan 192.168.101.250: 443)
- Kemudian tandakan paket mengikut algoritma tertentu, dalam kes ini adalah berat berdasarkan kaedah kebarangkalian.

root@zevenet:~# iptables -L -t mangle -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
CONNMARK   all  --  0.0.0.0/0            0.0.0.0/0            CONNMARK restore
MARK       tcp  --  0.0.0.0/0            192.168.101.250      statistic mode random probability 1.00000000000 multiport dports 443 /*  FARM_app_1_  */ MARK set 0x20d
MARK       tcp  --  0.0.0.0/0            192.168.101.250      statistic mode random probability 0.50000000000 multiport dports 443 /*  FARM_app_0_  */ MARK set 0x20c
CONNMARK   all  --  0.0.0.0/0            0.0.0.0/0            state NEW CONNMARK save

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         

Sekarang bahawa paket yang masuk ditandakan, dalam PREROUTING rantaian nat jadual kami menggunakan tanda paket untuk menukar alamat destinasi paket ke satu backend atau yang lain. Untuk contoh ini, alamat IP 192.168.1.10 dan 192.168.1.11 adalah pelayan sebenar.

root@zevenet:~# iptables -L -t nat -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            mark match 0x20c /*  FARM_app_0_  */ to:192.168.1.10:443
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            mark match 0x20d /*  FARM_app_1_  */ to:192.168.1.11:443

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         

. conntrack jadual mengurus terjemahan alamat destinasi dan dalam DNAT mod, paket balik dikendalikan oleh laluan sebagai pengimbang beban akan menjadi pintu masuk lalai di belakang.

Dalam kes NAT, Atau SNAT Seperti yang diketahui umum, conntrack menguruskan bukan sahaja terjemahan alamat tujuan tetapi juga terjemahan alamat sumber. Dalam kes ini, satu-satunya perbezaan dengan DNAT adalah bahawa paket yang dibalas itu tidak dikendalikan oleh sistem penghalaan tetapi oleh jadual koneksi. Oleh itu, kita boleh menemui hanya 2 peraturan baru di POSTROUTING rantai jadual nat untuk melaksanakan MASQUERADING dengan alamat IP maya ladang itu.

root@zevenet:~# iptables -L -t nat -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            mark match 0x20c /*  FARM_app_0_  */ to:192.168.1.10:443
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            mark match 0x20d /*  FARM_app_1_  */ to:192.168.1.11:443

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            mark match 0x20c /*  FARM_app_0_  */ to:192.168.101.250
SNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            mark match 0x20d /*  FARM_app_1_  */ to:192.168.101.250

Keraguan lebih lanjut? Tanya kepada mailing list!

Berkongsi pada:

Dokumentasi di bawah syarat-syarat Lesen Dokumentasi Bebas GNU.

Adakah artikel ini berguna?

Artikel yang berkaitan