WindowsファイアウォールのPing応答(ICMP)の許可を有効にするコマンドとバッチファイル

WindowsファイアウォールでPING(ICMPプロトコル)の応答を許可されていないPCに許可する規則を有効にするコマンドを見つけたのでメモ。

netsh advfirewallというコマンドを使えばファイアウォール関連の設定ができるようです。

何台もGUIで設定するのは面倒

例えば、IPv4のアドレスに対してドメインネットワークからのPING応答を許可するとしたら、GUIでは[コントロールパネル]-[Windowsファイアウォール]-[詳細設定]-[セキュリティが強化されたWindowsファイアウォール]-[受信の規則]を開き、

ドメイン用の[ファイルとプリンターの共有 (エコー要求 - ICMPv4 受信)]のプロパティを開いて[有効]にチェックを入れます。

この作業が何台も何度もあるとちょっと面倒になってきます。そこでファイアウォール関連のnetsh advfirewallコマンドをバッチファイルで保存しておけばクリック一発で設定完了です。

netsh advfirewallコマンドで有効化

ドメインネットワークからIPv4のアドレスからのICMP受信を許可するとしたら以下となります。

netsh advfirewall firewall set rule name="ファイルとプリンターの共有 (エコー要求 - ICMPv4 受信)" profile=domain new enable=yes

IPv6の場合も同様に以下となります。

netsh advfirewall firewall set rule name="ファイルとプリンターの共有 (エコー要求 - ICMPv6 受信)" profile=domain new enable=yes

プライベートやパブリックネットワークも同時に有効にする場合は、profile=domain,private,publicにします。無効にする場合はenable=noにすればOKです。コマンドは管理者として実行しないとエラーになります。

状態を確認するコマンド

ちなみに有効か無効かを確認するコマンドは以下となります。

「有効:」の行はいになっていれば有効で、いいえの場合は無効になっています。

 netsh advfirewall firewall show rule name="ファイルとプリンターの共有 (エコー要求 - ICMPv4 受信)"

設定を変更するときはsetですが、確認するときはshowを使います。上記は、ドメイン、プライベート、パブリックなど、すべての状態を表示しますが、ドメインのみの規則を確認したい場合は以下のようにprofile=domainを追加します。

netsh advfirewall firewall show rule name="ファイルとプリンターの共有 (エコー要求 - ICMPv4 受信)" profile=domain

バッチファイルのソース

上記のコマンドを使い、有効か無効かを判別して無効になっている場合のみ、有効にするといったバッチファイルの例が以下となります。

@echo off

echo Windowsファイアウォールの"ファイルとプリンターの共有 (エコー要求 - ICMPv4 受信)"が有効になっているか確認しています。

netsh advfirewall firewall show rule name="ファイルとプリンターの共有 (エコー要求 - ICMPv4 受信)" profile=domain | findstr "有効.*はい$"

if %ERRORLEVEL% equ 0 (
	echo IPv4のエコー要求は有効になっています。
) else (
	echo IPv4のエコー要求は有効になっていませんでした。有効にしています。
	netsh advfirewall firewall set rule name="ファイルとプリンターの共有 (エコー要求 - ICMPv4 受信)" profile=domain new enable=yes
)

echo.
echo Windowsファイアウォールの"ファイルとプリンターの共有 (エコー要求 - ICMPv6 受信)"が有効になっているか確認しています。

netsh advfirewall firewall show rule name="ファイルとプリンターの共有 (エコー要求 - ICMPv6 受信)" profile=domain | findstr "有効.*はい$"

if %ERRORLEVEL% equ 0 (
	echo IPv6のエコー要求は有効になっています。
) else (
	echo IPv6のエコー要求は有効になっていませんでした。有効にしています。
	netsh advfirewall firewall set rule name="ファイルとプリンターの共有 (エコー要求 - ICMPv6 受信)" profile=domain new enable=yes
)

pause

コマンドの参考

実行後

コマンドおよびバッチファイル実行後は以下のとおり、無効だったドメインのプロファイルが有効になりました。

前へ

Acrobat Reader DCをオフラインインストールするときのコマンドとレジストリとバッチファイル

次へ

Windows Live Mail(Windows Essentials 2012)をアンインストールするコマンド