Kasus Praktis I: Memahami layer 4 NAT dan DNAT load balancing

DIPOSTING OLEH Zevenet | 20 September 2017

Kasus-kasus praktis ini adalah panduan pelatihan untuk memahami lebih baik bagaimana jaringan, keamanan dan teknologi ketersediaan tinggi bekerja.

Pertama, coba latihan 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 komentar di pejabat daftar alamat!

Menjawab

Load balancer adalah perangkat jaringan yang bertugas memastikan arus lalu lintas antara klien dan server backend atau nyata, sehingga langkah-langkah 4 akan dijaga untuk memastikan arus, paket per paket koneksi pada lapisan 4:

Load_Balancer_l4_packet_flows

1. Paket dari klien dikirim dari klien ke load balancer
2. Paket dikirim dari load balancer ke satu server nyata atau backend yang dipilih
3. Paket tersebut membalas dari server ke load balancer
4. Paket dikirim kembali ke klien sebagai tanggapan

Zevenet layer 4 (LSLB - profil L4xNAT) menangani semua paket ini menggunakan netfilter subsistem melalui iptables dan sistem perutean jaringan.

Untuk alasan ini, ketika mengkonfigurasi a DNAT mode farm dan jalankan perintah iptables kita dapat menemukan aturan yang dihasilkan dalam tabel mengoyakkan serta nat dari netfilter. Informasi lebih lanjut tentang Tabel Netfilter di sini .

Dalam majalah PREROUTING rantai dari mengoyakkan tabel itu menunjukkan aturan yang cocok:

- Semua paket masuk dari semua sumber atau klien yang tujuannya adalah alamat virtual dan port layanan (dalam contoh akan 192.168.101.250: 443)
- Kemudian tandai paket sesuai dengan algoritma tertentu, dalam hal ini adalah bobot berdasarkan metode probabilitas.

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 bahwa paket yang masuk ditandai, di PREROUTING rantai dari nat tabel kita menggunakan tanda paket untuk mengubah alamat tujuan paket ke satu backend atau yang lain. Untuk contoh ini, alamat IP 192.168.1.10 serta 192.168.1.11 adalah server yang sebenarnya.

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         

The conntrack tabel mengelola terjemahan alamat tujuan dan di DNAT Dalam mode, paket kembali dikelola oleh rute karena load balancer akan menjadi gateway default dari backends.

Dalam kasus NAT, atau SNAT Seperti yang umumnya diketahui, conntrack tidak hanya mengatur terjemahan alamat tujuan tetapi juga terjemahan alamat sumber. Dalam hal ini, satu-satunya perbedaan dengan DNAT adalah bahwa paket yang dijawab tidak dikelola oleh sistem perutean tetapi oleh tabel conntrack. Jadi kami hanya dapat menemukan 2 aturan baru di POSTROUTING rantai tabel nat untuk melakukan MASQUERADING dengan alamat IP virtual tambak.

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? Tanyakan ke daftar alamat!

Bagikan ke:

Dokumentasi di bawah ketentuan Lisensi Dokumentasi Bebas GNU.

Apakah artikel ini berguna?

Artikel terkait