Em geral, tal problema, existe um sistema RHEL 6.4 Server com um par de interfaces de rede combinadas em uma por ligação. Este endereço IP do sistema: 10.7.7.1
. Em seguida, no sistema, execute um aplicativo que precisa se conectar ao servidor MySQL 10.7.7.2
na porta 3306. E, de fato, o MySQL roda em 10.7.7.3
. As configurações de conexão no aplicativo são codificadas e, portanto, não podem ser alteradas. Isso pode ser ouvido atravéstabelas de ipfazer tradução de endereço. Como fazer para que quando o aplicativo tentasse10.7.7.2:3306
tabelas de ipé interceptado e enviado uma solicitação para 10.7.7.3:3306
, recebe uma resposta e a envia para o aplicativo?
Responder1
Isso pode ser feito com regras NAT no iptables.
Se o servidor MySQL estiver no mesmo host, use regras REDIRECT. Redirecione todas as conexões para a porta 3306 e não para 10.7.7.3 para o endereço necessário.
Se o servidor MySQL não estiver no mesmo host, use uma regra DNAT.
Responder2
Assumindo que
- .1, .2 e .3 são máquinas diferentes
- Você não pode trocar endereços IP de .2 e .3
- .2 está rodando Linux
Aqui está o que você precisa adicionar em .2:
-t nat -A PREROUTING -d 10.7.7.2 -p tcp --dport 3306 -j DNAT --to-destination 10.7.7.3
-t nat -A POSTROUTING -d 10.7.7.3 -p tcp --dport 3306 -j SNAT --to-source 10.7.7.2
NO ENTANTO...
Se por algum motivo você não puder criar regras de iptables em .2 e/ou quiser interceptar o tráfego em .1, tudo o que você precisa fazer em .1 é:
-t nat -A POSTROUTING -d 10.7.7.2 -p tcp --dport 3306 -j DNAT --to-destination 10.7.7.3