Windows Defender ファイアウォールの受信の規則に同名の規則が大量に生成されいてる

Windows Defender ファイアウォールの受信の規則に同名の規則が大量に生成されいてる

Windows 10の標準ファイアウォール機能の詳細設定行う「セキュリティが強化された Windows Defender ファイアウォール」で、受信の規則に「DNS Server Forward Rule」や「HNS Container Networking 」から始まる規則が大量に作成されていることがあります。

何かのトラブルなのか気になったので、このルールがいったい何なのか、削除してもよいかについて、調査・対応した内容について紹介します。

この記事は、以下の環境での動作結果を基にしています。他のエディションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
Windows 10 Pro 64bit1809~22H2

状況と原因

状況

以下の画像では、「セキュリティが強化された Windows Defender ファイアウォール」に「DNS Server Forward Rule -TCP」と「DNS Server Forward Rule - UDP」から始まる受信の規則が200個近く作成されています。

また、最近の環境では「HNS Container Networking - DNS (UDP-In)」と「HNS Container Networking - ICS DNS (TCP-In)」から始まる受信の規則が大量に生成されているばあもあります。

規則の内容は、いずれもDNSへの問い合わせ利用されるTCPおよびUDPの53番ポートの受信を許可する設定になっています。

Windows Defender ファイアウォールの受信の規則に同名の規則が大量に生成されいてる

原因

調べてみると、この規則は、Windows 10でHyper-Vを有効化している場合に、仮想スイッチ「Default Switch」により作成されるようです。

Windows Defender ファイアウォールの受信の規則に同名の規則が大量に生成されいてる

また、この仮想スイッチは、PCを起動するたびに再作成される仕様らしく、これにより受信の規則も起動するたびに新たに作成され、どんどん規則の数が多くなってしまうようです。

本来であれば、「Default Switch」そのものを削除したり、設定を変更することで、この状況を回避できればよいのですが、この仮想スイッチは、ユーザーによる削除や設定変更ができないため、状況を回避することは難しいようです。

Memo

「Default Switch」は、Hyper-V仮想マシンに対してプライベートIPアドレスの自動割り当てや、NAT機能を提供してくれる仮想スイッチで、Windows 10バージョン1709から「既定のスイッチ」として搭載されている、とても便利な機能です。

対処方法

生成される受信の規則は「Default Switch」に接続された仮想マシンからの名前解決に使用されているため、この規則がないと、仮想マシンから名前解決ができなくなってしまいます。

ただ、生成されている規則すべてが必要なわけではなく、TCP用とUDP用の規則が一つずつあれば、仮想マシンからの名前解決は問題なくできるため、1組だけ規則を残して残りは削除しても問題ないようです。

現状での応急処置としては、まず「セキュリティが強化されたWindows Defenderファイアウォール」を開いて、生成された受信の規則の内、1組だけ次のように名前を変更してから、残りの「DNS Server Forward Rule」または「HNS Container Networking - DNS」から始まる受信の規則を削除します。

変更前変更後
DNS Server Forward Rule - TCP …My DNS Server Forward Rule - TCP
DNS Server Forward Rule - UDP …My DNS Server Forward Rule - UDP
HNS Container Networking - ICS DNS (TCP-In) - …My HNS Container Networking - ICS DNS (TCP-In)
HNS Container Networking - DNS (UDP-In) -  …My HNS Container Networking - DNS (UDP-In)

規則の削除は、手作業で行っていも良いですし、面倒ならWindows PowerShellを管理者権限で起動し、以下のコマンド実行して一括削除することもできます。

PS> Remove-NetFirewallRule -DisplayName "DNS Server Forward Rule - *"
PS> Remove-NetFirewallRule -DisplayName "HNS Container Networking - ICS DNS (TCP-In) - *"
PS> Remove-NetFirewallRule -DisplayName "HNS Container Networking - ICS DNS (UDP-In) - *"

なお、既存の規則を削除しても、PCの起動のたびに、また新たに作成されるので、上のコマンドを記述したWindows PowerShellスクリプトを作成し、コンピュータ起動時に実行されるよう「タスクスケジューラ」に登録しておくのもありかと思います。