Windows 11/10 で PowerShell を使用して IP や Web サイトをブロックする方法

PowerShellには、Windows ファイアウォールを構成できる Netsecurity モジュールが付属しています。Netsecurity の関数 (New-NetFirewallRule) を使用して、Windows の PowerShell で IP や Web サイトをブロックできます。この機能により、新しい受信または送信ファイアウォール規則を作成して、対象のコンピューターに規則を追加できます。

PowerShell を使用して IP や Web サイトをブロックする

IP 範囲のブロックは完璧に機能しますが、Web サイトやドメインのブロックは厄介です。これは、ドメインに複数の IP が関連付けられている場合があり、それらを防止できても、DNS リゾルバーは毎回クエリを実行するたびに別の IP を認識するためです。また、同じ IP が関連するサービスによって使用される場合があり、その IP をブロックすると他のサービスもブロックされることになります。

  1. ローカルまたはインターネットの IP アドレスをブロックする
  2. Web サイトまたはドメイン名をブロックする

これらを実行するには管理者権限が必要です。

1] PowerShell を使用して IP または範囲をブロックする

このコマンドを使用すると、単一の IP アドレスまたは IP アドレスの範囲を使用できます。PowerShell で次のコマンドを実行します。

New-NetFirewallRule -DisplayName "Block XYZ.com IP address" -Direction Outbound –LocalPort Any -Protocol TCP -Action Block -RemoteAddress 146.185.220.0/23

Block XYZ.com IP address を、後で振り返ったときに思い出したり理解しやすかったりする任意の文字列に置き換えることができます。RemoteAddress オプションの最後に記載されている IP アドレスがブロックされます。その IP アドレスに解決される Web サイトまたはサービスはすべてブロックされます。IP がローカル ネットワークの IP アドレスである場合は、RemoteAddress オプションを LocalAddress オプションに置き換えることができます。

実行が完了すると、ステータス メッセージとして「規則はストアから正常に解析されました。(65536)」と表示されます。Windows ファイアウォールを開いて、エントリが利用可能かどうかを確認します。確認したら、PowerShell を使用してさらに追加できるはずです。

2] PowerShell を使用して Web サイトまたはドメインをブロックする

この関数は URL のブロックをサポートしていないため、2 つの選択肢があります。1 つ目は、そのドメインの可能なすべての IP を照会してブロックすることです。2 つ目は、既知の公式 IP 範囲を見つけてブロックすることです。後者は前者と比較して、他のサービスを誤ってブロックする可能性が低くなります。とはいえ、ドメインをブロックすることが不可欠な場合は、常に別のソフトウェアを使用してブロックできます。

Resolve-DnsName "facebook.com"

2 番目の方法で使用される IP アドレスをメモします。

New-NetFirewallRule -DisplayName "Block XYZ.com IP address" -Direction Outbound –LocalPort Any -Protocol TCP -Action Block -RemoteAddress 146.185.220.0/23

YouTube でこれを使用しましたが、直接 IP がブロックされたにもかかわらず機能しませんでした。Facebook で使用したところ機能しました。したがって、Web サイトが複数の IP アドレスを使用して解決できる場合、この方法は機能しません。

PowerShell コマンドの使用は簡単です。コマンド プロンプトを使用したことがある場合は、それと同じくらいです。Windows で PowerShell を使用して IP や Web サイトを正常にブロックできたことを願っています。削除したい場合は、いつでも Windows ファイアウォールから削除するか、Remove-NetFirewallRule コマンドを使用してください。