Estou executando dois contêineres lxc em uma máquina VPS e sendo novo na área iptables Estou tentando criar regras para encaminhar tráfego externo para contêineres. O primeiro (192.168.1.2) está executando um servidor openvpn, enquanto o segundo (192.168.1.4) está executando um servidor web. Até agora eu usei apenas o openvpn lxc e tinha essas regras iptables para encaminhar o tráfego:
# Generated by iptables-save v1.4.21 on Fri Apr 28 16:07:58 2017
*filter :INPUT ACCEPT [1189211:150089991] :FORWARD ACCEPT [902865:826112449] :OUTPUT ACCEPT [1324099:212970374] COMMIT
# Completed on Fri Apr 28 16:07:58 2017
# Generated by iptables-save v1.4.21 on Fri Apr 28 16:07:58 2017
*nat :PREROUTING ACCEPT [36:1998] :INPUT ACCEPT [17:858] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0]
-A PREROUTING -p udp -m udp --dport 1194 -j DNAT --to-destination 192.168.1.2:1194
-A POSTROUTING -o eth0 -j MASQUERADE COMMIT
# Completed on Fri Apr 28 16:07:58 2017
Agora, que quero configurar o servidor da Web, adicionei essa regra do iptables para encaminhar o tráfego HTTP para o contêiner do servidor da Web.
iptables -t nat -A PREROUTING -p tcp -m conntrack --ctstate NEW --dport 80 -j DNAT --to-destination 192.168.1.4:80
O problema é que, embora o encaminhamento para a porta 80 pareça funcionar (eu posso visitar a página de boas-vindas do nginx), os clientes openvpn não possuem conexão de internet adequada (embora possam fazer ping do mundo externo). E com isso, quero dizer que os sites carregam muito devagar e outros não carregam (parece que o tráfego http está se perdendo em algum lugar). Se eu remover a regra acima, tudo na conexão do cliente openvpn está funcionando como esperado, mas perco o servidor http.
P.S: As regras finais são estas
# Generated by iptables-save v1.4.21 on Fri Apr 28 16:39:24 2017
*filter
:INPUT ACCEPT [1190228:150215153]
:FORWARD ACCEPT [902877:826113261]
:OUTPUT ACCEPT [1325229:213163664]
COMMIT
# Completed on Fri Apr 28 16:39:24 2017
# Generated by iptables-save v1.4.21 on Fri Apr 28 16:39:24 2017
*nat
:PREROUTING ACCEPT [1:44]
:INPUT ACCEPT [1:44]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -p udp -m udp --dport 1194 -j DNAT --to-destination 192.168.1.2:1194
-A PREROUTING -p tcp -m conntrack --ctstate NEW -m tcp --dport 80 -j DNAT --to-destination 192.168.1.4:80
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Fri Apr 28 16:39:24 2017
Também gostaria de escrever as regras para o encaminhamento e depois as da cadeia INPUT.
Existe alguma maneira de usar esses dois protocolos sem conflitos mencionados?
Obrigado.