O que você precisa é chamado de NAT hairpinning (também conhecido como loopback NAT, reflexão NAT):
NAT loopback, [...] is a feature in many consumer routers which permits the access of a service via the public IP address from inside the local network.
Por que não está funcionando? A regra DNAT do IPTables que você forneceu na sua pergunta especifica uma interface de entrada que esta regra deve aplicar a: -i eth0
. Seu tráfego não vem de eth0
, mas de alguma interface de rede virtual ou qualquer outra coisa. Apenas remover essa restrição para eth0
pode ser suficiente para que funcione.
Como alternativa, uma regra separada pode ser adicionada a lxcbr0
:
iptables -t nat -A PREROUTING -i lxcbr0 -p tcp --dport 443 \
--destination 80.x.x.x -j DNAT --to 10.0.3.100:443