Usando IPTables para encaminhar solicitações locais em uma porta para um servidor remoto em outra porta

2

Eu tenho um aplicativo em um contêiner do Docker. Eu tenho o banco de dados em outro contêiner do Docker. O contêiner DB tem uma porta exposta de 49155. O aplicativo requer que o banco de dados seja exposto na porta 3306 e não posso alterá-lo graças à ofuscação do IonCube. Assim, posso apontar meu aplicativo para o contêiner do banco de dados, mas o aplicativo não consegue encontrar o banco de dados (porta errada).

Minha solução inicial era a IPTables para encaminhar solicitações locais na porta 3306 para o contêiner remoto na porta 49155 usando:

iptables -t nat -A PREROUTING -p tcp --src 127.0.0.1 --dport 3306 -j REDIRECT --destination 192.168.200.212 --to-ports 49155

Ainda não está funcionando. Alguma idéia?

EDITAR

Do servidor de aplicativos tentado:

iptables -t nat -I OUTPUT -p tcp --dst 192.168.200.212 --dport 3306 -j REDIRECT --to-ports 49155

e

iptables -t nat -A PREROUTING -p tcp --dport 3306 -j DNAT --to-destination 192.168.200.212:49155

Ainda sem sorte. Também correu nmap -p 3306 -sT 192.168.200.212 que mostrou 3306 como fechado da perspectiva do servidor de aplicativos.

    
por Concordus Applications 08.01.2014 / 21:39

5 respostas

1

Se nos referirmos ao diagrama de fluxo de pacotes do NetFilter , podemos ver que apenas as cadeias OUTPUT e POSTROUTING serão referenciadas para pacotes gerados por Processos Locais.

Então, eu tentaria estas linhas:

-t nat -A OUTPUT -p tcp --dst 192.168.200.212 --dport 3306 -j DNAT --to-destination 192.168.200.212:49155
-t nat -A POSTROUTING -p tcp --dst 192.168.200.212 --dport 3306 -j MASQUERADE

A primeira regra 'substitui' o IP de destino: Porta; a segunda regra "substitui" o IP de origem: Port.

    
por 13.01.2014 / 10:08
0

Você já tentou com

iptables -t nat -I OUTPUT -p tcp --dst 192.168.200.212 --dport 80 3306 -j REDIRECT --to-ports 49155

?

    
por 08.01.2014 / 21:59
0

Tente iptables no servidor de banco de dados, ou seja,

iptables -t nat -A PREROUTING -p tcp --dport 3306 -j REDIRECIONAR - para portas 49155

    
por 08.01.2014 / 22:00
0

Eu usaria o DNAT para encaminhamento de porta no lado do servidor de aplicativos, para encaminhar a porta 3306 para a porta 49155:

iptables -t nat -A PREROUTING -p tcp -–dport 3306 -j DNAT --to 192.168.200.212:49155

Para configurar o encaminhamento de porta no lado do servidor de banco de dados, eu usaria:

iptables -t nat -A PREROUTING -p tcp --dport 3306 -j REDIRECT --to-ports 49155

Em ambos os casos, --src 127.0.0.1 não tem nada para fazer aqui.

Se você deseja filtrar no ip de origem, --src deve ser o endereço IP do servidor de aplicativos nos dois casos.

    
por 08.01.2014 / 22:30
0

Eu tive problema semelhante. Minha solução de trabalho (com base no link ):

-t nat -A OUTPUT -p tcp --dst 127.0.0.1 --dport 3306 -j DNAT --to-destination 192.168.200.212:49155
-t nat -A POSTROUTING -p tcp --dst 192.168.200.212 --dport 49155 -j MASQUERADE
    
por 26.06.2018 / 15:43