2017-06-26 12 views
0

ローカルホストから別のローカルIPアドレスにSQLクエリを転送できるのですか?SQL Server linux forwarding

LinuxにSQL Serverをインストールする必要はありませんが、別のPCでlocalhostを使用して接続する必要があります。

おかげ

答えて

1

あなたはiptablesのを使用することができます。

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

x.x.x.xは、MySQLサーバのIPアドレスで、eth0が使用するインターフェイスです。

+0

ありがとうございます!しかし、私はfirewalldを使用します。私はこのコマンドを試しましたファイアウォール - cmd - ゾーン=外部 - 追加 - 転送ポート=ポート= 1433:proto = tcp:toaddr = 192.168.1.110。そしてそれはうまくいかなかった。 SQLクライアントは常に接続が拒否されたと言います – Sergey

1

Linuxマシンでローカルホストに照会してそのクエリをSQL Serverに転送するかどうかを確認するようです。この場合、上記の答えは部分的に正しいものであり、パケットは転送されますが、実際に転送/リダイレクトは実行されません。あなたはまた、私はMS SQL Serverを意味するために取る "SQL Server"と言う。この場合のデフォルトのポートは1433と表示されます。実際には(2)のルールが必要です。

# 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

はい、それは私が欲しいものです。ありがとう!しかし、私はfirewalldを使用します。私はこのコマンドを試しましたファイアウォール - cmd - ゾーン=外部 - 追加 - 転送ポート=ポート= 1433:proto = tcp:toaddr = 192.168.1.110。そしてそれはうまくいかなかった。 sqlクライアントは、常に接続が拒否されたと言います。 – Sergey

+0

'lo'インターフェイスがファイアウォールのゾーンに属していない可能性が高いためです。あなたのコードはインターネットの例に基づいているようです。あなたのデフォルトゾーンは '外部'ですか( 'firewall-cmd -get-default-zone')?一致しない場合は、インタフェース 'lo'と一致しません。デフォルトのゾーン(公共など)が異なる場合は、上記のコマンドで「外部」ではなくそのゾーンを使用します。 – LJKims

+0

とにかく動作しません。何が間違っているのか理解できません。 – Sergey

関連する問題