Praktisk sag I: Forståelse af lag 4 NAT og DNAT belastningsbalancering

SENDT AF Zevenet | 20. september 2017

Disse praktiske tilfælde er en træningsguide til bedre at forstå, hvordan netværk, sikkerhed og høj tilgængelighed teknologier fungerer.

For det første, prøv følgende øvelse:

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

Tvivler og kommentarer i den officielle mailingliste!

Svar

Belastningsbalanceren er en netværksenhed med ansvar for at sikre trafikstrømmen mellem klienten og backendene eller de egentlige servere, så 4-trin vil blive taget omhu for at sikre strømmen, pakken pr. Pakke af forbindelsen ved lag 4:

Load_Balancer_l4_packet_flows

1. Pakken fra klienten sendes fra klienten til belastningsbalanceren
2. Pakken sendes fra lastbalanceren til en valgt reel server eller backend
3. Pakken svarer fra serveren til belastningsbalanceren
4. Pakken sendes tilbage til klienten som svar

Zevenet lag 4 (LSLB - L4xNAT-profiler) håndterer alle disse pakker ved hjælp af netfilter delsystem gennem iptables og netværks routing system.

Af denne grund, når du konfigurerer en DNAT mode farm og udfør kommandoerne iptables vi kan finde regler genereret i tabellerne mangle og NAT af netfilter. Yderligere informationer om Netfilter tabeller her .

I boksen PREROUTING kæde af mangle tabel vises reglerne der matcher:

- Alle indkommende pakker fra alle kilder eller klienter, hvilken destination er den virtuelle adresse og port for tjenesten (i eksemplet vil være 192.168.101.250: 443)
- Marker derefter pakkerne efter en bestemt algoritme, i dette tilfælde er en vægt baseret på en sandsynlighedsmetode.

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         

Nu hvor de indkommende pakker er markeret, i PREROUTING kæde af NAT bord bruger vi pakke mærket for at ændre destinationsadressen til pakken til en backend eller en anden. For dette eksempel adresserer IP'en 192.168.1.10 og 192.168.1.11 er de rigtige servere.

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 tabellen styrer destinationsadressens oversættelse og i DNAT mode, bliver returpakken styret af ruter, da belastningsbalancen vil være standardgatewayen til bagsiden.

I tilfælde af NAT eller SNAT som det almindeligt er kendt, styrer konntracket ikke kun destinationsadresseoversættelsen, men også oversættelsen af ​​kildeadressen. I dette tilfælde er den eneste forskel med DNAT er, at den svarede pakke ikke styres af routing-systemet, men af ​​conntrack-tabellen. Så vi kan kun finde 2 nye regler i POSTROUTING kæden af ​​natbordet for at udføre maskeret med den virtuelle IP-adresse på gården.

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

Yderligere tvivl? Spørg til mailingliste!

Del på:

Dokumentation i henhold til GNU Free Documentation License.

Var denne artikel til hjælp?

Relaterede artikler