Как узнать маску подсети по IP адресу: расчет и инструменты

Ситуация классическая: дали тебе IP-адрес, а маску подсети никто не дал. Или наоборот — в документации только IP, а надо понять, что за сеть, какие там границы, сколько хостов, кто в бродкасте. Вроде бы мелочь, но если ты работаешь с сетями, деплоишь VPN, настраиваешь firewall или просто хочешь понять, почему какой-то сервер не пингуется — без маски подсети никуда. В этом посте разберём, как вычислить маску по IP, какие есть инструменты (CLI и web), и как не попасть в классические ловушки.

Возможности

  • Рассчитать маску подсети вручную (если знаешь диапазон или CIDR, но не явно маску).
  • Использовать встроенные утилиты Linux, Windows, macOS.
  • Воспользоваться быстрыми онлайн-калькуляторами (когда лень считать в голове).
  • Понять, как работает разбиение на подсети и зачем это вообще нужно.

Что требуется

  • Любой современный ПК или ноут (железо не критично, если только не настраиваешь датацентр на Raspberry Pi).
  • Операционная система: Linux (Ubuntu, Debian, CentOS и др.), macOS, Windows — всё подойдёт.
  • Желание разобраться в теме и немного времени.
  • Доступ к терминалу (bash, PowerShell, cmd — по ситуации).
  • Интернет — если решишь воспользоваться онлайн-инструментами.

Установка — пошаговая инструкция

По сути, для вычисления маски по IP ничего ставить не надо, если у тебя уже есть стандартные утилиты. Но если хочется чего-то более мощного (например, ipcalc), то вот как можно быстро всё подготовить:

  1. Linux (Ubuntu/Debian):
    sudo apt update
    sudo apt install ipcalc
  2. CentOS/RHEL:
    sudo yum install ipcalc
  3. macOS (через Homebrew):
    brew install ipcalc
  4. Windows:
    • Встроенных аналогов ipcalc нет, но можно скачать онлайн-версию или использовать PowerShell (см. ниже).
  5. Онлайн-инструменты:

Использование — полный список команд и вариантов

Вот несколько способов узнать маску подсети по IP (и/или CIDR):

1. Вручную, если есть только IP

Если у тебя только IP, маску не узнать — нужен хотя бы CIDR (например, 192.168.1.0/24). Без этого по одному IP можно только гадать (например, 192.168.1.5 — это может быть и /24, и /16, и даже /32).

2. Если есть IP с маской в CIDR

ipcalc 192.168.1.5/24

Выдаст:

Address:   192.168.1.5         11000000.10101000.00000001.00000101
Netmask:   255.255.255.0 = 24  11111111.11111111.11111111.00000000
Wildcard:  0.0.0.255           00000000.00000000.00000000.11111111
=>
Network:   192.168.1.0/24      11000000.10101000.00000001.00000000
HostMin:   192.168.1.1         11000000.10101000.00000001.00000001
HostMax:   192.168.1.254       11000000.10101000.00000001.11111110
Broadcast: 192.168.1.255       11000000.10101000.00000001.11111111
Hosts/Net: 254                  Class C

3. Если только IP (без маски) — узнать маску на интерфейсе

На Linux:

ip addr show
# или
ifconfig

Найди свой IP — обычно маска будет в виде netmask 255.255.255.0 или /24.

На Windows:

ipconfig

Там будет строка «Маска подсети».

4. PowerShell (Windows, кроссплатформенно)

Get-NetIPAddress | Select-Object IPAddress, PrefixLength

Если нужно перевести PrefixLength (например, 24) в привычный вид:

function Get-SubnetMask($prefix) {
    $mask = [math]::Pow(2,32) - [math]::Pow(2,32-$prefix)
    [IPAddress]::Parse(($mask -band 0xFF000000)/0x1000000).ToString() + "." +
    [IPAddress]::Parse(($mask -band 0x00FF0000)/0x10000).ToString() + "." +
    [IPAddress]::Parse(($mask -band 0x0000FF00)/0x100).ToString() + "." +
    [IPAddress]::Parse(($mask -band 0x000000FF)).ToString()
}
Get-SubnetMask 24

5. Онлайн-калькулятор

Просто заходим на jodies.de/ipcalc, вводим IP и (если знаем) маску или префикс. Получаем всё в виде таблички.

Ошибки, как делать не надо

  • Не пытайся вычислить маску по одному только IP — это невозможно. Маска задаёт сеть, а не адрес!
  • Не путай маску подсети и шлюз по умолчанию. Это разные вещи!
  • Не доверяй автоматической настройке DHCP в корпоративных сетях без проверки — там могут быть кастомные маски (например, /23 вместо стандартного /24).
  • В документации часто забывают указывать маску — всегда уточняй у коллег или в тикете, иначе нарвёшься на баги.

Пример реального использования в окружении

Недавно настраивал VPN-сервер для удалённой команды. Дали только пул адресов: 10.10.1.100-10.10.1.200. Нужно было понять, какая маска подсети подойдёт, чтобы эти адреса все были в одной сети. Посчитал вручную: 10.10.1.100 — это 00001010.00001010.00000001.01100100, 10.10.1.200 — 00001010.00001010.00000001.11001000. Различаются только последние 8 бит. Значит, маска /24 (255.255.255.0) подойдёт. Проверил через ipcalc — всё ок, сеть 10.10.1.0/24, диапазон 10.10.1.1-10.10.1.254. Применил на сервере — все клиенты получили адреса, всё работает.

Заключение

Маска подсети — штука простая, но без неё не обойтись ни в одной более-менее серьёзной сетевой задаче. Рекомендую освоить ipcalc или его аналоги, чтобы не тупить с ручным пересчётом битов. Если попал в ситуацию, когда есть только IP — всегда уточняй маску у того, кто выдавал адрес или настраивай интерфейс так, как требует твоя задача. И не забывай: лучше потратить 5 минут на проверку, чем потом ловить баги в production.

Официальные ресурсы:

Хотите прочитать больше про Сети?
Отзывов нет.

Ваш отзыв

Пожалуйста, заполните поля снизу и добавьте отзыв!.
Имя *
E-mail *
Сайт
Сообщение *