私たちは DNS ベースのプロキシ システムを使用しています。これは DNS エントリに基づいて特定のアドレスをプロキシします。たとえば、website1.com の場合、DNS はプロキシの IP を返し、リクエストはその IP を介して送信されますが、website2.com の場合、DNS は通常のアドレスを返し、リクエストは直接送信されます。これは問題ありません。
ただし、これは名前ベースの呼び出しにのみ機能します。特定の IP アドレスに対しても同じことを実行できるようにする必要がありますが、それを行う方法はありますか?
たとえば、ユーザーが IP 1.2.3.4 の Web サイトを参照しますが、DNS エントリはなく、A も PTR もありません。この場合、呼び出しを IP 1.2.3.4 ではなく、サーバー 10.0.0.4 に送る必要があります。これを実行する方法はあるのでしょうか? クライアント マシンで設定する必要があることはわかっていますが、それでも実行する方法はありますか?
クライアントは、Windows、Mac、Linux、Android など何でも構いません。おそらくすべてで可能というわけではありませんが、いずれかで可能でしょうか?
答え1
ネットワークを指定された場合、ネットワーク レベルのオプションがあります。以下に、NETWORK フラグ付きのネットワーク ソリューションを示します。一般的にプロキシされるプロトコルはごくわずかですが、ほとんどのプロトコルは NAT (ネットワーク ソリューション) で適切に動作します。HTTP と HTTPS は一般的にプロキシされるため、これが私の最初の回答です。
DNS ベースのプロキシに関する説明に困惑しています。DNS では、異なるアドレスに異なる IP アドレスを指定したり、関連するサイトに同じ IP アドレスを指定したりするのが一般的です。Web サイトをホスト名として指定しているということは、Web サイトのプロキシを希望していると推測できます。探している用語は、「名前ベースの仮想ホスティング」または「名前ベースのプロキシ」だと思います。
HTTP または HTTPS の場合、多くのサーバーは、IP アドレスや HOST ヘッダーで指定された名前に基づいてトラフィックをプロキシできます。Apache Web サーバーは、サイトを分離するために VirtualHosts を使用します。トラフィックをプロキシできるその他のソフトウェアには、同じまたは類似の機能があります。Apache では、同じサイトに対して IP ベースと IP アドレス ベースの両方のプロキシを行うには、IP アドレスの VirtualHost を作成し、その仮想ホストに必要な名前を追加します。次に、その VirtualHost を構成して、サイト全体またはその一部をプロキシします。
ネットワーク: IP アドレスを別のアドレスにリダイレクトする場合は、ルーターで実行できます。使用されるメカニズムは、NAT (ネットワーク アドレス変換) と呼ばれます。この場合、DNAT (宛先ネットワーク アドレス変換) が必要になります。一部のルーターは、ポート (サービス) アドレスごとに NAT を実行できます。この場合、関連する DNS エントリが変換された IP アドレスを返すようにする必要があります。
編集: 追加のコメントには追加情報が提供されています。私が理解している要件は次のとおりです。 - プロキシは特定のアドレス/アドレス範囲のユーザーに対してのみ行われ、名前/IP へのすべてのトラフィックがプロキシされるわけではありません。
- プロキシされたリクエストは、元のホストではなくプロキシから発信されたように見える必要があります。 - 現在のソリューションでは、リクエストの発信元に応じて異なるアドレス レコードが提供されています。(既存のソリューションはここで壊れていると思います。DNS リクエストは、クライアントが使用している DNS サーバーから発信されますが、クライアントのデバイスではない可能性があります。DNS 応答はキャッシュされるため、リクエストに先行する DNS リクエストに依存することはできません。)
最もうまくいくと思われる解決策は、サーバーとプロキシの前にあるデバイスで NAT ルールを使用してこれを処理することです。これにより、発信元 IP アドレスに基づいてプロキシ デバイスにプロキシするすべてのトラフィックが NAT され、その他のトラフィックはサーバーに直接渡されます。