[EC2] pingとICMPについて


EC2のネットワークの設定をしている際、疎通確認としてpingをしてもレスポンスが返ってこなかったため原因を調べました。

原因

セキュリティグループのインバウンドルールでICMPの通信を許可していなかったことが原因でした。

pingとは

元々pingを「ネットワークの疎通を確認するもの」として曖昧に理解していました。

pingの仕組みを調べたところ、

指定したIPアドレス宛てにICMPエコー要求メッセージを送信しています。これは「送ったデータをそっくりそのまま送り返してください」という内容です。ICMPエコー要求メッセージを受け取ると、ICMPエコー応答メッセージとして、データをそのまま送り返します。ICMPエコー応答メッセージが返ってくれば、Pingは成功です。

とあります。1
ここで ICMPという単語が出てきました。
詳細に理解するにはこの部分を知る必要がありそうです。

ICMPとは

まずICMPとは、Internet Control Message Protocolの略で、TCP/IPにおけるインターネット層で利用され、接続しているサーバ間の通信状態を確認するプロトコルです。2
HTTPやSMTPなどがTCP/IPの一番上の層にあたるアプリケーション層であるのに対し、インターネット層というのはそれよりも下の層で、複数のネットワーク間のデータ転送を担っています。

TCP/IPに関してはこちらの説明がとてもわかりやすかったです。
https://www.itmanage.co.jp/column/tcp-ip-protocol/

平たくいうと、ICMPはそのネットワーク間の通信状態を確認するためのプロトコルとなります。

その上でpingというのは、ICMPのプロトコルを利用して通信状態を確認できるソフトウェア、という位置付けになります。
今回の事例では、pingが通らなかったのはICMPの通信を許可していなかったためであり、設定してpingが通ることが確認できました。

結論

pingはICMPを利用してインターネット層における通信状態を確認できるものであり、EC2サーバへpingを通すにはICMPを使った通信を許可する必要があります。