いいえ、ファイアウォールはありません。

いいえ、ファイアウォールはありません。

example1.com私は2つのドメインを所有しており、2つのexample2.com
Node.js Webアプリケーションを実行しているサーバーもあるとします。

  • app1はポート81で実行されています
  • app2がポート82で実行されています。

これで、両方のドメインがこのサーバーに接続されています。つまり、訪問または http://example1.com:81訪問するとhttp://example2.com:81app1ページが表示され、訪問または http://example1.com:82訪問するとhttp://example2.com:82app2ページが表示されます。

今私の質問: iptables を使用してドメイン内のすべてのリクエストをブロックできますか?

誰かが要求するとhttp://example1.com:81app1を受け取ります。
しかし、尋ねるとhttp://example1.com:82答えを聞くことができません。

同様に、誰かが要求するとhttp://example2.com:82app2を受け取りますが、
要求するとhttp://example2.com:81応答を受け取りません。

私の質問が明確になることを願っています。タイトルに説明するのが難しかったです。申し訳ありません。

答え1

「今私の質問は:iptablesを使用してドメイン内のすべてのリクエストをブロックできますか?」

いいえ、ファイアウォールはありません。

これは、ドメイン名がIP、TCP、またはレベル1 - > 3の一部ではないためです。まず、クライアントはドメイン名からIPアドレスを検索し、そのIPアドレスを使用して通信します。

これを行う方法はいくつかあります。

一部のプロトコル(例:http)には、リクエストにドメイン名が含まれています。したがって、Webサーバー構成にフィルタリングを配置できます。

必要に応じて、単一のポートを介してすべての操作を実行できます。または質問に記載されているように。

答え2

いいえ、IPtablesにポート81のすべてのトラフィックをブロックするように指示することはできませんが、ポート81のトラフィックは許可します。どれ?受け入れますか、それともブロックしますか?ブロックしている場合は、どのドメイン名が必要なのかをどうやって知ることができますか?彼らがどのドメイン名を知っているのかをどうすればわかったら、それをブロックすることを決める前にそれを受け入れませんか?

HTTPレベルで必要な操作を実行する必要があります。 Apacheを使用していると仮定すると、特定のポートの特定のドメインのみを受信するように仮想ホストコンテナを設定できます。ユーザーの接続はIPtablesによってブロックされているかのようにタイムアウトしませんが、ブラックページ、エラーメッセージ、リダイレクトなどをリッスンする可能性があり、実際に間違ったポートでサービスを使用するのを防ぎます。

あなたのプロジェクトについてはわかりませんが、Apacheを使用してトラフィックをに転送できると思います。node.jsそうすれば、他のポートを使用する必要はありません。 Apacheは同じポートですべてのトラフィックを許可でき、プロキシは指定されたホスト名に従ってnode1.jsそのトラフィックを転送します。node2.jsexample1.comexample2.com

関連情報