自分がNAT配下にいる場合に、インターネットから見たグローバルIP(出口で自分が使っているGlobal IP)や、地理情報などを調べる方法について。いくつもツールとかサイトがあるけど、経験上、その中でもifconfig.coが一番使いやすいと思っている。

例えば、コマンドラインから、curl(もしくはHTTPリクエストが投げられるツール)があれば、すぐに調べられる。 特に、デバッグなどで、最低限のコマンドしか入っていないゲスト・リモート環境であっても、たいてはcurlが入っていることが多いので、そういった場合に重宝する。あと、ブラウザベースでアクセスしても、グラフィカルに同様の情報を参照できるのもありがたい。

あと、今日日ip addrにまとめられてしまって、使うことは無くなったifconfigと叩けるのもなつかし良い!

コマンドラインから自分のグローバルIPを調べる

シェルを開いて、

$ curl ifconfig.co

34.95.141.133

ちなみに、IPv6対応なので、IPv6環境だとそのアドレスをちゃんと返ってくる。

### IPv6環境下
$ curl ifconfig.co

240d:1a:3d4:6412:893e:d8e9:2134:0ffc

IPv6環境でもIPv4でのグローバルIPを見たい場合は、curlコマンドのIPv4オプションを使えば良い。

### IPv6環境下
$ curl -4 ifconfig.co

34.95.141.133

IP以外の情報も返してくれる

パス/jsonを加えると地理情報とかも一式返してくれる。

$ curl ifconfig.co/json 

{
  "ip": "34.95.141.133",
  "ip_decimal": 576687493,
  "country": "Brazil",
  "country_iso": "BR",
  "country_eu": false,
  "region_name": "Sao Paulo",
  "region_code": "SP",
  "zip_code": "01323",
  "city": "São Paulo",
  "latitude": -23.5475,
  "longitude": -46.6361,
  "time_zone": "America/Sao_Paulo",
  "asn": "AS15169",
  "asn_org": "GOOGLE",
  "hostname": "133.141.95.34.bc.googleusercontent.com",
  "user_agent": {
    "product": "curl",
    "version": "7.64.0",
    "raw_value": "curl/7.64.0"
  }
}

ASのネットワーク名や緯度軽度なども取得できる。 全部必要なければ、それぞれのパラメータだけをパスにすれば良い。

$ curl ifconfig.co/city
São Paulo

ブラウザアクセスすると見やすく返してくれる

ifconfig.coはブラウザからアクセスすると、見やすく返してくれる。 (正確には、リクエストヘッダのuser-agent: *curl*にマッチする場合にのみ、短いテキストで返してくる)