Esses casos práticos são um guia de treinamento para entender melhor como funcionam as tecnologias de rede, segurança e alta disponibilidade.
Em primeiro lugar, tente o seguinte exercício:
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
Dúvidas e comentários no funcionário lista de discussão!
Resposta
O balanceador de carga é um dispositivo de rede encarregado de garantir o fluxo de tráfego entre o cliente e os backends ou servidores reais, para que as etapas 4 sejam tomadas de forma a garantir os fluxos, pacote por pacote de conexão na camada 4:
1. O pacote do cliente é enviado do cliente para o balanceador de carga
2. O pacote é enviado do balanceador de carga para um servidor real ou back-end selecionado
3. O pacote responde do servidor ao balanceador de carga
4. O pacote é enviado de volta ao cliente como resposta
Zevenet camada 4 (perfis LSLB - L4xNAT) lidar com todos esses pacotes usando netfilter subsistema através iptables e o sistema de roteamento de rede.
Por esse motivo, ao configurar um DTA modo farm e executar os comandos iptables podemos encontrar regras geradas nas tabelas mangle e nat do netfilter. Mais informações sobre Tabelas do Netfilter aqui .
Na série PREROUTING cadeia do mangle tabela mostra as regras que correspondem:
- Todos os pacotes de entrada de todas as fontes ou clientes cujo destino é o endereço virtual e a porta do serviço (no exemplo será 192.168.101.250:443)
- Em seguida, marque os pacotes de acordo com um determinado algoritmo, neste caso é um peso baseado em um método de probabilidade.
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
Agora que os pacotes de entrada estão marcados, no PREROUTING cadeia do nat tabela usamos a marca de pacotes para alterar o endereço de destino do pacote para um backend ou outro. Para este exemplo, os endereços IP 192.168.1.10 e 192.168.1.11 são os servidores reais.
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
A conntrack tabela gerencia a tradução do endereço de destino e no DTA mode, o pacote de retorno é gerenciado por rotas, pois o balanceador de carga será o gateway padrão dos backends.
No caso de NATou SNAT como é comumente conhecido, o conntrack gerencia não apenas a tradução do endereço de destino, mas também a tradução do endereço de origem. Neste caso, a única diferença com DTA é que o pacote respondido não é gerenciado pelo sistema de roteamento, mas pela tabela conntrack. Portanto, podemos encontrar apenas 2 novas regras no POSTRODUÇÃO cadeia da tabela nat, a fim de realizar o MASQUERADING com o endereço IP virtual do farm.
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
Mais dúvidas? Pergunte ao lista de discussão!