セキュリティグループで TCP ですべてのポートを解放していますが ping が通らないのは何故か教えてください

ping 通信の疎通を取るためには、ICMP プロトコルの通信を許可する設定を、送信先 EC2 のセキュリティグループのインバウンドルールに追加してください。
2022.09.12

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

EC2 に対して ping が通りません。

セキュリティグループで TCP ですべてのポートを解放しています。

ping を通す方法を教えてください。

どう対応すればいいの?

ping は ICMP プロトコルを使用しています。

そのため、ICMP プロトコルの通信許可をインバウンドルールに追加してください。

やってみた

プライベートサブネットに EC2 を 1 つ、パブリックサブネットに EC2 を 1 つ起動します。

どちらの EC2 インスタンスも、セキュリティグループのアウトバウンドルールは全開放です。

プライベートサブネットの EC2 について、セキュリティグループのインバウンドルールで、TCP ですべてのポート、すべての IP アドレスからのアクセスを許可します。

パブリックサブネットの EC2 について、セキュリティグループのインバウンドルールで、SSH 22 番ポートのみ、特定の IP アドレスからのアクセスを許可します。

パブリックサブネットの EC2 へ SSH ログインし、プライベートサブネットの EC2 のプライベート IP に対して ping コマンドで疎通確認をします。

$ ping 172.31.48.221
PING 172.31.48.221 (172.31.48.221) 56(84) bytes of data.
^Z
[1]+  Stopped                 ping 172.31.48.22

ICMP プロトコルの通信許可がないため、返答がありません。

プライベートサブネットの EC2 について、セキュリティグループのインバウンドルールで、ICMP での通信を許可します。

再度、ping コマンドを実行します。

$ ping 172.31.48.221
PING 172.31.48.221 (172.31.48.221) 56(84) bytes of data.
64 bytes from 172.31.48.221: icmp_seq=1 ttl=255 time=0.165 ms
64 bytes from 172.31.48.221: icmp_seq=2 ttl=255 time=0.186 ms
64 bytes from 172.31.48.221: icmp_seq=3 ttl=255 time=0.178 ms
64 bytes from 172.31.48.221: icmp_seq=4 ttl=255 time=0.167 ms
64 bytes from 172.31.48.221: icmp_seq=5 ttl=255 time=0.196 ms
・・・・

返答がありました。

他の注意点

Windows の場合、ping を応答する設定になっていないことが原因の場合があります。

NACL/セキュリティグループでRDP,ICMPを許可しています。RDPは通りますがPingは応答しません。どうすれば疎通できますか? | DevelopersIO

参考資料

さまざまなユースケースのセキュリティグループのルール - Amazon Elastic Compute Cloud