特定の IP を必要とするアプリケーションの IP を偽装するにはどうすればよいですか?

特定の IP を必要とするアプリケーションの IP を偽装するにはどうすればよいですか?

一般的に、このような問題は、ボンディングによって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

関連情報