私のIPアドレス

- 位置情報を取得中... 訪問者の実際のIPアドレス情報を見るには ここをクリック

ターミナルとシステム環境の使い方

ターミナルの使い方だけを説明する:各「よく使うバリエーション」ごとにコマンド + それが解決する問題(プロトコルスタック、出力形式、タイムアウト、リトライ、パスの意味)を説明する。

macOS / Linux / Raspberry Pi / BSD

ターミナルで最もよくある要件は:出力がクリーンであること(1行でコピー/書き込み/比較できる)と、スクリプトが固まらないこと。 そのため、ここでの推奨書式はデフォルトで:サイレント(出力を汚さない)+ HTTPS(誤ったプロトコルを回避)+ 必要に応じてタイムアウト(ハング防止)を含む。

基本の使い方(最推奨)

curl -4  my.ipin.io
コマンド プロンプト
C:\Users\admin>curl -4 my.ipin.io
171.83.40.149
  • -s:進捗バー/メッセージを消して、出力をより純粋にする(スクリプトにノイズを混ぜない)。
  • https://:完全なスキームの明示を強く推奨。環境によって http が既定になり、リダイレクト/遮断/ポートポリシー問題を招くのを避ける。
  • ルートパス /:IPv4 を厳密に出力。IPv4 が取れない場合は失敗する(IPv6 を IPv4 と誤認して使うのを防ぐ)。

よく使うバリエーション(実運用で最頻出のセット)

# A1) IPv6 だけ(IPv6 の検証/切り分け用)

   curl -s https://my.ipin.io/v6

   # A2) 位置の概要(ターミナルで読みやすいテキスト出力)
   curl -s https://my.ipin.io/info

   # A3) ターミナルで JSON を強制(UA を curl 以外に変更)
   curl -s -A "Mozilla/5.0" https://my.ipin.io/info

   # A4) IPv4 強制 / IPv6 強制(実際にどのプロトコルスタックで接続しているかの切り分け)
   curl -s -4 https://my.ipin.io
   curl -s -6 https://my.ipin.io/v6

   # A5) タイムアウト追加(スクリプト必須:ネットワーク揺らぎで固まるのを防ぐ)
   curl -s --connect-timeout 3 --max-time 8 https://my.ipin.io

   # A6) リトライ追加(弱い回線/一時的な揺らぎ:1〜2回推奨)
   curl -s --retry 2 --connect-timeout 3 --max-time 8 https://my.ipin.io/info

バリエーションの説明(本当に押さえるべきポイント)

  • /v6:エンドポイントとして IPv6 のみ返す。「IPv6 が使えるかを明確に検証」する用途。
  • /info:エンドポイントとして IP + 位置情報フィールドを返す。ターミナルでは可読性寄りで、「出口の目視確認」に向く。
  • -A "Mozilla/5.0":出力形式の制御。デフォルトで curl の UA には curl が含まれる → サービスはテキストを返す;UA を変える → サービスは JSON を返す。
  • -4/-6:接続レイヤーでプロトコルスタックを強制(クライアントが v4/v6 のみで接続する)。「なぜ常に v6 になるのか」の切り分けに使う。
  • --connect-timeout:「接続確立」フェーズのみを制御。ハンドシェイク/接続が遅いとここで中断する。
  • --max-time:リクエスト全体の上限時間。自動化で最重要(ハング防止)。
  • --retry:成功率を上げるが、少数(1〜2回)だけ推奨。多すぎるとタスクが遅くなり障害を増幅する。

Android(Termux)

Termux のよくある問題:モバイル回線は揺らぎが大きく、経路が複雑で、プロトコルスタック選択も不安定。 そのためデフォルト推奨は:スタック固定 + タイムアウト + 必要ならリトライ

基本の使い方(推奨)

curl -s -4 --connect-timeout 5 --max-time 10 https://my.ipin.io

よく使うバリエーション

# B1) 位置の概要(出口の場所を素早く確認)
    curl -s https://my.ipin.io/info

    # B2) IPv6 検証(IPv6 を測りたいときだけ)
    curl -s -6 https://my.ipin.io/v6

    # B3) 弱い回線:少数リトライ
    curl -s --retry 2 --connect-timeout 5 --max-time 10 https://my.ipin.io

バリエーションの説明

  • -4:IPv4 が目的なら固定し、環境が IPv6 優先で結果がブレるのを避ける。
  • /info:モバイル回線は出口が切り替わりやすい。期待どおりの場所かを確認するのに直感的。
  • リトライ戦略:モバイルは一時的タイムアウトが起きやすい。少数リトライで成功率が大きく上がる。

Windows(CMD / PowerShell)

Windows では用途を分けるのがおすすめ: CMD/バッチは「1行テキストを取る」方向、PowerShellは「JSON を取ってそのままフィールド解析」方向。

基本の使い方(テキストで 1 行 IP)

curl.exe -s https://my.ipin.io

よく使うバリエーション

# C1) 位置の概要(ターミナルで読める)
    curl.exe -s https://my.ipin.io/info

    # C2) PowerShell で JSON を取得(スクリプトでのフィールド解析向き)
    Invoke-RestMethod -Uri "https://my.ipin.io/info"

    # C3) IPv6 検証
    curl.exe -s https://my.ipin.io/v6

    # C4) 接続の切り分け(DNS、ハンドシェイク、タイムアウト理由を見る。出力は長い)
    curl.exe -v https://my.ipin.io/info

バリエーションの説明

  • Invoke-RestMethod:JSON 向き。手動での解析手間を省ける。
  • -v:切り分け専用。大量のデバッグ情報が出るため、スクリプトで常用しない。
  • よくある原因:システムプロキシ、企業ゲートウェイ、DNS の書き換え、hosts ルールにより「同じコマンドでも挙動が違う」ことがある。

iOS(iSH / 軽量ターミナル)

軽量ターミナルは wget しかないことが多い。注意:wget のデフォルト UA は curl を含まないことが多く、その場合 JSON が返りやすい。 「1行テキスト」が欲しいなら、UA を明示してターミナル向けテキスト出力を発動させる必要がある。

基本の使い方

wget -qO- https://my.ipin.io

よく使うバリエーション

# D1) 位置の概要
    wget -qO- https://my.ipin.io/info

    # D2) 純テキストを強制(1行 IP)
    wget -qO- -U "curl/8" https://my.ipin.io

    # D3) JSON を強制(安定した統合)
    wget -qO- -U "Mozilla/5.0" https://my.ipin.io/info

バリエーションの説明

  • -qO-:静かにして stdout に出力。スクリプト処理に便利。
  • -U:出力形式制御の中核スイッチ(UA に curl を含む → テキスト;UA が curl 以外 → JSON)。

OpenWRT / 組み込み機器

組み込み機器の最重要目標は:固まらないこと。なので必ずタイムアウトを設定する。 「グローバル IP 変更検知」でも誤判定を避ける:リクエスト失敗=IP 変更ではない。

基本の使い方(タイムアウト付き)

wget -qO- --timeout=10 https://my.ipin.io

よく使うバリエーション

# E1) 位置の概要(出口セルフチェック)
    wget -qO- --timeout=10 https://my.ipin.io/info

    # E2) 純テキストを強制(1行 IP)
    wget -qO- --timeout=10 -U "curl/8" https://my.ipin.io

バリエーションの説明

  • --timeout:組み込みではデフォルトで付けることを強く推奨。定期タスクが固まるのを防ぐ。
  • 出力モードの安定化:wget はデフォルトで JSON を返す場合がある。スクリプトが 1 行 IP だけ欲しいなら、UA でテキスト出力を発動させる方が安定。

Docker / CI / 自動化タスク

自動化環境は不確実性が高い:DNS の揺らぎ、短時間のタイムアウト、出口ポリシー変更が起きやすい。 推奨デフォルト:タイムアウト + 少数リトライ + 出力形式固定(runner が変わっても解析が壊れないように)。

基本の使い方(タイムアウト付き)

curl -s --connect-timeout 3 --max-time 8 https://my.ipin.io

よく使うバリエーション(CI で最実用)

# F1) 位置情報を安定取得(リトライ付き)
    curl -s --retry 2 --connect-timeout 3 --max-time 8 https://my.ipin.io/info

    # F2) CI で JSON を安定化:UA を curl 以外に固定
    curl -s -A "Mozilla/5.0" --connect-timeout 3 --max-time 8 https://my.ipin.io/info

    # F3) 切り分け:プロトコルスタック強制
    curl -s -4 https://my.ipin.io
    curl -s -6 https://my.ipin.io/v6

バリエーションの説明

  • UA の固定:CI ではイメージ/ツールごとに UA が違うことがある。固定しないと出力形式がブレる。
  • 少数リトライ:成功率は上がるが、失敗は素早く露出させることも重要(原因特定のため)。

よくある質問(FAQ)

Q1:curl -s https://my.ipin.io を使うと、なぜ時々失敗したりエラーが返ったりするのですか?

ルートパスは「厳密 IPv4」:現在の経路で IPv4 を取得できない場合、明確に失敗する(IPv6 を返して成功したように見せない)。 これは通常:IPv6-only ネットワーク、特定のプロキシ/ゲートウェイ環境、またはクライアントが IPv6 に強制されており利用可能な IPv4 がない場合に発生する。

切り分け方法:curl -s -4 で IPv4 を強制;または /info で現在の出口 IP を確認して次の手を決める。

Q2:curl で /info を叩くと、なぜ JSON ではないのですか?

ターミナルツールはデフォルトで「ターミナル出力モード」になっており、/info はそのモードでは読みやすいテキスト枠を出力する。 JSON(jq/プログラム解析向け)が欲しいなら、UA を curl 以外に変えればよい。

curl -s -A "Mozilla/5.0" https://my.ipin.io/info

Q3:同じコマンドなのに、別のマシンだと出力形式が違うのはなぜですか?

出力形式はリクエストの User-Agent に依存する。ツール(curl / wget / あるディストリの標準ツール)によって既定 UA が異なる場合があり、 それによってテキストまたは JSON の差が出る。

解決策:UA を固定する。テキストが欲しければ UA に curl を含める;JSON が欲しければ UA に curl を含めない。 自動化/CI では UA 固定が「安定した解析」の鍵になる。

Q4:IPv4 だけ欲しいのに、自分が「IPv6 を通っている」気がするのはなぜですか?

ここは 2 つを区別する必要がある: 接続時に使うプロトコルスタック(クライアントが v4/v6 のどちらで接続するか)と、 エンドポイントが返す IP の種類(パス //v6 で決まる)。

切り分けのおすすめ:-4/-6 で接続プロトコルを強制し、ネットワーク環境が実際にどちらを好むか確認する。 IPv4 だけ欲しいならルートパスを使い、必要なら -4 を強制する。

Q5:スクリプトでは、誤判定しにくく・固まりにくくするにはどう書けばいいですか?

推奨セット:サイレント(ノイズ回避)、タイムアウト(ハング回避)、少数リトライ(揺らぎ耐性)、 そして 失敗時に古い値を上書きしない(失敗を変化と誤認しない)。

curl -s --retry 2 --connect-timeout 3 --max-time 8 https://my.ipin.io

Q6:curl と wget、どちらを優先すべきですか?

curl が使えるなら curl:パラメータが豊富で切り分けも強い。 ただし軽量/組み込み環境で wget しかないのはよくある。wget でも問題なく、重要なのは: タイムアウト設定、stdout 出力、必要なら UA を固定して出力形式をロックすること