2017-06-26 5 views
0

Je me demande si je pourrais transmettre des requêtes SQL de localhost à une autre adresse IP locale? Je ne veux pas installer SQL Server sous Linux, mais j'ai besoin de me connecter sur un autre PC via localhost.SQL Server linux forwarding

Merci

Répondre

1

Vous pouvez utiliser iptables:

iptables -A FORWARD -p tcp -i eth0 -s localhost -d x.x.x.x --dport 3306 -j ACCEPT 

où x.x.x.x est l'adresse IP du serveur MySQL et eth0 est l'interface que vous utilisez.

+0

Merci! Mais j'utilise firewalld. J'ai essayé cette commande firewall-cmd --zone = externe --add-forward-port = port = 1433: proto = tcp: toaddr = 192.168.1.110. Et ça n'a pas marché. Le client SQL dit toujours Connexion refusée – Sergey

1

Il semble que vous demandiez si vous êtes sur une machine Linux que vous souhaitez interroger sur localhost et que cette requête est transmise à un serveur SQL. Dans ce cas, la réponse ci-dessus est partiellement correcte et permettra aux paquets d'être retransmis mais n'effectue pas réellement la redirection/redirection. Vous dites également "SQL Server" que je considère comme MS SQL Server. Le port par défaut dans ce cas est répertorié comme 1433. Vous auriez en fait besoin de (2) règles:

# iptables -t nat -A PREROUTING -p tcp -i lo -d localhost --dport 1433 -j DNAT --to-destination x.x.x.x # where x.x.x.x is the SQL Server IP address 
# iptables -A FORWARD -i lo -p tcp --dport -j ACCEPT # only if your default FORWARD policy is DROP. Otherwise you just need the prerouting rule. 
+0

Oui c'est ce que je veux. Merci! Mais j'utilise firewalld. J'ai essayé cette commande firewall-cmd --zone = externe --add-forward-port = port = 1433: proto = tcp: toaddr = 192.168.1.110. Et ça n'a pas marché. Le client SQL dit toujours Connexion refusée. – Sergey

+0

Très probablement parce que l'interface 'lo' n'a pas tendance à appartenir à toutes les zones firewalld. Il semble que votre code ait été basé sur un exemple Internet. Votre zone par défaut est-elle 'external' ('firewall-cmd --get-default-zone')? Sinon, il ne correspondra pas à l'interface 'lo'. Si vous avez une zone par défaut différente (par exemple public), utilisez cette zone au lieu de 'external' dans votre commande ci-dessus. – LJKims

+0

Ne fonctionne pas de toute façon. Je ne peux pas comprendre ce qui pourrait être faux. – Sergey