0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ipinfo.io/myと「確認くん」の違い

0
Posted at

自分のグローバルIPアドレスを確認するとき、よく使われるサービスに以下があります。

  • ipinfo.io/my
  • 「確認くん」

どちらもアクセスすると自分のIPアドレスが表示されるため、一見すると同じサービスに見えます。

しかし、実際には確認している情報の方向性がかなり違います。

結論から言うと、

IPinfo = IPアドレスについて詳しく調べる

確認くん = Webサーバーから自分のHTTP接続がどう見えているか調べる

という違いがあります。
image.png
image.png

ipinfo.io/myとは

ipinfo.io/my にアクセスすると、現在はIPinfoの「What is my IP」ページへ移動し、自分のグローバルIPアドレスと、そのIPアドレスに紐づくさまざまな情報を確認できます。

IPinfoでは例えば以下の情報が表示されます。

  • グローバルIPアドレス
  • 国
  • 都市
  • 郵便番号
  • 緯度・経度
  • タイムゾーン
  • ASN
  • IPアドレスを保有している会社
  • ISP / HostingなどのASN種別
  • IPレンジ
  • VPN判定
  • Proxy判定
  • Tor判定
  • Hosting判定
  • Residential Proxy判定
  • Abuse Contact

つまり、単純にIPアドレスを表示しているだけではなく、

「このIPアドレスは誰が所有しているのか?」

「どこのネットワークなのか?」

「VPNやクラウドサーバーのIPではないか?」

といったIP Intelligenceまで調べられるサービスです。

例えばCloudflare WARPやVPNを有効にしたあと、

ASN
Company
Country
Privacy

などを見ることで、通信の出口がどのネットワークに変わったのかを確認できます。

IPinfoの位置情報はGPSではない

注意したいのがIPinfoに表示される位置情報です。

IPinfoでは、

City
Region
Country
Coordinates
Postal

などが表示されます。

しかし、これはスマートフォンのGPSから取得した現在地ではありません。

IPアドレスとネットワーク情報から推定された位置情報です。

そのため、

実際の現在地
↓
Ho Chi Minh City

IPinfo
↓
別の都市

のようになることもあります。

IPinfo自身も、IP GeolocationはGPSとは異なり、IPアドレスをネットワーク情報からおおまかな地域へマッピングするものと説明しています。

したがって、

IPinfoに表示された緯度・経度 = 自分の正確な現在地

ではありません。

「確認くん」とは

一方、「確認くん」は昔から存在する日本の接続情報確認サービスです。

確認くんではIPアドレスだけではなく、アクセス時にWebサーバー側から確認できるさまざまな情報を表示します。

例えば、

あなたのIPアドレス

ブラウザの種類
モバイル判定
プラットフォーム
使用言語
OSの解像度
ブラウザの表示サイズ
端末ピクセル比
色深度
画面の向き

GET / POST
MIMEタイプ
User-Agent

プロキシ経由の有無
X-Real-IP
プロキシ経由の元IP
転送プロトコル
転送ホスト
転送元IP

などです。

ここがIPinfoとの大きな違いです。

確認くんは、

「このIPがどんなIPなのか」

だけではなく、

「このブラウザから送られてきたHTTPリクエストがWebサーバーからどう見えているか」

を確認することに重点があります。

具体的な違い

ざっくり比較すると以下です。

項目 IPinfo 確認くん
グローバルIP ○ ○
国・都市 ○ 基本目的ではない
ASN ○ △
ISP / Hosting判定 ○ △
IP所有企業 ○ ×
VPN判定 ○ ×
Proxy判定 ○ △
Tor判定 ○ ×
Residential Proxy判定 ○ ×
IPレンジ ○ ×
User-Agent ○/限定的 ○
Accept-Language △ ○
MIME / Accept × ○
Referer × ○
ブラウザ情報 △ ○
画面サイズ × ○
X-Real-IPなど × ○
HTTPリクエスト確認 △ ◎
IP Intelligence ◎ △

つまり、

IPinfoはIPデータベースを見るツール

で、

確認くんはHTTP接続のデバッグツール

に近いです。

VPNを確認するならどちら?

例えばVPNに接続して、

本当にVPN経由になっているのか?

を確認したい場合。

まずIPinfoを見るのがおすすめです。

VPN接続前:

IP: 1.2.3.4
ASN: 自宅のISP
Country: Japan

VPN接続後:

IP: 5.6.7.8
ASN: VPN事業者またはデータセンター
Country: Singapore
Privacy: VPN

のように変化していれば、少なくともWebサイトへの通信の出口IPが変わったことが分かります。

IPinfoにはVPN、Proxy、Tor、Relay、Hosting、Residential Proxyなどを判定するPrivacy Detection系のデータもあります。

Cloudflare WARPを確認する場合

Cloudflare WARPでも考え方は同じです。

WARP OFF:

PC
 │
 └── ISP
      │
      └── Webサイト

WARP ON:

PC
 │
 └── Cloudflare WARP
      │
      └── Cloudflare側ネットワーク
           │
           └── Webサイト

Webサイト側から見える送信元IPが変わります。

そのため、

ipinfo.io/my

で、

IP
ASN
Company
Country

を見ると違いを確認しやすいです。

単純な「出口IP確認」であれば、確認くんよりIPinfoのほうが分かりやすいと思います。

「確認くん」のプロキシ判定には注意

確認くんには、

プロキシ経由の有無
プロキシ経由の元IP
X-Real-IP
転送元IP

などがあります。

ここを見ると、

VPNを使っているのに「プロキシ経由の有無」がnoneになっている

ということがあります。

これは異常とは限りません。

例えばHTTPリバースプロキシでは、

X-Forwarded-For: 203.0.113.10

や、

X-Real-IP: 203.0.113.10

のようなヘッダーを使って元IPをバックエンドへ渡すことがあります。

しかし、一般的なVPNは、

クライアント
   ↓
暗号化トンネル
   ↓
VPNサーバー
   ↓
Webサイト

というネットワークレベルで通信を中継します。

Webサイトには通常、

VPNサーバーのIP

から直接アクセスしているように見えます。

VPNがわざわざ、

X-Forwarded-For: 本当のIP

を付ける必要はありません。

むしろそんなことをしたらVPNとして困ります。

したがって、

確認くん

プロキシ経由の有無
(none)

だから、

VPNを通っていない

とは判断できません。

ここはかなり重要です。

IPinfoのProxy判定も意味が違う

逆にIPinfoの、

VPN
Proxy
Tor
Hosting
Residential Proxy

という判定は、HTTPヘッダーにX-Forwarded-Forがあるか調べているだけではありません。

IPアドレスそのものについて、

このIPはVPNサービスで利用されているか
このIPはProxyとして利用されているか
このIPはTor Exit Nodeか
このIPはHosting Providerか

といった情報をデータベース側から判定しています。

つまり同じ「Proxy」という言葉でも、

確認くん

HTTP接続・HTTPヘッダーから見たプロキシ情報

と、

IPinfo

接続元IPアドレスそのものに対するProxy/VPN属性

では意味が違います。

ここを理解しておくと混乱しにくくなります。

curlならIPinfoが便利

IPinfoはブラウザだけでなくAPIとして利用できるのも便利です。

例えば、

curl https://ipinfo.io/json

とするとJSON形式で現在のIP情報を取得できます。

IPinfo公式によると、アカウントなしで利用できるPublic APIも提供されており、現在は同一IPで共有される1日1,000リクエストの制限があります。無料のIPinfo Liteでは別の利用条件が用意されています。

そのためGitHub ActionsやDockerなどで、

echo "=== Current public IP ==="
curl -s https://ipinfo.io/json

としておけば、

GitHub Actions → どのIPから外へ出ている?

Docker → ホストとコンテナで出口IPは同じ?

VPN → VPN接続後にIPは変化した?

Cloudflare WARP → WARP経由になった?

といった確認にも使えます。

IPアドレスだけ欲しい場合

詳細情報はいらず、

とにかくグローバルIPだけ取得したい

のであれば、IPinfoのようなIP確認サービスをCLIから利用する方法が便利です。

一方、

User-Agentはどう送信されている?

Accept-Languageは?

Refererは?

Proxy関連ヘッダーは?

ブラウザ情報は?

Webサーバーから自分はどう見えている?

まで調べたいなら確認くんのほうが向いています。

ちなみに両方でIPが違うことはある?

基本的には、同じブラウザ・同じタイミング・同じネットワーク経路なら、両方で同じ出口IPが表示されることが期待されます。

ただし、

  • IPv4 / IPv6
  • VPN
  • Split Tunnel
  • Proxy
  • Cloudflare WARP
  • ブラウザ拡張
  • DNSとは別の経路制御
  • サービス側のIPv4 / IPv6対応状況

などによって結果が異なる可能性があります。

特にIPv4とIPv6の両方が利用可能な環境では、

サービスA → IPv4

サービスB → IPv6

となる可能性があります。

IPinfoもIPv4とIPv6を扱っており、IPv6向けのエンドポイントについて公式に案内しています。

どちらを使えばいい?

用途別にすると簡単です。

自分のグローバルIPを知りたい

→ IPinfo

VPN接続後のIPを確認したい

→ IPinfo

WARP接続後のIPを確認したい

→ IPinfo

IPのASNを知りたい

→ IPinfo

IPがHosting/VPN/Proxyなのか調べたい

→ IPinfo

User-Agentを確認したい

→ 確認くん

Accept-LanguageなどHTTP情報を確認したい

→ 確認くん

Proxy関連ヘッダーを確認したい

→ 確認くん

Webサーバーから自分がどう見えているか調べたい

→ 確認くん

まとめ

ipinfo.io/myと確認くんは、どちらも自分のIPアドレスを表示できます。

しかし目的は少し違います。

IPinfo
    ↓
「このIPアドレスは何者なのか?」
    ↓
ASN
ISP
Company
Location
VPN
Proxy
Tor
Hosting

一方、

確認くん
    ↓
「Webサーバーから自分のアクセスはどう見えているのか?」
    ↓
IP
User-Agent
Language
Referer
HTTP headers
Proxy関連情報
ブラウザ情報

という違いです。

個人的には、

VPN / WARP / IP確認
→ IPinfo

HTTP通信・ブラウザ・Proxyヘッダーのデバッグ
→ 確認くん

という使い分けが一番分かりやすいと思います。

そしてVPNを確認するときに特に注意したいのが、

確認くんで「プロキシ経由の有無 = none」と表示されても、VPNを経由していないという意味ではない

という点です。

VPNやWARPが正しく動いているか確認するなら、まず接続前後のグローバルIPとASNを比較するのが分かりやすい確認方法です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?