一般的に、このような問題は、ボンディングによって1つに結合されたネットワークインターフェースのペアを持つRHEL 6.4サーバーシステムにあります。このシステムのIPアドレス:10.7.7.1
。次に、ポート3306でMySQLサーバーに接続する必要があるアプリケーションを実行しているシステム10.7.7.2
。そして実際には、MySQLはで実行されます10.7.7.3
。アプリケーションの接続設定はハードコードされているため、変更できません。それはを通じて聞くことができますiptablesアドレス変換を行います。アプリケーションが10.7.7.2:3306
iptablesが傍受され、にリクエストが送信され10.7.7.3:3306
、応答が返され、それをアプリケーションにフィードしますか?
答え1
これは、iptables の NAT ルールを使用して実行できます。
MySQL サーバーが同じホスト上にある場合は、REDIRECT ルールを使用します。10.7.7.3 ではなくポート 3306 へのすべての接続を必要なアドレスにリダイレクトします。
MySQL サーバーが同じホスト上にない場合は、DNAT ルールを使用します。
答え2
仮定して
- .1、.2、.3は異なるマシンです
- .2と.3のIPアドレスを交換することはできません
- .2はLinuxを実行しています
.2 に追加する必要があるものは次のとおりです。
-t nat -A PREROUTING -d 10.7.7.2 -p tcp --dport 3306 -j DNAT --to-destination 10.7.7.3
-t nat -A POSTROUTING -d 10.7.7.3 -p tcp --dport 3306 -j SNAT --to-source 10.7.7.2
しかし...
何らかの理由で .2 で iptables ルールを作成できない場合や、.1 でトラフィックを傍受したい場合は、.1 で次の操作を行うだけです。
-t nat -A POSTROUTING -d 10.7.7.2 -p tcp --dport 3306 -j DNAT --to-destination 10.7.7.3