
私は Windows ファイアウォールを初めて使用します。このダイアログを見たのですが、その意味が理解できません。
上記のダイアログには、「Python がこれらのネットワーク上で通信できるようにします:」次に、プライベート ネットワークごとに 1 つ、パブリック ネットワークごとに 1 つのチェックボックスが表示されます。
私の質問は次のとおりです。
プライベート ネットワークとパブリック ネットワークの違いは何ですか? インターネットはこれらのどのネットワークに属しますか?
特定のネットワーク上でプログラムが通信できるようにする意味は何ですか?
クライアントとサーバーの両方の観点から見てみましょう。
プログラム(クライアントとして動作)が、特定のネットワーク(パブリック/プライベート)上のファイアウォールを通過できる場合、同じネットワーク内の他のコンピューターとのソケット接続を確立できることを意味しますか?
プログラム (サーバーとして動作) がファイアウォールを通過できる場合、同じネットワーク内の他のコンピューターからのソケット接続を受け入れることができることを意味しますか?
接続をリッスンするか、接続を確立するかのいずれかを実行するプログラムを制御するにはどうすればよいですか?
つまり、Python プログラム (
python.exe
) が接続をリッスンできないように制御するにはどうすればよいでしょうか?
答え1
両者の違いは、Windowsが与える信頼のレベルです。どちらも無線LANたとえば、Windowsの「プライベートネットワーク」を自宅のネットワークとして考え、パブリックネットワークをカフェのWi-Fiホットスポットとして考えることができます。Windowsはパブリックネットワークでもプライベートネットワークでも同じように動作しません(ここインターネットは LAN に「属する」のではなく、LAN はインターネットに接続できます。
Windows 上の特定のネットワーク上でプログラムが通信できるようにするということは、ファイアウォール ルールを有効にして、そのネットワークを介して別のマシンに接続したり、他のマシンの接続をリッスンしたりできるようにすることを意味します。つまり、ソケットを介して接続を確立できるということですが、LAN が他のネットワーク (インターネットなど) に接続されている場合は、同じネットワークのマシンから、または同じネットワークのマシンへの接続だけが確立できるわけではありません。ただし、送信トラフィックと受信トラフィックは通常、異なるファイアウォール ルールであるため、有効/無効にするルールを確認する必要があります。
上で述べたように、ファイアウォールは接続に対して何らかの方法で設定できます。また、ポートをリッスンするには権限が必要な場合があるため、プログラムをブロックするために必要な権限を確認する必要があります。
答え2
1. プライベートネットワークとパブリックネットワーク
これらは主にローミング マシンで使用することを目的としています。新しいネットワークに接続するたびに、Windows は接続先のネットワークの種類 (プライベート/ビジネス/パブリック) を指定するよう求めます。これにより、マシンを接続する場所に応じて、異なるルール セットでファイアウォールを構成できます。
現在のネットワークの種類は、ネットワーク コントロール パネルとファイアウォール コンソール アドインに表示されます (3 を参照)。
2. 接続
通常、「接続を受け入れる」ネットワークと「接続を確立する」ネットワークは分離されている必要があります。思い出すと、これらは Windows ポリシーにあり、OS は両方の権限が必要かどうかを尋ねます。これらは「受信ルール」と「送信ルール」と呼ばれます。
3. 高度なルール/チェック
ルールはファイアウォール コンソール アドインで確認できますwf.msc
。
答え3
まず、ファイアウォールについて。これは単なるゲートであり、デフォルトでは閉じられています。接続は出入りできません。手動で設定して、特定のポートが開くようにすることができます。一部のプログラムは必要なポートを開き、あなたの投稿のようにプロンプトを表示します。
プライベートおよびパブリック ネットワークは、「デフォルト」のファイアウォール プロファイルです。通常、新しい WiFi に接続するときなど、新しいネットワークに接続するたびに、プライベートまたはパブリックを選択します。
Python にどのプロファイルを選択するかによって、その使いやすさが決まります。プライベート ネットワークでのみ接続を許可すると、パブリック ネットワークで作業するときに Python は接続を確立できなくなります。
クライアント/サーバー接続を確立しますか?
はい(そうするようにプログラムされている場合)。プライベート プロファイルまたはパブリック プロファイルを選択しても、Python が自身のためにポートを開くという事実には影響しません。接続のためにポートが開かれます。ただし、「プライベート」を選択した場合、これらの接続はプライベート ネットワーク内の場合にのみ開かれ、パブリック ネットワーク内の場合は閉じられます。一方、「パブリック」を選択した場合、使用しているネットワーク接続に関係なく、Python はこれらの接続を確立します。
ファイアウォール設定から Python を制御できます。