Iptables encaminhamento SNAT para contêineres openVZ

0

Para que isso faça sentido, preciso definir um pouco a cena.

Eu tenho um servidor dedicado com 5 Ips públicos: A.B.C.1 a A.B.C.5

O A.B.C.1 gerencia o próprio servidor dedicado, e o A.B.C.2 - 5 é usado para contêineres do OpenVZ. Eu quero que cada IP público seja vinculado a vários containers - Por exemplo, o A.B.C.2 deve encaminhar o tráfego na porta 80 para o container em 192.168.2.1 e o tráfego na porta 21 para o container em 192.168.2.2.

Usando IPTables para NAT, o tráfego funciona se apenas um IP externo estiver em uso, no entanto, se eu tentar adicionar vários IPs públicos para rotear, perco toda a conexão de rede para todos os contêineres, eles não podem fazer ping e não podem receber tráfego de entrada. No entanto, o acesso ao nó Host permanece.

A saída do iptables -t nat -L no nó do host está abaixo:

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       udp  --  anywhere             A.B.C.2             udp dpt:9987 to:192.168.2.1:9987
DNAT       tcp  --  anywhere             A.B.C.2             tcp dpt:10011 to:192.168.2.2:10011
DNAT       tcp  --  anywhere             A.B.C.2             tcp dpt:30033 to:192.168.2.2:30033
DNAT       tcp  --  anywhere             A.B.C.3             tcp dpt:80 to:192.168.3.1:80
DNAT       tcp  --  anywhere             A.B.C.4             tcp dpt:25565 to:192.168.4.1:25565

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
SNAT       all  --  192.168.2.0/24        anywhere            to:A.B.C.2
SNAT       all  --  192.168.3.0/24        anywhere            to:A.B.C.3
SNAT       all  --  192.168.4.0/24        anywhere            to:A.B.C.4

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

O nó Host possui um NIC phyical - eth0, que possui um IP de A.B.C.1

O Host está executando o Centos 6.3, e cada uma das VMs está executando o Debian 7.

Minha versão do kernel do OpenVZ é 2.6.32-042stab108.2

    
por Adam Dodman 15.06.2015 / 02:23

1 resposta

0

  1. Verifique se todos os IPs públicos estão configurados na interface externa de seu host físico, com a máscara de rede correta

  2. Verifique se todas as VMs têm como gateway padrão o endereço IP da ponte à qual estão conectadas (verifique se as pontes corretas têm IPs)

  3. Verifique se o ip_forwarding está ativado

  4. Use o SNAT para mascarar as VMs por trás dos IPs públicos corretos

  5. Use o DNAT para encaminhar tráfego de entrada para as VMs corretas

por 17.06.2015 / 16:46