Solicitações do container para outro container não funcionam

0

Eu tenho um servidor dedicado e instalei o LXD nele. Eu criei um contêiner para cada aplicativo e um contêiner como um proxy para os outros contêineres. Quando uma solicitação chega (ao IP do meu servidor dedicado), ela é encaminhada para o contêiner do proxy e, em seguida, despacha-a para os contêineres do aplicativo.

Estas são as regras iptables que uso para encaminhar as portas 80 e 443 no servidor dedicado para as portas 80 e 443 no meu contêiner (ip 10.1.232.241 ):

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.1.232.241:80
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to-destination 10.1.232.241:443

Isso funciona bem para qualquer solicitação vinda do exterior. Não funciona para pedidos originados do servidor dedicado para um site apontando para o servidor dedicado. Vamos dar um exemplo: Eu tenho um site blog.kindlyfire.me apontando para o meu servidor dedicado. Executar curl blog.kindlyfire.me funciona na minha máquina local, mas não funciona quando executado diretamente na máquina (note: ele não funciona em um dos contêineres também). Para contornar isso, também encaminho na cadeia OUTPUT :

iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination 10.1.232.241:80
iptables -t nat -A OUTPUT -p tcp --dport 443 -j DNAT --to-destination 10.1.232.241:443

As solicitações do meu servidor dedicado para seu ip público agora funcionam bem. Mas eles não saem dos meus containers ainda! Eu pensei, porque os contêineres usam a interface lxdbr0 , eu teria que encaminhar isso também:

iptables -t nat -A PREROUTING -i lxdbr0 -p tcp --dport 443 -j DNAT --to-destination 10.1.232.241:443
iptables -t nat -A PREROUTING -i lxdbr0 -p tcp --dport 80 -j DNAT --to-destination 10.1.232.241:80

Agora eu não recebo mais esta saída (comando executado dentro de um dos meus containers):

$ curl blog.kindlyfire.me
curl: (7) Failed to connect to blog.kindlyfire.me port 80: Connection refused

Mas ao invés disso eu entendo isso:

$ curl blog.kindlyfire.me

E apenas fica lá ...

Não tenho ideia do que tentar em seguida. Os pacotes não estão voltando? Adoraria receber ajuda porque estava perdido no começo e agora estou totalmente morto ...

    
por Tijl Van den Brugghen 04.03.2018 / 23:31

0 respostas