ip

ip は IPv4/IPv6 を解釈し、アドレス範囲を分類し、数値表現を変換し、CIDR 境界を PHP だけで計算します。

ネットワークバージョン 1.2.2安定版
lil-terminal

概要

ネットワーク問い合わせを行わずに確定的なアドレス計算をしたいときは ip を使います。IPv4 表現の変換、IPv6 の展開、プライベートアドレスやループバック範囲の判定、プレフィックスからのネットワーク範囲計算ができます。

単一アドレスと CIDR ネットワークは別の問い

プレフィックスなしでは ip は一つのアドレスを説明します。/prefix 付きではネットワーク境界と範囲を計算します。ip me と ip server は現在の HTTP リクエストとホスティング環境からアドレスを読みます。

構文

lil-terminal
ip <address|integer|hex|me|server>[/prefix]

リファレンス

ip 192.168.1.1

IPv4 アドレス、数値表現、スコープを確認

ip 3232235777

符号なし整数を IPv4 に変換して確認

ip 0xC0A80101

16 進数を IPv4 に変換して確認

ip 192.168.1.10/24

IPv4 ネットワーク、マスク、wildcard、broadcast、範囲を表示

ip 2001:db8::1

IPv6 の圧縮形・展開形とスコープを表示

ip 2001:db8::1/64

IPv6 ネットワーク、最終アドレス、範囲を表示

ip me

現在の訪問者アドレスを確認

ip server

現在のサーバーアドレスを確認

使い方

IPv4 または IPv6 を入力します。IPv4 は符号なし整数と 0x HEX 形式にも対応します。/prefix を付けるとネットワーク、範囲、アドレス数を求め、IPv4 はマスク・ワイルドカード・ブロードキャスト、IPv6 は末尾アドレスを示します。ip me と ip server は PHP の環境値に依存します。

制限と安全

CIDR は計算だけで、稼働中のホストを探索しません。プロキシや共用ホスティングでは取得 IP が変わります。無効な形式は拒否されます。例には文書用 IP を使います。

決定的な形式

IPv4 はドット表記、符号なし整数、16 進数で入力できます。IPv6 は圧縮形と展開形を表示し、プレフィックス付きではネットワーク、範囲、アドレス数も計算します。me と server は現在の HTTP 環境に依存します。

インタラクティブな sandbox プレビュー

用意された例をページ上でそのまま実行できます。結果は事前に生成されてブラウザに表示され、サーバーではターミナルコマンドを実行しません。

サーバーと訪問者のアドレスを比較する

インストールと管理

現在の互換バージョンをインストールします。全機能は Base、縮小版は Minimum を選び、すでに導入済みのモジュール更新には upgrade を使います。

Base と Minimum は同じ現在のモジュールリリースの二つのパッケージです。

Base パッケージ

ローカル参照と公開済みの全モードを含む完全パッケージをインストールします。

install ip
Minimum パッケージ

縮小パッケージをインストールします。ローカルリファレンスは含まれず、help <cmd> -i で現在のサーバーリファレンスを開きます。

install ip -m
正確な公開版

この公開済みバージョンを正確に指定してインストールします。

install ip -v 1.2.2
確認または更新

upgrade が互換性を確認し、必要な場合だけブロックを置換します。

upgrade ip
モジュールを削除

コアや他のモジュールに触れず拡張ブロックを削除します。

install ip -u

例

例はコピーできますが、サイトは実行しません。実プロジェクトではパス、権限、破壊的オプションを確認してください。

サーバーと訪問者のアドレスを比較する
ip 192.168.1.1
オフライン学習用例 — 実際の照会なし
Address  192.168.1.1
Family   IPv4
Scope    private
Integer  3232235777
Hex      0xC0A80101
Bytes    192.168.1.1
符号なし整数を IPv4 に変換して確認
ip 3232235777
オフライン学習用例 — 実際の照会なし
Address  192.168.1.1
Family   IPv4
Scope    private
Integer  3232235777
Hex      0xC0A80101
Bytes    192.168.1.1
16 進数を IPv4 に変換して確認
ip 0xC0A80101
オフライン学習用例 — 実際の照会なし
Address  192.168.1.1
Family   IPv4
Scope    private
Integer  3232235777
Hex      0xC0A80101
Bytes    192.168.1.1
IPv4 ネットワーク、マスク、wildcard、broadcast、範囲を表示
ip 192.168.1.10/24
オフライン学習用例 — 実際の照会なし
Address    192.168.1.10
Family     IPv4
Scope      private
Integer    3232235786
Hex        0xC0A8010A
Bytes      192.168.1.10
CIDR       192.168.1.0/24
Network    192.168.1.0
Netmask    255.255.255.0
Wildcard   0.0.0.255
Broadcast  192.168.1.255
Range      192.168.1.0 – 192.168.1.255
Addresses  256
IPv4 ネットワーク、マスク、wildcard、broadcast、範囲を表示
ip 192.0.2.10/30
オフライン学習用例 — 実際の照会なし
Address    192.0.2.10
Family     IPv4
Scope      documentation
Integer    3221225994
Hex        0xC000020A
Bytes      192.0.2.10
CIDR       192.0.2.8/30
Network    192.0.2.8
Netmask    255.255.255.252
Wildcard   0.0.0.3
Broadcast  192.0.2.11
Range      192.0.2.8 – 192.0.2.11
Addresses  4
IPv4 ネットワーク、マスク、wildcard、broadcast、範囲を表示
ip 0.0.0.0/0
オフライン学習用例 — 実際の照会なし
Address    0.0.0.0
Family     IPv4
Scope      unspecified
Integer    0
Hex        0x00000000
Bytes      0.0.0.0
CIDR       0.0.0.0/0
Network    0.0.0.0
Netmask    0.0.0.0
Wildcard   255.255.255.255
Broadcast  255.255.255.255
Range      0.0.0.0 – 255.255.255.255
Addresses  4294967296
IPv4 アドレス、数値表現、スコープを確認
ip 127.0.0.1
オフライン学習用例 — 実際の照会なし
Address  127.0.0.1
Family   IPv4
Scope    loopback
Integer  2130706433
Hex      0x7F000001
Bytes    127.0.0.1
IPv4 アドレス、数値表現、スコープを確認
ip 169.254.10.5
オフライン学習用例 — 実際の照会なし
Address  169.254.10.5
Family   IPv4
Scope    link-local
Integer  2851998213
Hex      0xA9FE0A05
Bytes    169.254.10.5
無効な IP アドレスを拒否する
ip 100.64.0.1
オフライン学習用例 — 実際の照会なし
Address  100.64.0.1
Family   IPv4
Scope    shared
Integer  1681915905
Hex      0x64400001
Bytes    100.64.0.1
IPv4 アドレス、数値表現、スコープを確認
ip 224.0.0.1
オフライン学習用例 — 実際の照会なし
Address  224.0.0.1
Family   IPv4
Scope    multicast
Integer  3758096385
Hex      0xE0000001
Bytes    224.0.0.1
IPv4 アドレス、数値表現、スコープを確認
ip 203.0.113.3
オフライン学習用例 — 実際の照会なし
Address  203.0.113.3
Family   IPv4
Scope    documentation
Integer  3405803779
Hex      0xCB007103
Bytes    203.0.113.3
IPv4 アドレス、数値表現、スコープを確認
ip 255.255.255.255
オフライン学習用例 — 実際の照会なし
Address  255.255.255.255
Family   IPv4
Scope    broadcast
Integer  4294967295
Hex      0xFFFFFFFF
Bytes    255.255.255.255
IPv6 の圧縮形・展開形とスコープを表示
ip ::1
オフライン学習用例 — 実際の照会なし
Address     ::1
Family      IPv6
Scope       loopback
Compressed  ::1
Expanded    0000:0000:0000:0000:0000:0000:0000:0001
Hex         0x00000000000000000000000000000001
IPv6 の圧縮形・展開形とスコープを表示
ip 2001:db8::1
オフライン学習用例 — 実際の照会なし
Address     2001:db8::1
Family      IPv6
Scope       documentation
Compressed  2001:db8::1
Expanded    2001:0db8:0000:0000:0000:0000:0000:0001
Hex         0x20010DB8000000000000000000000001
IPv6 ネットワーク、最終アドレス、範囲を表示
ip 2001:db8::1/64
オフライン学習用例 — 実際の照会なし
Address     2001:db8::1
Family      IPv6
Scope       documentation
Compressed  2001:db8::1
Expanded    2001:0db8:0000:0000:0000:0000:0000:0001
Hex         0x20010DB8000000000000000000000001
CIDR        2001:db8::/64
Network     2001:db8::
Last        2001:db8::ffff:ffff:ffff:ffff
Range       2001:db8:: – 2001:db8::ffff:ffff:ffff:ffff
Addresses   18446744073709551616
IPv6 ネットワーク、最終アドレス、範囲を表示
ip fe80::1/128
オフライン学習用例 — 実際の照会なし
Address     fe80::1
Family      IPv6
Scope       link-local
Compressed  fe80::1
Expanded    fe80:0000:0000:0000:0000:0000:0000:0001
Hex         0xFE800000000000000000000000000001
CIDR        fe80::1/128
Network     fe80::1
Last        fe80::1
Range       fe80::1 – fe80::1
Addresses   1
IPv6 の圧縮形・展開形とスコープを表示
ip fc00::1
オフライン学習用例 — 実際の照会なし
Address     fc00::1
Family      IPv6
Scope       private
Compressed  fc00::1
Expanded    fc00:0000:0000:0000:0000:0000:0000:0001
Hex         0xFC000000000000000000000000000001
現在の訪問者アドレスを確認
ip me
オフライン学習用例 — 実際の照会なし
Address  8.8.8.8
Family   IPv4
Scope    public
Integer  134744072
Hex      0x08080808
Bytes    8.8.8.8
現在のサーバーアドレスを確認
ip server
オフライン学習用例 — 実際の照会なし
Address  192.0.2.3
Family   IPv4
Scope    documentation
Integer  3221225987
Hex      0xC0000203
Bytes    192.0.2.3
Ip · 20
ip 256.1.1.1
オフライン学習用例 — 実際の照会なし
Invalid IP address
Ip · 21
ip 192.0.2.10/33
オフライン学習用例 — 実際の照会なし
Invalid prefix
Ip · 22
ip 2001:db8::1/129
オフライン学習用例 — 実際の照会なし
Invalid prefix
Ip · 23
ip 4294967296
オフライン学習用例 — 実際の照会なし
IPv4 integer is out of range
Ip · 24
ip 192.0.2.1/abc
オフライン学習用例 — 実際の照会なし
Invalid prefix

この例で使うファイル: sandbox/config/app.json

例では、保護されたドキュメント用 /sandbox/ ワークスペースのファイルまたはディレクトリを使います。

{
  "name": "lil-sandbox",
  "debug": true,
  "features": ["files", "code", "archives"],
  "limits": {
    "upload_mb": 2,
    "history": 25
  }
}

関連ドキュメント

現在の公開版

v1.2.22026-08-08

より明確な me/server 形式

現在のリクエスト依存の me/server を決定的なアドレス変換から分離します。