Eu tenho um laptop com o Ubuntu 14 Desktop. O laptop possui conexão WLAN à minha LAN e é gerenciado pelo gerenciador de rede . Da causa, o laptop também é um nic (eth0), mas não está conectado. Eu uso este laptop como um host LXC. Eu tenho vários contêineres servindo aplicativos. Com a configuração básica do LXC (configurações padrão, como o uso do dnsmasq, rede em ponte).
A saída ifconfig
está mostrando 4 interfaces: eth0
, lo
, wlan
e lxcbr0
. Até o momento, ainda não há nenhuma configuração especial do iptables. É um novo sistema instalado
Agora, configurando o NAT no meu host LXC ...
iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 21404 -j DNAT --to 10.0.3.180:3142
... Consigo acessar serviços em meus contêineres, ao acessar de outra máquina na minha LAN, por exemplo:
foo@LANMachine2: wget -O - http://lxc-host:21404 #it works
Dica: lxc-host
é um nome DNS para o laptop gerenciado pelo meu roteador.
Agora, o que eu quero fazer é permanecer na minha máquina e acessar o serviço de um contêiner a partir do próprio host LXC e de outros contêineres hospedados usando o mesmo nome DNS, assim:
bar@lxc-host: wget -O - http://lxc-host:21404
#or
bar@lxc-container: wget -O - http://lxc-host:21404
#both not working and leading to output:
Connecting to lxc-host (lxc-host)|The.IP.shown.here|:21404... failed: Connection refused.
Como fazer isso funcionar? É possível de alguma forma? A maioria das importações para mim seria capaz de conectar-me de outros contêineres aos serviços de outros contêineres, roteando através do host LXC. (Isso me permitiria padronizar a configuração dos meus contêineres)
fonte
Respostas:
Pacotes do mesmo host nunca alcançam a tabela PREROUTING (ou qualquer outra tabela nat), pois não são roteados de uma interface para outra.
Para redes de contêiner para contêiner, você pode usar uma ponte compartilhada (que não precisa ser a mesma que eles compartilham com o host) ou usar o roteamento e a tabela PREROUTING iptables, se estiverem em interfaces diferentes.
fonte