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 ...