AWSはリンクローカルアドレスとして169.254.169.254を使用します。これを使用して、インスタンスに関するメタデータを取得できます。
curl http://169.254.169.254/latest/meta-data/
このIPはインスタンスでどのように/どこで構成されていますか? 「iproute」を実行すると、そのルートが表示されます。また、「netcat -Cvz 169.254.169.254 80」と指定すると、接続できます。ただし、「netstat -ntlp」を実行しても、インスタンスが実際にどこでもリッスンしているようには見えません。別のポート「netcat -Cvz 169.254.169.254 22」に接続しようとすると失敗します。実際、0.0.0.0:80で実行されている競合するApacheサービスのように見えます。したがって、このアドレスは外部ホストを参照しているようです。ハイパーバイザーを指しているのでしょうか?
ほとんどのLinuxディストリビューションはすでにZeroconfルートを作成しているため、Amazonはその特定のIPアドレスを「借用」すると考えたのでしょう。たとえば、CentOS 7をインストールすると、「箱から出して」プライマリイーサネットにルートが追加されます。
/ etc/sysconfig/network-scripts/ifup-eth
# Add Zeroconf route.
if [ -z "${NOZEROCONF}" -a "${ISALIAS}" = "no" -a "${REALDEVICE}" != "lo" ]; then
ip route add 169.254.0.0/16 dev ${REALDEVICE} metric $((1000 + $(cat /sys/class/net/${REALDEVICE}/ifindex))) scope link
fi
間違いなく、debian、ubuntuなどにも同様のものが存在します...
ローカルインターフェースのアドレスが正しいサブネットにさえない場合、どのように機能するのか不思議に思うかもしれませんが、実際にはLinuxはあまり気にしません。一部のサーバーは、RFC3927に従って乱数を使用するだけで、ローカルのZeroconfアドレスを生成します。その場合、生成されたアドレスを使用します。 169.254.169.254にあるものが喜んで答えるのであれば、どちらの方法でも大きな違いはありません。