Windowsでpingが通らない原因はコレ? ファイアウォール設定で応答を許可する方法Tech TIPS

pingを使うと、相手のコンピュータが稼働しているかどうかを確認できる。ただWindows OSはデフォルトではpingに応答しないため、pingを使って稼働しているかどうかの確認ができない。そこでWindows Defenderファイアウォールの設定を変更することで、これを許可する方法を紹介する。

» 2025年09月09日 05時00分 公開
「Tech TIPS」のインデックス

連載目次

Windowsの設定を変えるとpingに応答するようになる! Windowsのファイアウォールでpingへの応答を許可

対象OS:Windows 10/Windows 11、Windows Server 2019/2022/2025


 TIPS「Windowsのpingコマンドでネットワークトラブルの原因を調査する」では、Windows OSに付属する「ping」コマンドの基本的な使い方について説明している。その中では、「pingを実行すると対象PCからpingの応答が返ってくるので、それを使って相手のPCが稼働しているかどうかを確認できる」と紹介した。システムの死活監視においては、pingは一番基本的なコマンドである。

 pingは、ネットワークプロトコルでいうと、TCP/IPの補助プロトコルである「ICMP(Internet Control Message Protocol)」の「エコー要求/エコー応答」メッセージを使って相手と通信している。しかし現在のWindows OSでは、セキュリティなどの理由のため、デフォルトではこのパケットの受信を許可していない。pingでPCの存在が判明すると、次は脆弱(ぜいじゃく)性を狙う攻撃につながるなど、好ましくない使われ方がされる危険性があるためだ。

 そのため、インストールしたばかりのWindows PCに向けて「ping pc01」のようなコマンドを実行しても応答がないことも多い(Active Directoryドメイン環境などでは、管理者があらかじめ許可していることもあり、その場合は応答がある)。しかし社内や家庭内など、限定された環境ならば管理のために、必要最小限の範囲でpingを許可しても問題ないだろう。

 本Tech TIPSでは、Windows 10/11などを対象として、pingに応答するようにWindowsファイアウォールの設定を変更する方法を紹介する。GUIだけではなく、コマンドライン(PowerShell)で設定する方法も説明する。グループポリシーでの設定については、ニーズがあれば紹介したい。

 以下のスクリーンショットはWindows 11のもので、他のWindows OSとは若干異なることがある。しかし、特記しない限り、基本的に画面は同じ構成になっている。

pingの受信を許可する

 pingコマンドに応答させるためには、Windowsファイアウォールの設定を変更して、「ICMPのエコー」プロトコルの受信を許可すればよい。以下、Windows 11でのスクリーンショットを例に、その手順を紹介する(特記しない限り、Windows 10と操作手順は共通)。

 まずは「Windowsセキュリティ」アプリを起動する。

1.[スタート]ボタンをクリックして
[スタート]メニューを開く 2.(Windows 11のみ)ここにある [すべてのアプリ]ボタンをクリック 3.スクロールして「W」という見出しを見つける 4.[Windowsセキュリティ]をクリック,「Windowsセキュリティ」アプリを起動する

■操作手順

  1. スタート]ボタンを押して[スタート]メニューを開く
  2. Windows 11の場合は、ここでメニュー右上の[すべてのアプリ]ボタンをクリックする
  3. アプリ一覧で「W」の見出しを見つけるまでスクロールする
  4. W」欄にある[Windowsセキュリティ]というアプリをクリックして起動する

 「Windowsセキュリティ」アプリの画面が表示されたら、「プロファイル」と呼ばれるネットワーク接続状況のうち、「アクティブ」(有効)になっているものを確認する。

 ちなみに、「windowsdefender://Network」というコマンドラインを実行すると、以下の「ファイアウォールとネットワーク保護」という画面を直接呼び出せる。

起動した「Windowsセキュリティ」アプリ 1.[ファイアウォールとネットワーク保護]を選択 2.3つのプロファイルがあることを確認 3.「アクティブ」なプロファイルを確認 4.[詳細設定]をクリック 現在有効な「プロファイル」を確認する

■操作手順

  1. Windowsセキュリティ」アプリの左ペインで、[ファイアウォールとネットワーク保護]を選択する
  2. ドメインネットワーク」「プライベートネットワーク」「パブリックネットワーク」という3種類のプロファイルがあることを確認する
  3. (アクティブ)」が付いているプロファイルを確認する
  4. 詳細設定]をクリックする

 実際に適用されるファイアウォールの規則は、プロファイルによって異なる。「パブリック」は公共/公衆ネットワーク環境を想定していて、最も制限が厳しい状態に設定されている。「ドメイン」はActive Directoryドメインに参加している場合に適用されるプロファイルである。

 ネットワークインタフェースが複数あるシステムでは、2つ以上のプロファイルがアクティブになっていることがあるので、よく確認しておく。

 もしプロファイルが2つしか表示されていなかったり、「アクティブ」が見当たらなかったりする場合は、いずれかのプロファイルをクリックして開き、すぐに左ペインの[ファイアウォールとネットワーク保護]をクリックして、この画面に戻ってみよう。これで3つのプロファイルが表示されるはずである。どうしても表示されない場合は、無視して次のステップへ進んで構わない。

 アクティブなプロファイルを確認できたら、[詳細設定]リンクをクリックして、「セキュリティが強化されたWindows Defenderファイアウォール」を開く。その左ペインのツリーにある[受信の規則]をクリックして、受信に対するファイアウォール規則の一覧画面を表示させる。

起動した「セキュリティが強化されたWindows Defenderファイアウォール」 ここでも3つのプロファイルのうち、どれがアクティブか確認できる 「セキュリティが強化されたWindows Defenderファイアウォール」の画面

 真ん中のペインの「受信の規則」一覧から、以下の手順でpingを受け付けるための規則を見つける。

 デフォルトでは以下のスクリーンショットのように、IPv4向けとIPv6向けの規則がそれぞれ2つずつ、計4つある。いずれも行頭にチェックマークがない無効状態のはずだ。

真ん中のペインに、ファイアウォールの受信規則一覧が表示される 1.[グループ]列見出しをクリックしてソート 2.「ファイルとプリンターの共有」グループを見つける 3.[ファイルとプリンターの共有(エコー要求 ? ICMPv<4または6>受信)]という規則を見つける pingに応答するための規則の確認

■操作手順

  1. グループ]列見出しをクリックして、この列の昇順または降順で一覧を並び替える
  2. スクロールして「ファイルとプリンターの共有」というグループを見つける
  3. 2」のグループ内で、「ファイルとプリンターの共有(エコー要求 - ICMPv4 受信)」「ファイルとプリンターの共有(エコー要求 - ICMPv6 受信)」という規則を見つける

 上述の規則の候補が見つかったら、以下の手順で絞り込んでから有効化する。

 規則を右クリックする前に、[Ctrl][Shift]キーを使って複数の規則を選択すると、同時にそれらを有効化できる。

1.「〜エコー要求〜」の規則のうち、IPv4でpingに応答させるなら「ICMPv4」、IPv6なら「ICMPv6」である規則が対象 2.「1」の規則のうち、[プロファイル]列にアクティブなプロファイルが含まれる規則を右クリック 3.[規則の有効化]をクリック pingに応答するための規則の有効化

■操作手順

  1. IPv4でpingを受け付けるなら名前に「ICMPv4」を含む規則を、IPv6なら「ICMPv6」を含む方を対象とする
  2. 1」の規則のうち、調べておいたアクティブなプロファイルが[プロファイル]列に含まれている規則を特定して右クリックする
  3. 表示されたメニューで[規則の有効化]をクリックする

 以上の手順を実行すると、同じサブネット内からのICMPのエコー要求の受信が許可され、直ちにpingに応答するようになるはずだ。実際に以下の手順で試してみよう。

 ICMPを許可すると、途中からすぐに応答が返ってくるようになるはずだ。

1.ファイアウォールの設定を変更するPCと同じサブネットに接続されているWindows PCで、コマンドプロンプトを起動 2.設定を変更するPCのIPアドレスに対してpingを繰り返し実行 pingに無応答の状態 ファイアウォールの受信規則を有効にすると、すぐに応答が始まる pingへの応答例

■操作手順

  1. ファイアウォールの規則を有効化したPCと同じサブネットに接続されているWindows PCで、コマンドプロンプトあるいはPowerShell、Windowsターミナルを起動する
  2. 規則を有効化したPCのIPアドレスに対し、「-t」オプション付きでpingコマンドを実行する。これで対象PCにpingが繰り返される

 もしpingの応答がない場合は、前述のファイアウォール設定で、使用しているプロファイル名などを再確認すること。

パブリックプロファイルでpingを受け付けないようにする

 上の例では、「プライベート」と「パブリック」プロファイルに対するpingの応答を許可した。そのため、例えばノートPCを携帯電話回線や屋外の無線LANなどにつないで利用している場合でも、同じサブネット内の未知のノードからのpingに応答することになる可能性がある(実際には、こうしたネットワークでは隣接ノードとの通信を禁止していて、pingが届かないこともよくあるが)。

 このような状況を回避し、本当にプライベート(家庭内や社内のローカルLAN)からのpingだけを許可したければ、受信規則に含まれるプロファイルから「パブリック」を除外するか、受信規則を複製して、プライベートプロファイルのみを対象とする規則を作ればよい。

 プライベートプロファイルだけに限定する手順は以下の通りだ。

1.「セキュリティが強化されたWindows Defenderファイアウォール」を起動 2.[受信の規則]を選択 3.有効化した[〜エコー要求〜]の規則を右クリックし、表示されたメニューで[プロパティ]を選択 pingを受け付けるプロファイルを変更する(1/2)
選択した規則のプロパティダイアログが表示される 4.[詳細設定]タブを選択 5.pingを受け付けたい[プライベート]のみチェックを入れて「オン」にし、その他は外して「オフ」 6.[OK]ボタンをクリックして変更を反映 pingを受け付けるプロファイルを変更する(2/2)

■操作手順

  1. 前述の手順で「セキュリティが強化されたWindows Defenderファイアウォール」を起動する
  2. 左ペインのツリーから[受信の規則]を選択する
  3. 先ほど有効化した「〜エコー要求〜」の規則を右クリックし、表示されたメニューで[プロパティ]を選択する
  4. 表示されたプロパティダイアログで、[詳細設定]タブを選択する
  5. プロファイル」欄で[プライベート]だけを「オン」にする
  6. OK]ボタンをクリックする

ローカル以外のサブネットからもpingを受け付ける

 「プライベート」「パブリック」プロファイル向けの「ファイルとプリンターの共有(エコー要求 - ICMPv<4または6> 受信)」の受信規則は、デフォルトでローカルサブネットからの着信のみ受け付けるように設定されている。つまり、この受信規則を有効にしても、そのままでは別のサブネットからルーティングされて届いたpingには応答しない。

 セキュリティ上は、このように着信可能なリモートアドレスを必要最小限に留めることが望ましい。広範囲のリモートアドレスに着信許可を無闇に与えると、対象PCの存在が簡単に知られてしまうため、冒頭でも触れたように脆弱性を狙う攻撃を受けやすくなるからだ。

 しかし、状況や環境、業務内容などによってはローカルサブネット以外からのpingにも応答するように設定せざるを得ないこともあるだろう。そのような場合は、以下の手順で該当の受信規則の「スコープ」を変更する必要がある。

1.[〜エコー要求〜]の規則のプロパティダイアログを開く 2.[スコープ]タブを選択 デフォルトでは「ローカルサブネット」からの着信に限定(その他は着信不可) 3.この[追加]ボタンをクリック 4.[このIPアドレスまたはサブネット]ラジオボタンを選択し、着信を受け付けたいサブネットを記入 5.[OK]ボタンをクリックして追加を反映 他のサブネットからもpingを受け付けるように設定を変更する

■操作手順

  1. 前述の手順で「〜エコー要求〜」の規則のプロパティダイアログを開く
  2. スコープ]タブを選択する
  3. リモートIPアドレス」欄で[これらのIPアドレス]ラジオボタンが選択されていることを確認してから、[追加]ボタンをクリックする
  4. IPアドレス」というダイアログが表示されたら、[このIPアドレスまたはサブネット]ラジオボタンを選択してから、その下の欄にサブネットを記入する
  5. OK]ボタンをクリックしていって「4」の追加を反映する

 「リモートIPアドレス」欄で[任意のIPアドレス]ラジオボタンを選択すると、全てのネットワークからの着信が許可される。これは設定が簡単な半面、前述のように脆弱性を狙う攻撃を受けやすくなる。面倒でも、上のスクリーンショットのように着信可能なサブネットを限定した方が無難だ。

PowerShellでWindowsファイアウォールでのPing受信を許可する

 「セキュリティが強化されたWindows Defenderファイアウォール」ツールでファイアウォールの設定を変更するのは分かりやすい半面、決まった手順で繰り返す場合は手間が多くて面倒である。複数のPCやサーバで実施するならなおさらだろう。

 そのような場合はコマンドラインで設定する方がよい。以下ではPowerShellによる設定手順を紹介する。

 ここでは既存のファイアウォール規則の設定を変更して、IPv4(ICMPv4)とIPv6(ICMPv6)の両方でping応答を有効化する。またPowerShellのバージョンは5.1または7以降を前提としている。その他、PowerShellは管理者権限で起動する必要がある。

●pingに応答するための既存の規則を一覧表示するには

 まずは、pingのプロトコルの1つであるICMPv4エコー要求の受信を許可する既存のファイアウォール規則をリストアップする。

# 1行目のGet-NetFirewallPortFilter: ICMPv4のポートフィルターオブジェクトを取得
# 2行目のWhere-Object:エコー要求だけに絞り込み
# 3行目のGet-NetFirewallRule:関連付けられている規則を取得
# 4行目のWhere-Object:受信だけに絞り込み
# 5行目のSort-Object:表示名とプロファイルで並び替え
# 6行目のFormat-Table:主要なプロパティを一覧表示

Get-NetFirewallPortFilter -Protocol ICMPv4 | `
Where-Object { $_.IcmpType -eq 8 } | `
Get-NetFirewallRule | `
Where-Object { $_.Direction -eq 'Inbound' } | `
Sort-Object -Property DisplayName,Profile | `
Format-Table -Property Name,DisplayName,Profile,Enabled

【PowerShell】pingに応答するための既存の規則を一覧表示する(ICMPv4の場合)
※Microsoftのレファレンス: Get-NetFirewallPortFilterWhere-ObjectGet-NetFirewallRuleSort-ObjectFormat-Table

PowerShellでping応答のための規則一覧を表示させたところ(ICMPv4の場合) PowerShellでping応答のための規則一覧を表示させたところ(ICMPv4の場合)
これはWindows 11の例。古いWindows OSでは「ファイルとプリンターの共有」グループ所属の規則しかなく、「コアネットワーク診断」グループのものが表示されないこともある。

 ICMPv6の場合、ICMPv4の場合と比べて、プロトコルを「ICMPv6」、ICMPの種類を表す番号を「128」にそれぞれ変更する。

Get-NetFirewallPortFilter -Protocol ICMPv6 | `
Where-Object { $_.IcmpType -eq 128 } | `
Get-NetFirewallRule | `
Where-Object { $_.Direction -eq 'Inbound' } | `
Sort-Object -Property DisplayName,Profile | `
Format-Table -Property Name,DisplayName,Profile,Enabled

【PowerShell】pingに応答するための既存の規則を一覧表示する(ICMPv6の場合)

●pingに応答するための既存の規則を有効化するには

 表示された規則一覧から、対象のプロファイルに合致する規則を選んで有効化してみよう。

 以下のコマンドラインの<規則名>には、表示された規則一覧の「Name」列に表示されているいずれかの規則名を指定すること(例: 「CoreNet-Diag-ICMP4-EchoRequest-In」「FPS-ICMP6-ERQ-In」)。

Set-NetFirewallRule -Name <規則名> -Enabled true

【PowerShell】pingに応答するための既存の規則を有効化する
※Microsoftのレファレンス: Set-NetFirewallRule

 意図通りに設定できたかどうかを確認するには、Get-NetFirewallRuleコマンドレットで表示されるプロパティ一覧で、「Enabled」プロパティが「True(有効)」なのか「False(無効)」なのかを調べればよい。

Get-NetFirewallRule -Name <規則名>

【PowerShell】ファイアウォール規則の設定内容を確認する
※Microsoftのレファレンス: Get-NetFirewallRule

●規則を適用するプロファイルを変更するには

 Publicプロファイルではpingに応答させたくない、すなわちPrivateプロファイルのみ応答させたい場合には、以下のコマンドラインの<コンマで区切ったプロファイル一覧>に「Private」と指定する。

Set-NetFirewallRule -Name <規則名> -Profile <コンマで区切ったプロファイル一覧>

【PowerShell】pingに応答するための既存の規則のプロファイルを変更する

 複数のプロファイルを対象とするなら「Private,Public」、全プロファイルを対象とするなら「Any」というように指定すればよい。

 設定できたかどうかを確認するには、前述のGet-NetFirewallRuleコマンドレットで「Profile」プロパティを調べればよい。

●受信を許可するリモートアドレスを設定するには

 例えばローカルサブネットと「192.168.1.0/24」のサブネット、「172.16.0.11」の3つに対してpingの応答を許可し、他は禁止したい場合は、以下のコマンドラインの<コンマで区切ったリモートアドレス一覧>に「LocalSubnet,192.168.1.0/24,172.16.0.11」と指定する。

Set-NetFirewallRule -Name <規則名> -RemoteAddress <コンマで区切ったリモートアドレス一覧>

【PowerShell】ping応答を許可するリモートアドレスを設定する

 どのリモートアドレスにも制限なく応答させたければ、<コンマで区切ったリモートアドレス一覧>に「Any」を指定する。ただし、前述のように脆弱性を狙う攻撃を受けやすくなるので推奨しない。

 「LocalSubnet」を指定した場合、IPv4とIPv6の両方が許可される。どちらか一方のローカルサブネットに限定したい場合は、「LocalSubnet4」「LocalSubnet6」のいずれかを指定すること。

 設定したリモートアドレスを確認するには、以下のように「Get-NetFirewallRule」「Get-NetFirewallAddressFilter」コマンドレットを併用する必要がある。

Get-NetFirewallRule -Name <規則名> | Get-NetFirewallAddressFilter

【PowerShell】ファイアウォール規則の設定内容を確認する
※Microsoftのレファレンス: Get-NetFirewallRuleGet-NetFirewallAddressFilter

■更新履歴

【2025/09/09】PowerShellでpingの応答を許可する手順を追記しました。

【2022/03/02】Windows 11に対応しました。

【2017/12/21】初版公開(対象OSはWindows 7/8/8.1/10、Windows Server 2008 R2/2012/2012 R2/2016)


「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

アイティメディアからのお知らせ

スポンサーからのお知らせPR

注目のテーマ

4AI by @IT - AIを作り、動かし、守り、生かす
Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。