IPアドレスのバージョン判定
このIPアドレスバージョン判定ツールは、入力文字列が完全なIPv4アドレス、完全なIPv6アドレス、またはどちらでもないかを検証します。有効な入力には、判定したバージョンと、比較・保存・確認に適した安定した正規表現を返します。無効な文字列には、IPv4オクテットの範囲超過、不正な先頭ゼロ、IPv6グループの過多、二重コロンによる圧縮の誤りなど、具体的な拒否理由を示します。解析は決定的で、ネットワークへ接続せず、不完全な入力や装飾付きの入力を推測で補わずに厳密な規則を適用します。
無料で実行
IPv4とIPv6の構文を正確に判定します
IPv4とIPv6ではアドレスの文字列表現が大きく異なるため、ピリオドやコロンの有無を見るだけでは正しく検証できません。このツールは、両バージョンの構造規則に従って文字列全体を解析します。IPv4は、ピリオドで区切られた4個の10進オクテットで構成する必要があります。各オクテットは0から255までで、数字だけを含み、先頭をゼロにすることはできません。IPv6はコロンで区切られた8個の16進グループを使用し、連続するゼログループの1か所を二重コロンで短縮できます。グループ総数が正しければ、末尾に10進表記のIPv4アドレスを埋め込む形式にも対応します。値全体が検証に合格した場合に限り、結果をIPv4またはIPv6と判定します。アドレスに似ているだけの値はどちらでもないと判定し、違反した規則を示す理由を返します。そのため、緩すぎる推測によって不正なデータを受け入れることなく、フォーム検証、設定確認、インポートデータの整備、自動テストにご利用いただけます。
比較と保存には正規化された出力をご利用ください
有効なIPアドレスには、特にIPv6の場合、複数の文字列表記が存在します。16進文字の大文字と小文字は同じ値を表し、グループ内の先頭ゼロはアドレスを変えず、連続するゼログループは圧縮できます。正規化されたIPv6出力では、16進文字を小文字にし、不要な先頭ゼロを削除して、2個以上のゼログループからなる最長の連続部分を圧縮します。同じ長さの部分が複数ある場合は、最初の部分を圧縮します。埋め込まれた10進IPv4部分は対応する16進グループへ変換するため、応答は常に一貫したIPv6形式になります。IPv4は通常の4個の10進オクテットで返します。この規則により、同じアドレスの異なる表記を別の接続先と誤認せず、正規化文字列を比較できます。ログの整形、設定値の重複除去、テスト用スナップショットの作成、人による確認用の表示にも役立ちます。正規化はDNS、位置情報取得、サブネット解析、到達可能性テストを行いません。数値としてのアドレスは変更せず、表現だけを整えます。
拒否理由と厳密な入力範囲をご確認ください
アドレス文字列が無効な場合、応答はどちらのバージョンでもないと判定し、拒否理由を説明します。IPv4でよくある誤りは、オクテットの不足、255を超える値、10進数字以外の文字、古いソフトウェアで別の意味に解釈される可能性がある先頭ゼロです。IPv6では、5桁以上の16進グループ、展開後のグループ数の誤り、複数の二重コロン、グループを1つも置換しない圧縮などが該当します。URL構文の角括弧、CIDRプレフィックス長、ポート番号、ゾーン識別子は入力仕様に含まれません。これらを取り除き、アドレスだけを送信してください。この明確な境界により、歴史的な表記の受け入れ方が異なるブラウザー、サーバー、プログラミング言語間でも、予測可能な検証結果が得られます。アドレスがない場合や文字列型でない場合はリクエスト仕様エラーとなり、構文が不正な文字列は拒否理由付きの通常の判定結果となります。外部状態やネットワークを使用しないため、同じ入力には常に同じ結果を返します。APIの料金は1件$0.002で、ブラウザー版はローカルで実行できます。
活用例
設定入力を事前に検証
不正なホストアドレスがファイアウォール規則、サービス設定、デプロイ用テンプレートへ入る前に拒否します。
アドレス台帳を正規化
同じIPv6アドレスの異なる表記を正規形へ変換してから、レコードの比較や重複除去を行います。
フォームの入力ミスを説明
完全なIPv4またはIPv6アドレスではない値が入力されたとき、役立つ構文上の理由を表示します。
よくある質問
判定時に対象アドレスへ接続しますか?
いいえ。DNS、ネットワーク探査、位置情報取得、評価情報の照会を行わず、文字列をローカルで検証して整形します。
CIDRプレフィックスを入力できますか?
いいえ。アドレスだけを送信してください。/24や/64などの接尾辞はネットワークプレフィックス表記であり、このツールの入力対象外です。
先頭ゼロがあるIPv4オクテットを拒否するのはなぜですか?
先頭ゼロは、歴史的に10進数と8進数の解釈の違いを生じさせてきました。厳密な10進表記により不一致を防ぎます。
IPv6アドレスはどのように正規化されますか?
16進文字を小文字にし、各グループの先頭ゼロを除去して、圧縮可能な最長のゼロ列を二重コロンで短縮します。
角括弧とポートを含むIPv6 URLを入力できますか?
いいえ。角括弧とポートはURLまたは接続先の構文であり、IPアドレス自体には含まれないため、先に取り除いてください。
APIリクエストの料金はいくらですか?
APIリクエストは1件$0.002です。同じ決定的なブラウザーツールをページ上でローカル実行することもできます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/dev/ip-version-detect \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"address":"2001:0db8:0000:0000:0000:ff00:0042:8329"}'const res = await fetch("https://api.kit.forhosting.com/dev/ip-version-detect", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"address": "2001:0db8:0000:0000:0000:ff00:0042:8329"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/ip-version-detect",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"address": "2001:0db8:0000:0000:0000:ff00:0042:8329"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/ip-version-detect", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"address":"2001:0db8:0000:0000:0000:ff00:0042:8329"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"address":"2001:0db8:0000:0000:0000:ff00:0042:8329"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/ip-version-detect", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"address": "2001:0db8:0000:0000:0000:ff00:0042:8329"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.ip_version_detect",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |