ip

ip разбирает IPv4 и IPv6, определяет область адреса, преобразует числовые формы и рассчитывает границы CIDR целиком средствами PHP.

СетьВерсия 1.2.2Стабильная
lil-terminal

Обзор

Используйте ip для детерминированной работы с адресами без сетевого запроса: переводите IPv4 между представлениями, разворачивайте IPv6, проверяйте частные и loopback-диапазоны и рассчитывайте сеть по префиксу.

Адрес и 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

преобразовать шестнадцатеричное значение в 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 — ещё маску, wildcard и broadcast, для IPv6 — последний адрес. ip me получает адрес посетителя, который видит PHP, а ip server — адрес сервера по данным PHP.

Ограничения и безопасность

Расчёт CIDR не сканирует сеть: число адресов не равно количеству устройств, а границы диапазона не означают доступность узлов. Из-за прокси me может отличаться от настоящего адреса пользователя, на shared hosting server может быть внутренним либо отсутствовать. Некорректные адреса и префиксы отклоняются. Примеры используют безопасные учебные адреса и локально вычисляемые значения.

Детерминированные формы

Один и тот же IPv4 можно передать в точечной, целочисленной или шестнадцатеричной форме. Префикс CIDR добавляет рассчитанные границы сети. Для 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
Преобразовать шестнадцатеричное значение в 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 от детерминированных преобразований адресов.