MACアドレス種別判定
MACアドレスには、機器の識別子以上の情報が含まれています。先頭オクテットの下位2ビットから、個別インターフェース向けかグループ向けか、また割り当てがグローバル管理かローカル管理かを判断できます。この解析ツールは48ビットのアドレスを検証して表記を正規化し、先頭オクテットを16進数、10進数、2進数で表示したうえで、復号したビット値と2種類の判定結果を返します。ネットワーク障害の調査、設定確認、文書化、アドレスフラグの学習にご利用いただけます。
無料で実行
先頭オクテットの2つのフラグを確認します
一般的な48ビットMACアドレスは6個のオクテットで構成されますが、種別の判定に使うのは先頭オクテットの2ビットだけです。最下位ビットはIndividual/Groupビットで、通常I/Gと略します。値が0なら個別アドレスでありユニキャスト、1ならグループアドレスでありマルチキャストです。その次がUniversal/Localビットで、一般にU/Lと呼びます。0はグローバルに管理されたアドレス、1はローカルに管理されたアドレスを示します。本ツールは先頭オクテットを解析し、8ビットすべての2進表現と下位2ビットを個別に表示するため、判定根拠をご自身で確認できます。この場合、ビット位置は右端から数えます。たとえば先頭オクテットの末尾が2進数で10なら、右端が0なのでユニキャストですが、次のビットが1なのでローカル管理です。残りの6ビットは、この2種類の判定には影響しません。
有効な48ビットMACアドレスを入力します
入力値は正確に6個のオクテットを表し、各オクテットは2桁の16進数でなければなりません。02:42:AC:11:00:02のようなコロン区切り、ハイフン区切り、0242.AC11.0002のようなCisco形式、区切りなしの12桁という一般的な表記に対応しています。英字の大文字と小文字は区別しません。正常な結果は常に大文字のコロン区切りへ正規化されるため、異なるログやツールから得た値を比較しやすくなります。検証は意図的に厳密です。区切り文字の混在、桁不足、余分なオクテット、アドレス内部の空白、16進数以外の文字は推測せずエラーにします。本ツールは標準の48ビットMACアドレス専用で、EUI-64識別子には対応しません。曖昧な値を自動修正すると、意図したものとは別のアドレスを判定する危険があるためです。エラー時は表記または長さを修正して再送信してください。ネットワークやベンダーデータベースへの問い合わせは行いません。
判定結果の意味を適切な範囲で解釈します
結果が示すのはアドレスに符号化されたフラグであり、機器の現在の動作、所有者、信頼性ではありません。グローバル管理のユニキャストアドレスは通常、世界的に管理された割り当てに基づく識別子ですが、本ツールはOUIによるベンダー検索を行わず、どの機器が使用中かを証明することもできません。ローカル管理アドレスは、管理者が意図的に設定したもの、仮想マシンやコンテナ基盤が生成したもの、プライバシー機能がクライアントアドレスをランダム化したものなどが考えられます。同様に、マルチキャスト判定はI/Gビットから直接得られるもので、ネットワーク上にマルチキャスト通信が存在する証拠ではありません。全ビットが1のブロードキャストアドレスもグループビットが1なので、ビット分類上はマルチキャストと表示されます。パケットキャプチャ、DHCPログ、スイッチテーブル、アクセス制御リスト、生成済み設定を確認する際は、正規化値と明示されたフラグを根拠としてお使いください。API呼び出しは$0.002で、外部サービスは不要です。
活用例
ランダム化されたクライアントアドレスの確認
Wi-FiやDHCPのログで見つかったアドレスに、プライバシー機能や仮想化で使われるローカルビットがあるか確認できます。
マルチキャスト設定の点検
アドレスをマルチキャストフィルター、キャプチャ規則、ネットワーク試験へ追加する前にI/Gビットを確認できます。
MACアドレス構造の教材
先頭オクテットの2進表示と2つのフラグを並べ、ビット位置と判定結果の関係を説明できます。
よくある質問
MACアドレスの種別はどの部分で決まりますか?
先頭オクテットの下位2ビットです。ビット0が個別・ユニキャストまたはグループ・マルチキャストを、ビット1がグローバル管理またはローカル管理を示します。
ローカル管理アドレスは無効ですか?
無効ではありません。仮想化、コンテナ、意図的な上書き、プライバシー保護のためのランダム化で広く使われる有効なアドレスです。
ハードウェアのベンダーも特定できますか?
特定できません。アドレスのフラグだけを復号し、OUIレジストリや外部データベースへの問い合わせは行いません。
どの入力形式に対応していますか?
48ビットの16進数について、コロン区切り、ハイフン区切り、Cisco形式、区切りなしの12桁に対応しています。
APIリクエストの料金はいくらですか?
APIリクエスト1回の料金は$0.002です。処理は決定的で、外部サービスには接続しません。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/dev/mac-type \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"mac_address":"02:42:AC:11:00:02"}'const res = await fetch("https://api.kit.forhosting.com/dev/mac-type", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"mac_address": "02:42:AC:11:00:02"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/mac-type",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"mac_address": "02:42:AC:11:00:02"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/mac-type", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"mac_address":"02:42:AC:11:00:02"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"mac_address":"02:42:AC:11:00:02"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/mac-type", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"mac_address": "02:42:AC:11:00:02"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.mac_type",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |