あれ、Pingが通らないぞ・・・?
先日、EC2インスタンスを構築し、疎通確認のためにローカルマシンからPing通信を送ったところ、何も反応がありませんでした。。。
ping {ElasticIP}
PING {ElasticIP} ({ElasticIP}): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
^C
--- {ElasticIP} ping statistics ---
4 packets transmitted, 0 packets received, 100.0% packet loss
むむ。。。
サーバーにはSSH通信で入れるし、試しにApacheを入れてみると正常にindex.htmlが表示されるので、サーバーが止まっているわけではなさそうなのに。。。orz
原因はAWSのデフォルトのセキュリティグループの設定
これは、AWSのセキュリティグループでPing通信に該当するICMP(Internet Control Message Protocol)の接続許可がデフォルトでは許されていないのが原因でした。
なので、セキュリティグループのインバウンドに以下のような設定を追加すればPing通信が可能になります。
| タイプ | すべてのICMP |
|---|---|
| プロトコル | ICMP |
| ポート範囲 | 0 - 65535 |
| ソース | カスタム:{許可するIPアドレス} |
| 説明 | 任意 |

確認
では、もう一度タイムアウトが発生していたサーバーにPing通信を試みてみましょう。
ping {ElasticIP}
PING {ElasticIP} ({ElasticIP}): 56 data bytes
64 bytes from {ElasticIP}: icmp_seq=0 ttl=236 time=19.232 ms
64 bytes from {ElasticIP}: icmp_seq=1 ttl=236 time=13.820 ms
64 bytes from {ElasticIP}: icmp_seq=2 ttl=236 time=13.606 ms
^C
--- {ElasticIP} ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 13.606/15.553/19.232/2.603 ms
正常にパケットが返ってくるようになりましたね。
終わりに
とても初歩的なことですが、当たり前のようにPingが出来るものだと思い込んでいると、この原因に気付かずにインフラ環境構築でハマってしまう可能性がありますので、AWSでサーバー構築をする際には是非念頭に入れておくといいでしょう。
