Posted at

RubyでグローバルIPを取得する方法(標準ライブラリでできる!)

More than 1 year has passed since last update.


やりたいこと


  • Rubyで、自分のマシンのグローバルIPアドレスを取得する


やり方


  • 必要な標準ライブラリはresolv

  • ip_addr_strにグローバルIPが手に入る(型は文字列型)

require 'resolv'

ip_addr_str = Resolv::DNS.new(:nameserver=>'ns1.google.com').getresources("o-o.myaddr.l.google.com", Resolv::DNS::Resource::IN::TXT)[0].strings[0]
# => "62.513.271.281"


動機と経緯

グローバルIPを知りたくなることは、たまにあり、今までcurlでグローバルIPを教えてくれるサイトを使って、手に入れていました。

だけど、これだとサーバーが落ちていたり、サーバーがサービスを終了したりして、困っていました。digコマンドでGoogleのDNS(?ちゃんと理解していません)でグローバルIPが手に入ることを知り、いままでよりGoogleなら安定的に入手できそうで、いい感じだったので、それをRubyでできないか探して、見つけた感じです。


参考になったところ一覧