Ситуация классическая: дали тебе IP-адрес, а маску подсети никто не дал. Или наоборот — в документации только IP, а надо понять, что за сеть, какие там границы, сколько хостов, кто в бродкасте. Вроде бы мелочь, но если ты работаешь с сетями, деплоишь VPN, настраиваешь firewall или просто хочешь понять, почему какой-то сервер не пингуется — без маски подсети никуда. В этом посте разберём, как вычислить маску по IP, какие есть инструменты (CLI и web), и как не попасть в классические ловушки.
Возможности
- Рассчитать маску подсети вручную (если знаешь диапазон или CIDR, но не явно маску).
- Использовать встроенные утилиты Linux, Windows, macOS.
- Воспользоваться быстрыми онлайн-калькуляторами (когда лень считать в голове).
- Понять, как работает разбиение на подсети и зачем это вообще нужно.
Что требуется
- Любой современный ПК или ноут (железо не критично, если только не настраиваешь датацентр на Raspberry Pi).
- Операционная система: Linux (Ubuntu, Debian, CentOS и др.), macOS, Windows — всё подойдёт.
- Желание разобраться в теме и немного времени.
- Доступ к терминалу (bash, PowerShell, cmd — по ситуации).
- Интернет — если решишь воспользоваться онлайн-инструментами.
Установка — пошаговая инструкция
По сути, для вычисления маски по IP ничего ставить не надо, если у тебя уже есть стандартные утилиты. Но если хочется чего-то более мощного (например, ipcalc
), то вот как можно быстро всё подготовить:
- Linux (Ubuntu/Debian):
sudo apt update sudo apt install ipcalc
- CentOS/RHEL:
sudo yum install ipcalc
- macOS (через Homebrew):
brew install ipcalc
- Windows:
- Встроенных аналогов
ipcalc
нет, но можно скачать онлайн-версию или использовать PowerShell (см. ниже).
- Встроенных аналогов
- Онлайн-инструменты:
- https://jodies.de/ipcalc — минималистичный калькулятор, без рекламы.
- https://www.calculator.net/ip-subnet-calculator.html — чуть более подробный.
Использование — полный список команд и вариантов
Вот несколько способов узнать маску подсети по 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.
Официальные ресурсы:
Ваш отзыв