Por que o iptables não permite conexões MySQL?

1

Por alguma razão, conexões mysql de um endereço IP específico não são permitidas. Esta é a regra que eu tenho (pegou de iptables-save ):

-A INPUT -s 12.34.56.78/32 -p tcp -m state --state NEW -m multiport --dports 22,80,3306 -j ACCEPT

O que é interessante aqui é que as conexões SSH e as páginas HTTP são carregadas perfeitamente sem problemas. Eu adicionei 3306 para conexões MySQL mais tarde, mas elas parecem ser ignoradas. Por quê?

Estou no CentOS. Eu reiniciei o serviço iptables e configurei o IPTABLES_SAVE_ON_STOP / RESTART para sim.

A execução de netstat -tunelp mostra-me isto:

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      27         8849593    10712/mysqld

Aqui está minha lista completa de regras de iptables -L :

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
ACCEPT     tcp  --  192.168.1.0/24       anywhere            state NEW multiport dports ssh,http,mysql
ACCEPT     tcp  --  some-resolved-hostname-1.com  anywhere            state NEW multiport dports ssh,http,mysql
ACCEPT     tcp  --  some-resolved-hostname-2.com  anywhere            state NEW multiport dports ssh,http,mysql
ACCEPT     tcp  --  some-resolved-hostname-3.com  anywhere            state NEW multiport dports ssh,http,mysql
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Observação: não há registros (incluindo logs de erros) no lado do servidor. O erro que recebo ao tentar se conectar é:

D:\>mysql -u username -p -h 12.34.56.78
Enter password:
ERROR 2003 (HY000): Can't connect to MySQL server on '12.34.56.78' (10060)

Além disso (como era de uma máquina Windows tentando se conectar) eu tentei isso:

D:\>telnet 12.34.56.78 3306
Connecting To 12.34.56.78...Could not open connection to the host, on port 3306: Connect failed

Observe também que skip_networking é para off .

    
por Leonard Challis 03.08.2014 / 15:02

2 respostas

5

Primeiro, você alterou my.cnf para configurar o MySQL para escutar conexões no endereço IP do servidor? Seu arquivo deve conter esta linha:

bind-address = <public_ip_address_of_your_machine>

Em segundo lugar, você deu permissão para o usuário se conectar a partir desse endereço IP para se conectar, no MySQL?

GRANT ALL ON example.* TO someuser@'12.34.56.78' IDENTIFIED BY 'PASSWORD';

Isso resolveria o problema se você receber uma mensagem de erro semelhante a "Access denied for user: '[email protected]' (Using password: YES)"

Por último, verifique se o seu roteador tem regras de encaminhamento de porta e firewall, permitindo conexões de entrada para o servidor MySQL.

    
por 03.08.2014 / 19:30
-1

Eu vejo --dports ao invés de --dport, talvez 22 e 80 funcionem porque eles são permitidos em outra regra e simplesmente não podem aplicar essa linha?

    
por 03.08.2014 / 15:15