私は周りを見回して、あるサーバー上のIPから別のサーバー上の別のIPに要求を転送する多くのIP転送ソリューションを見てきました。 (基本的に、サーバーXの123.45.67.89からサーバーYの98.76.54.321への要求の転送。)これらのソリューションには通常、LinuxカーネルでIP転送を有効にし、iptablesルールを追加してすべてを機能させることが含まれます。
ただし、転送を行うときにサーバーY(およびそのIP 98.76.54.321)が公開されるかどうかはわかりません。私は基本的にリバースプロキシを目指していますが、TCP/UDP上の任意のポートまたはプロトコルを目指しています。
基本的に、Linux IP転送は自動的にリバースプロキシとして機能しますか、それともサーバーY(そのIP)のIDがサーバーXを介して公開されないようにするために他の手順を実行する必要がありますか?それとも私は間違った解決策を完全に検討していますか?
LinuxIP転送は基本的にルーティングです。それ自体はプロキシではなく、レイヤー3以上のトラフィックを実際に変更することもありません。
とはいえ、トラフィックの場所をマスクするものが必要な場合は、NAT iptablesを使用してトラフィックをマスカレード(またはソースNAT)して、ソースIPがLinuxサーバー。これは転送と連動して機能します。
これを行うには、インバウンドトラフィックをDNATする必要があります(宛先アドレスを変更します)。
iptables -t nat -A PREROUTING -d ${server_x} -j DNAT --to-destination ${server_y}
次に、送信元アドレスを変更して、非表示のサーバーがフォワーダーを介してトラフィックを送り返すようにする必要があります。
iptables -t nat -A POSTROUTING -d ${server_y} -j SNAT --to ${server_x}
必要に応じて、プロトコルとポートでこれらを予測することも検討できます。
あなたはあなたが解決しようとしている問題を完全に説明しておらず、あなたがそれをどのように解決できると思うか、そして他の選択肢を求めました...したがって、この答えはやや曖昧かもしれませんが、とにかくそれを与えます。
第一に、聖なるものすべてを愛するために、AVOID NAT。お願いします。新しいNATが作成されるたびに、ユニコーンは泣きます。
ソリューション1
サーバーにパブリックIPがある場合は、ルーティング(IP転送)と適切なファイアウォールルール(iptables)を使用して、通過を許可するものを制御します。
例えば:
Internet <==> Perimeter (123.45.67.89) <==> Server (98.76.54.321)
境界ホストでIP転送(ルーティング)を有効にしてから、ファイアウォールルールを設定して、サーバーに到達できるようにするトラフィック、DROP
またはREJECT
の他のすべてのトラフィックのみを許可します。
ソリューション2
サーバーが実際に「サーバー」を処理しているにもかかわらず、「インターネット」が実際に「境界」と通信していると信じるようにサーバーを本当に「非表示」にしたい場合は、適切なリバースプロキシソフトウェアを「境界」にインストールして、それを実行させます。 。これにより、境界ホストでより多くのリソースが必要になりますが、「サーバー」が非表示になり、NAT(NATを回避するように言及しましたか?)
ソリューション
何らかの理由で1と2が実行可能でないために本当に必要な場合は、NATの提案を使用してください。