こんにちは! サーバーワークスの松井です。
今回は、EC2の内部からパブリックIPアドレスを見る方法を紹介します。
パブリックIPアドレスがついているEC2(Linux)内部からifconfigを実行した際にEC2のネットワークインターフェースに紐付いているIPアドレスはローカルIPアドレスしか見れないと思います。
$ ifconfig eth0 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001 inet 10.123.15.11 netmask 255.255.255.0 broadcast 10.123.15.255
この理由に関しては、設定に問題があるわけではなく、以下ドキュメントに記載がある通り、AWSから割り振られるパブリックIPアドレス及びElastic IP Address に関しては、ローカルIPアドレスにマッピングされるようになっているからです。
そのため、パブリックIPアドレスがついているEC2(Linux)内部からパブリックIPアドレスを確認したい場合はインスタンスメタデータを参照して確認します。
VPC の IP アドレス指定 - Amazon Virtual Private Cloud
パブリック IPv4 アドレスは、コンソールのネットワークインターフェイスのプロパティとして表示されますが、NAT によってプライマリプライベート IPv4 アドレスにマッピングされます。したがって、インスタンスのネットワークインターフェイスのプロパティを調べる場合、たとえば Windows インスタンスに対して ipconfig を使用しても、Linux インスタンスに対して ifconfig を使用しても、パブリック IP アドレスは表示されません。インスタンス内からインスタンスのパブリック IP アドレスを決定するには、インスタンスのメタデータを使用できます。詳細については、「インスタンスメタデータとユーザーデータ」を参照してください。
インスタンスメタデータでIPv4アドレスを確認する方法は以下です。
$ curl http://169.254.169.254/latest/meta-data/public-ipv4 52.194.238.251
もしくは
$ ec2-metadata ~(中略)~ public-ipv4: 52.194.238.251 ~(中略)~
これでインスタンスのパブリックIPアドレスを確認することができます。
ローカルIPアドレスで基本サーバー運用されている方は、マネージメントコンソール上で確認しなくてもパブリックIPアドレスを確認できるので一度使ってみてください。