O convidado virtual não ativa o NAT ao usar o IP do host

2

Estou usando o lxc para hospedar alguns serviços. Desejo expor um desses serviços ao mundo exterior.

Eu configurei três regras NAT no meu host usando iptables, uma para a eth0, uma para a br0 (a ponte para os containers / guests) e uma regra OUTPUT para o tráfego do próprio host.

Com essas regras, posso usar o IP dos hosts (10.234.13.185) com a porta escolhida (4050) para alcançar o guest / container (192.168.3.54:61616). Isso funciona do mundo exterior, o host e outros convidados.

No entanto, não consigo fazê-lo funcionar a partir do convidado com o serviço (192.168.3.54).

Percebo que o tráfego entra no host na porta 4050 e, em condições normais, acaba no convidado na porta 61616. No entanto, se o tráfego vier do convidado, ele ainda atingirá a porta do host 4050, mas não será roteado para o 61616 mas adere a 4050.

Eu fiz um ngrep e de outros clientes que eu vejo (usando o telnet):

  • $ host: ngrep -p 4050: 10.234.13.185:4050 - > $ client_ip [AR]
  • $ host: ngrep -p 61616: $ client_ip - > 192.168.3.54 [S] * 2, 192.168.3.54:61616 - > $ client_ip [AR]
  • $ guest: ngrep -p 61616: 192.168.3.54:61616 - > $ client_ip [AR]
  • $ guest: ngrep -p 4050: nada

No entanto, quando eu repito, mas faço telnet do próprio convidado, vejo:

  • $ host: ngrep -p 4050: 192.168.3.54:**** - > 10.234.13.185:4050 [S] (repetidamente)
  • $ host: ngrep -p 61616: 192.168.3.54:**** - > 192.168.3.54:61616 [S] (apenas uma vez)
  • $ guest: ngrep -p 61616: nada
  • $ guest: ngrep -p 4050: 192.168.3.54:**** - > 10.234.13.185:4050 [S] (repetidamente)

Estou presumindo uma regra ausente (possivelmente uma regra POSTROUTING para a fonte?).

Aqui está uma cópia do meu iptables-save

*nat
:PREROUTING ACCEPT [36:2286]
:INPUT ACCEPT [5:426]
:OUTPUT ACCEPT [25:1610]
:POSTROUTING ACCEPT [8:504]
-A PREROUTING -i eth0 -p tcp -m tcp --dport 4050 -j DNAT --to-destination 192.168.3.54:61616
-A PREROUTING -i br0  -p tcp -m tcp --dport 4050 -j DNAT --to-destination 192.168.3.54:61616
-A OUTPUT -p tcp -m tcp --dport 4050 -j DNAT --to-destination 192.168.3.54:61616
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT

Qualquer ajuda muito apreciada.

    
por Peter Gillard-Moss 19.06.2012 / 18:38

0 respostas

Tags