【小ネタ】パブリックIPアドレスをEC2内部から確認する方法

記事タイトルとURLをコピーする

こんにちは! サーバーワークスの松井です。

今回は、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アドレスを確認できるので一度使ってみてください。