何の話?
- なんか色々やってるとさ、自身のグローバルIPアドレスが知りたくなるときってたまにあるよね
- いろんなやり方があるんだけど、なんとなく記事としてまとめておく
- たぶん類似記事ってたくさんあると思うけど... ごめんね
主流: HTTP経由
- 実はAWSがそういうのを持ってる, 出自がはっきりしてるので比較的安心
$ curl https://checkip.amazonaws.com
- 有名なところ
$ curl https://api.ipify.org
- こちらも有名, Gigazineで記事書かれてたこともある
$ curl https://icanhazip.com
- デフォでjsonで返ってくる
- BGPのAS番号とかも含まれていて面白い
$ curl https://ipinfo.io
- ここも有名でjsonで返してくれる
$ curl https://httpbin.org/ip
- Cloudflareはホスティングするとデフォで
/cdn-cgi/traceというパスのエンドポイントが生える- いろんな情報が入ってるんだけどここからIPアドレスを知ることも可能
- よって例えば自分のAPIとかWebサイトをCloudflareで持ってるなら、そこ + /cdn-cgi/trace によってIPアドレスを知る...ということもできる
- 自社ドメインでIPアドレス確認が簡単にできるっていう感じ
$ curl https://cloudflare.com/cdn-cgi/trace
変化球: DNS経由
- DNSで取る
$ nslookup myip.opendns.com resolver1.opendns.com
$ dig +short myip.opendns.com @resolver1.opendns.com
王道: 画面
Webサイトとしてこういう機能を持ってるところは大量にあるので割愛。まぁ日本人向けでいうとCMANさんがいちばん有名だろう。
備考
ちなみにSASEやProxyなどが噛んでいて本当のグローバルIPアドレスが一見すると隠蔽されていても、例えばAWSやhttpbin.orgの場合には本当のグローバルIPも教えてくれる。どうも、ヘッダーの X-Forwarded-For をちゃんと見て表示してくれているようだ。
同様にDNSのパターンでも本当のグローバルIPアドレスが表示される。単純な話でDNS通信はプロキシされずそのまま出ていくからだと推測される。もちろん DoT (DNS over TLS) / DoH (DNS over HTTPS) の場合は話は別だが世の中的にはまだまだ少ないと思う。