Произвольные маски подсети -- ? (По стандартам и в iptables)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
anotherone
Сообщения: 57
ОС: Debian

Произвольные маски подсети -- ?

Сообщение anotherone »

Пара вопросов насчет сетевых масок.
1. Маска обязана быть построена по шаблону "сперва N единиц, потом M нулей" (в битовом виде), или допустимо использовать маски, не подходящие под такие критерии (то есть просто любой набор нулей и едениц) (перевернутые маски не берем в рассчет)?
2. Можно ли в iptables задавать правила с произвольными масками, что-нибудь типа такого:
iptables -A INPUT -p TCP -d 0.0.0.0/245.251.239.217 -j ACCEPT
iptables -A INPUT -p TCP -s 0.4.16.24/52.135.63.63 -j REJECT

О целесообразности использования таких масок (если их можно использовать) давайте не будем говорить.

Я вот сижу, копаюсь в разных RFCшках на тему интернет протоколов и прочего -- что-то никак не могу найти ответа на вопрос N1... :( Везде маски описываются как наборы "несколько едениц, потом несколько нулей", но нигде нет четкого пояснения, что по-другому нельзя, и нигде нет четкого определения маски, чтобы было понятно, что по-другому нельзя. А между тем, мне очень надо...

Буду благодарен, даже если вы просто подскажете, где найти однозначные ответы на эти вопросы.
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Произвольные маски подсети -- ?

Сообщение Uncle_Theodore »

Спасибо сказали:
Аватара пользователя
anotherone
Сообщения: 57
ОС: Debian

Re: Произвольные маски подсети -- ?

Сообщение anotherone »

Спасибо!
А вот iptables вроде хавает правила с любыми масками :) Не знаю, работает или нет, но никаких сообщений не выдает, правило, вроде бы, нормально устанавливается
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Произвольные маски подсети -- ?

Сообщение sash-kan »

anotherone писал(а):
30.11.2007 11:21
1. Маска обязана быть построена по шаблону
да. слышал легенду о том, что на самой заре зарождения ip якобы задумывались (и даже как-то работали) произвольного содержания маски. увы, ни подтверждения, ни опровержения данной легенды найти не удалось. впрочем, не очень-то и искалось.
anotherone писал(а):
30.11.2007 11:21
2. Можно ли в iptables задавать правила с произвольными масками
даже если iptables и не возмутится, netfilter с такими масками работать не будет, это точно.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
zubarev
Сообщения: 119
ОС: Fedora Core

Re: Произвольные маски подсети -- ?

Сообщение zubarev »

1) "...нигде нет четкого определения маски..."
(anotherone)
А что сложного-то?
Маска показывает какое количество битов ип-адреса используется для номера сети, а какое - для номера узла.
Не поленитесь записать айпишник в двоичном представлении.
А под ним пропишите используемую маску. Опять же в двоичном представлении. И все будет ясно.
Например, пресловутый айпишник 192.168.0.1 и пресловутая маска 255.255.255.0 в двоичном виде выглядят так:

11000000.10101000.00000000.00000001
11111111.11111111.11111111.00000000

Это значит, что первые три октета интерпретируются как номер сети.
Только так и никак иначе.

2) Что будет если в ряду единиц (считая слева) будет "разрыв" (то есть появится 0, апотом опять будут единицы)?
По идее, программные и аппаратные интерпретаторы масок, начиная с этого места должны "игнорировать" все последующие разряды маски.
Если кончено они написаны/сделаны корректно.

3) Теперь о легендах. Поскольку все современное ИТ-пространство (включая стандарты на железо, среды программирования, сетевые протоколы и т.п. и т.д.) зарождалось лет эдак -дцать назад под пристальным оком звездно-полосатых спецслужб, то возможно пофантазировать на тему, что существуют некие секретные интерпретаторы масок, которые "умеют" обрабатывать маски с разрывом и перенаправлять запрос на некие "секретные" сети.
Можно пофантазировать.
Но не более того.
Спасибо сказали:
zubarev
Сообщения: 119
ОС: Fedora Core

Re: Произвольные маски подсети -- ?

Сообщение zubarev »

Вопрос о сетевой маске периодически всплывает в разных вариациях.

Наверное, он немного сложноват для понимания новичками.
А начинающие сисадмины также иногда путаются, какую маску задать для сети их предприятия с определенным числом компов.
Когда-то я сделал для себя простую табличку и после этого перестал путаться с маской раз и навсегда.

Привожу ее здесь, может кому-то понадобится (или модераторы прилепят, если сочтут нужным).

Начнем с самой распространенной маски 255.255.255.0 (которую многие используют в ЛВС по той простой причине, что ее проще всего набирать на клавиатуре). Представим ее в двоичном виде:

11111111.11111111.11111111.00000000

Первые 24 разряда - единицы, поэтому такое же число разрядов ип-адреса - это номер сети.
Соответственно максимальное число сетей для этой маски - 2^24
Последние 8 разрядов маски - уже не единицы, а нули, поэтому последние восемь бит ип-адреса интерпретируются как номер узла в этой самой сети.
Таким образом, максимальное число узлов, которое возможно в сети использующей маску 255.255.255.0 составляет 2^8 степени. (или 256 - в десятичном виде).

Однако необходимо учесть, что "0" и "255" должны быть зарещервированы, поэтому максимальное число пользовательских машин N в сети для конкретной маски будет рассчитываться по формуле
N = 2^x-2, где
х- кол-во нулей в последнем октете в двоичном представлении адреса.

Ну а теперь собственно табличка.

Двоичное представление | Десятичное представление | Макс.число хостов

11111111.11111111.11111111.00000000 = 255.255.255.0 (254)
11111111.11111111.11111111.10000000 = 255.255.255.128 (126)
11111111.11111111.11111111.11000000 = 255.255.255.192 (62)
11111111.11111111.11111111.11100000 = 255.255.255.224 (30)
11111111.11111111.11111111.11110000 = 255.255.255.240 (14)
11111111.11111111.11111111.11111000 = 255.255.255.248 (6)
11111111.11111111.11111111.11111100 = 255.255.255.252 (2)
11111111.11111111.11111111.11111110 = 255.255.255.254 (0)

Далее уже лля больших сетей:

11111111.11111111.11111110.00000000 = 255.255.254.0 (510)
11111111.11111111.11111100.00000000 = 255.255.252.0 (1022 - ну и так далее в соответствии с алгоритмом - степень двойки минус два)

Т.о. для домашних сетей и сетей небольших/средних предприятий
нужны (и возможны) всего 6 вариантов масок - заканчивающихся соответственно на 0, 128, 192, 224, 240, 248

(Маска 255.255.255.252 жестко задает вариант сети, состоящей всего из двух машин. Это самый тривиальный вариант и его можно даже не учитывать)

Если в сеть нужно поставить более 126 машин, используем 255.255.255.0
Если в сети должно быть 10 машин, то используем как минимум 255.255.255.240
Но если 15 машин, то уже надо
255.255.255.224
Если же вы где-то увидите, например, такую маску
255.255.255.223
то это безграмотно.

Вот, наервное, и все.
Последний раз редактировалось /dev/random 06.05.2019 06:00, всего редактировалось 1 раз.
Причина: Исправлена замеченная посетителем опечатка (254 -> 252)
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Произвольные маски подсети -- ?

Сообщение sash-kan »

zubarev писал(а):
01.12.2007 04:26
пофантазировать на тему, что существуют некие секретные интерпретаторы масок, которые "умеют" обрабатывать маски с разрывом и перенаправлять запрос на некие "секретные" сети.
нуу, это уж фольклор чистой воды. из той же серии, что и неиспользуемые проводки в utp-кабеле.
слышанная же мною «легенда» вполне логична. работать с «дырявыми» масками для компьютера/маршрутизатора ничуть не сложнее, чем с «монолитными». собственно, вообще параллельно. а вот человеку гораздо легче будет просто свихнуться, чем в уме заниматься рассчетами принадлежности ip-адреса к сети/сетям с такими масками. вот на этой сложности, якобы и было основано решение «ну его на…, пусть лучше маски будут „сплошными“».
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
anotherone
Сообщения: 57
ОС: Debian

Re: Произвольные маски подсети -- ?

Сообщение anotherone »

Спасибо всем за ответы!
Спасибо сказали:
Аватара пользователя
noob
Сообщения: 212

Re: Произвольные маски подсети -- ?

Сообщение noob »

а разве не должно быть просто AND и полученый результат один в один приравнен к адресу сети,
сравнением с сетями напрямую подключенными к хосту и в зависимости от результата решать локально слать или через гетвей ?
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Произвольные маски подсети -- ?

Сообщение sash-kan »

noob, примерно так (подробности реализации сравнения масок с адресами смотрите в ядре). т.е., компьютеру, в общем-то, пофигу, состоит ли маска из сплошного массива единичек, а за ним сплошного массива нулей, или из единичек и нулей вперемешку. а вот человеку с таким «месивом» (даже на бумажке, не говоря уж про «в уме») разбираться будет… мягко говоря, сложновато.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
noob
Сообщения: 212

Re: Произвольные маски подсети -- ?

Сообщение noob »

sash-kan писал(а):
03.12.2007 23:56
noob, примерно так (подробности реализации сравнения масок с адресами смотрите в ядре). т.е., компьютеру, в общем-то, пофигу, состоит ли маска из сплошного массива единичек, а за ним сплошного массива нулей, или из единичек и нулей вперемешку. а вот человеку с таким «месивом» (даже на бумажке, не говоря уж про «в уме») разбираться будет… мягко говоря, сложновато.

Согласен для человека трудно воспринимать.
Но просто в первом посте просилось не обсуждать целесообразность. :)
Спасибо сказали: