encaminha todo o tráfego do mysql para um túnel ssh

5

Eu tenho um aplicativo local que precisa se conectar a um servidor mysql remoto em 40.40.40.40:3306

O firewall principal bloqueia todas as conexões, mas ssh, eu posso configurar um túnel ssh e conectar-me ao servidor sem problemas

ssh [email protected] -L 3306:127.0.0.1:3306 -N  

(em outro terminal)

$ mysql -udb_user -h127.0.0.1 -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
[...]

Minha intenção é configurar o iptables para encaminhar a conexão destinada a 40.40.40.40:3306 para o meu túnel em 127.0.0.1:3306

# iptables -t nat -A PREROUTING -d 40.40.40.40 -p tcp --dport 3306 -j DNAT --to-destination 127.0.0.1:3306

# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  anywhere             40.40.40.40       tcp dpt:mysql to:127.0.0.1:3306

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 

#cat /proc/sys/net/ipv4/ip_forward
1

Com essa configuração, meus aplicativos ainda não podem se conectar ao banco de dados, se eu alterar as configurações de conexão para 127.0.0.1, não tenho problemas, então presumo que o aplicativo funcione perfeitamente.

    
por Infrid 31.08.2015 / 14:15

1 resposta

5

Você precisa usar a corrente OUTPUT para redirecionar uma conexão de saída para uma porta local.
Esta regra funcionará como você precisa:

iptables -t nat -A OUTPUT -p tcp -d 40.40.40.40 --dport 3306 -j REDIRECT --to-port 3306
    
por 02.09.2015 / 15:37