Linux Virtual Server: caminho de retorno do NAT

1

Estou tentando configurar um balanceador de carga LVS na frente do meu Kubernetes: o Calico é usado como rede de contêiner, portanto, cada conjunto tem sua própria interface de rede em seu host. IPs externos, rotas e regras de roteamento são gerenciadores usando keepalived. Cada sub-rede atribuída pelo meu provedor de hospedagem possui seu próprio roteador. Os servidores possuem duas interfaces físicas conectadas à Internet. Os IPs externos estão disponíveis na segunda interface.

A configuração é esta: A primeira interface tem um endereço IP global e uma rota padrão. A segunda interface tem um IP privado. Ele também tem todos os IPs adicionais pelo meu provedor de hospedagem. Como todos os pacotes dos IPs adicionais devem ser roteados por meio de um gateway padrão especial, adicionei tabelas e regras de roteamento.

Até este ponto, tudo está funcionando como esperado. Para disponibilizar os serviços do Kubernetes nos IPs, adicionei um LVS em alguns nós.

O meu problema é o seguinte: os pacotes da Internet chegam aos meus Kubernetes mas as suas respostas não voltam à Internet. Os pacotes desaparecem em algum lugar no meu nó do Kubernetes. Os pacotes de resposta dos meus pods estão usando o pod IP como fonte e precisam ser reescritos pelo NAT.

Ao olhar para as regras do iptables, não vejo as do LVS. Onde eles estão? Quando as regras LVS NAT são executadas? Eles estão vinculados a uma interface? O caminho de encaminhamento e a interface estão decididos antes do NAT para que os pacotes de resposta sejam feitos?

    
por Wienczny 08.02.2016 / 06:43

1 resposta

0

Eu estava faltando para habilitar o suporte ao netfilter conntrack para conexões LVS. Consulte o link para obter uma descrição da interação do LVS netfilter.

Isso pode ser feito usando:

sysctl net.ipv4.vs.conntrack=1

    
por 09.02.2016 / 19:58