
Tenho um servidor Ubuntu com máquinas virtuais KVM.
Permiti SSH no firewall para poder acessar o host. Também permiti tráfego de entrada com estado relacionado e estabelecido.
Esta é a configuração completa do iptables do host:
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- [MYIP] anywhere tcp dpt:ssh
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT all -- [MYIP] [VSERVER IP] to:192.168.122.122
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 192.168.122.0/24 !192.168.122.0/24
O servidor virtual roda com Windows e possui o IP local. 192.168.122.122
Como você pode ver no arquivo PREROUTING
, ele está configurado para que somente eu possa acessá-lo em todas as portas.
A área de trabalho remota funciona bem e consegui me conectar ao servidor usando o IP externo ([VSERVER IP]). Quando estou conectado ao servidor, tentei abrir o Internet Explorer e digitei stackoverflow.com. Funciona, a página é exibida.
Porém, quando executo um programa MySQL simples (usando .NET MySql.Data.dll
) que deveria fazer consultas a outro servidor, ele falha com
MySql.Data.MySqlClient.MySqlException (0x800004005):
Unable to connect to any of the specified MySQL hosts.
Por que é que? Solicitações HTTP para qualquer servidor web não foram problema, então por que é uma consulta Mysql?
Para constar, o servidor Mysql externo não está descartando as solicitações (firewall temporariamente desativado). Deve ser algo no iptables, mas não sei o quê.
Como posso corrigir esse problema?
Responder1
Infelizmente, ocorreu um erro no Firewall do meu host MySQL (externo) que eu não conhecia. Afinal, a porta MySQL estava bloqueada para o IP do meu vServer, por isso as solicitações não voltavam e as solicitações HTTP estavam funcionando.
O problema foi resolvido.
Sempre verifique todos os Firewalls! Lição aprendida.