#前書き
なんかの拍子でEC2上で動いてるWindowsServer機からインスタンスメタデータが取得できなくなった
#TL;DR
ルーティングテーブル異常
静的ルートで169.254.169.254にルーティングしている物を削除しReboot
#そもそもインスタンスメタデータとは
インスタンスメタデータは、インスタンスに関するデータで、実行中のインスタンスを設定または管理するために使用します。インスタンスメタデータはいくつかのカテゴリに分けられます。
(http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)
実行中のインスタンスに関する様々なデータがawscliとか使わずにHTTPで取れるため、簡単に扱える
#症状
##壁紙に埋め込まれている情報が少ない
Windows機でリモートデスクトップを使って接続すると壁紙にインスタンスIDとかが表示されるかと思うがその表示数が少ない
正常な例だが、ここからInstanceIDとかが表示されなくなる
##メタデータサーバーに接続できない
単純にhttp://169.254.169.254/
に繋がらない
#調査
色々調査したが、今回はルーティングテーブルが怪しかった
Windows機なのでroute print
したところ
C:\Windows\system32>route print
===========================================================================
インターフェイス一覧
5...XX XX XX XX XX XX ......Intel(R) 82599 Virtual Function
1...........................Software Loopback Interface 1
6...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter
3...00 00 00 00 00 00 00 e0 Teredo Tunneling Pseudo-Interface
===========================================================================
IPv4 ルート テーブル
===========================================================================
アクティブ ルート:
ネットワーク宛先 ネットマスク ゲートウェイ インターフェイス メトリック
----------------------------------(省略)-----------------------------------
===========================================================================
固定ルート:
ネットワーク アドレス ネットマスク ゲートウェイ アドレス メトリック
169.254.169.254 255.255.255.255 XXX.XXX.XXX.XXX 15
169.254.169.250 255.255.255.255 XXX.XXX.XXX.XXX 15
169.254.169.251 255.255.255.255 XXX.XXX.XXX.XXX 15
===========================================================================
IPv6 ルート テーブル
===========================================================================
アクティブ ルート:
If メトリック ネットワーク宛先 ゲートウェイ
----------------------------------(省略)-----------------------------------
===========================================================================
固定ルート:
なし
C:\Windows\system32>
このように一部固定ルートがAWSから設定されているが、この中で一部ルート(169.254.169.254
を含む)が明らかに異常値(重複していたり、存在しないゲートウェイにルーティングされていた)となっていた。
#対策
該当ルートをroute delete 169.254.169.254
し、再起動することにより正常なルーティング情報が自動的にセットされる