Eu tenho um container LXC ( 10.0.3.2
) em execução em um host. Um serviço está sendo executado dentro do contêiner na porta 7000
.
No host ( 10.0.3.1
, lxcbr0
), posso acessar o serviço:
$ telnet 10.0.3.2 7000
Trying 10.0.3.2...
Connected to 10.0.3.2.
Escape character is '^]'.
Eu adoraria tornar o serviço em execução dentro do contêiner acessível ao mundo externo. Portanto, desejo encaminhar a porta 7002
no host para a porta 7000
no contêiner:
iptables -t nat -A PREROUTING -p tcp --dport 7002 -j DNAT --to 10.0.3.2:7000
O que resulta em ( iptables -t nat -L
):
DNAT tcp -- anywhere anywhere tcp dpt:afs3-prserver to:10.0.3.2:7000
Ainda assim, não consigo acessar o serviço do host usando a porta encaminhada:
$ telnet 10.0.3.1 7002
Trying 10.0.3.1...
telnet: Unable to connect to remote host: Connection refused
Sinto como se estivesse perdendo algo estúpido aqui. Que coisas devo verificar? Qual é uma boa estratégia para depurar essas situações?
Para completar, eis como iptables
são configurados no host:
iptables -F
iptables -F -t nat
iptables -F -t mangle
iptables -X
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o lxcbr0 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp --dport 7002 -j DNAT --to 10.0.3.2:7000
ACCEPT
FORWARD
corrente. Além disso, verifique se o encaminhamento IP está habilitado: cat /proc/sys/net/ipv4/ip_forward
.
ip_forward
está definido como1
FORWARD
política também éACCEPT
INPUT
corrente? Talvez a política estejaREJECT
lá.