Администрирование#01. Адресация в IP сетях

Как и обещала, выкладываю первую часть.

Некоторое введение: статьи о базовых понятиях я писала еще в универе по лекциям, затем их вычитывал мой научный руководитель (aka nixleader), поэтому тега «моё» не будет. Статьи не претендуют на оригинальность, есть множество других. Они, также, вероятно, могут встретится в сети (распространялись в универе и свободно висят в справочной системе на работе). Я постараюсь указывать места, где будет встречаться копипаста с других ресурсов (далее такое будет). Помимо простых вещей, попробую привести в литературную форму некоторые сложные маны, которые писала чисто для себя, и выложу их отдельно.


Администрирование#01. Адресация в IP сетях

В семействе протоколов TCP/IP используются три типа адресов: локальные (физические, аппаратные), IP-адреса и символьные (доменные) имена. Рассмотрим первые два типа адресов.

Основные термины:

Хост (Host) – устройство, работающее в сети на сетевом уровне модели OSI (компьютер, маршрутизатор и т.п.). Часто понятие путают с IP-адресом.

MAC-адрес — физический адрес компьютера (если точнее - сетевой карты или другого сетевого устройства). Размер адреса – 6 байт. Этот адрес должен быть уникальным для каждого устройства в локальной сети, и используется всеми устройствами для передачи данных внутри неё. (Как говорил мой преподаватель: «Вы еще не видели китайских сетевых карт: в одной серии карт может быть много повторяющихся MAC-адресов»).

IP-адрес

IP-адрес — это 32 бита (4 байта), 4 октета, представляющие собой «логический» адрес хоста в сети (сетевой адрес). Нужно понимать, что у одного хоста может быть много IP-адресов.

IP-адреса обычно записываются в десятичной системе счисления виде четырёх октетов X1.X2.X3.X4, где X1 – старший байт адреса.

Есть консорциум IANA, который раздает IP-адреса по 5 организациям (ARIN, RIPE, APNIC, AfriNIC, LACNIC). Им выдаются сети класса А. Далее эти организации распределяют адреса по заявкам от организаций со статусом LIR (Local Internet Resource) подсетями /22 или крупнее, а в случае выделения провайдеро-независимого блока - /24 (класс C) и крупнее.

Маска подсети — указывает, какая часть IP-адреса приходится на адрес сети, а какая — на адрес хоста в ней. Без адреса сети или IP-адреса используется только в обсуждении количества используемых/необходимых адресов.

Маска - это последовательность скольких-то единичек в начале, а потом - нулей, составляющих в итоге 32 бита. Бит равный единице означает, что на его месте в IP-адресе бит будет входить в адрес сети. Нулевые биты в маске определяют позиции бит адреса хоста в IP-адресе.

Маска записывается через “/” после IP-адреса и может записываться как IP (например, 192.168.1.100/255.255.255.0; Здесь маска 255.255.255.0 — это 24 единички и 8 нулей (в двоичной системе), первые 24 символа будут адресом сети, оставшиеся 8 — адресом хоста), или как число от 0 до 32 (192.168.1.100/24 — здесь «/24» — это маска, то есть 24 единички в начале, остальные — нули).

Адрес сети – зарезервированный IP адрес, используемый для обозначения всей сети (совместно с указанием маски сети). В адресе сети на месте адреса хоста все биты выставляются в нули.

Широковещательный запрос — отправка пакета всем устройствам в сети. Для реализации такой рассылки назначается специальный широковещательный адрес: в IP-адрес после адреса сети (вместо адреса хоста) все биты выставляются в единицы.

Соответственно, максимально возможное количество хостов в сети вычисляется по формуле 2^(32-маска)-2. (Так как, когда вместо адреса хоста все нули — это адрес сети, а когда все единички — это широковещательный запрос, соответственно, теряем два адреса из всех вариантов)


Дополнительные сведения:

Маска /32 — указывает, что написан адрес одного и ровно 1 (одного) хоста

Маска /31 — используется для маршрутизации для соединения точка-точка, или если два адреса на один комп (это делается для экономии адресов и для сокращения количества записей о маршрутизации соответственно).


0.0.0.0/0 — весь интернет.

255.255.255.255 — широковещательный запрос всем в локальной сети. Используется обычно в случаях, когда хосту неизвестны настройки локальной сети.


Адреса, которые запрещены в сети интернет, или же «локальные» адреса, которые можно использовать для себя без ограничений (так называемые, «серые» адреса):

Для собственных локальных сетей:

10.0.0.0/8

172.16.0.0/12

192.168.0.0/16

и

127.0.0.0/8 – loopback – адреса которые доступны только внутри одного хоста


Классификация сетей

A: 0-127/8

B: 128-191/16

C: 192-223/24

D: 224-239


В сети класса А 2^24-2 хостов в одной сети, в B - 2^16-2, в C – 256 -2=254 хоста.

Адреса класса D используются для многоадресной (multicast) передачи.

Остальные адреса на данный момент зарезервированы и не используются.

Стоит отметить, что ранее классы использовались для маршрутизации. Теперь же вся маршрутизация «бесклассовая» и классы сетей указываются только для указания размера сети (например, “сеть класса C” обозначает сеть с 256 адресами (с маской /24) (любую, даже 10.2.4.0/24!!))

Лига Сисадминов

1.5K поста17.7K подписчиков

Добавить пост

Правила сообщества

Мы здесь рады любым постам связанным с рабочими буднями специалистов нашей сферы деятельности.

Вы смотрите срез комментариев. Показать все
5
Автор поста оценил этот комментарий

В целом да, но очень сумбурно. Не надо тут этого.


Начиная с мак-адреса, который служит для адресации устройства на L2 (грубо говоря в езернет-сегменте, образованном L2-устройствами) и должен быть уникальным В МИРЕ (ваш препод еще не видел материнок, в которых на всей серии в интегрированных сетевухах может быть один и тот-же мак) для чего существует OUI. И ни слова о разных способах записи MAC-адресов, отличающихся в разных ситуациях/оборудовании


И заканчивая тем, маска может записываться в dot-decimal notation, а не только в slash-notation, как-то путано. И тем, что IANA уже не выделяет сети класса А и вообще редко что-то выдаёт. Адреса v4 кончились, куда там целую А! На днях RIPE получил от IANA у кого-то отобранную за ненадобностью /19 и то большое счастье

раскрыть ветку (26)
7
Автор поста оценил этот комментарий

Вот про "МАС должен быть уникальным в мире" - вы не правы, не путайте людей. Чтоб работало он должен быть уникальным именно в локальной сети (широковещательном домене).

раскрыть ветку (20)
2
Автор поста оценил этот комментарий

"чтобы оно работало" и "стандарт" это очень разные вещи. Можно и кабели не по стандарту обжимать и шурупы молотком забивать и это будет работать. При этом выдавать в методичках своё "чтобы работало" за "стандарт" не нужно.


Для справки хотябы https://ru.wikipedia.org/wiki/MAC-адрес

раскрыть ветку (19)
3
Автор поста оценил этот комментарий
Кто регулирует уникальность маков для виртуальных устройств?
раскрыть ветку (8)
1
Автор поста оценил этот комментарий

Опять же, вендорам выделяются диапазоны глобально администрируемых mac адресов.

И MS, VMWare,Citrix и другим тоже.

Автор поста оценил этот комментарий

По разному.

в случае vlan в никсах, например, берётся мак физического parent-интерфейса

> ifconfig |grep ether
ether 3c:fd:fe:0a:a0:e0
ether 3c:fd:fe:0a:a0:e2
ether 3c:fd:fe:0a:a0:e2
ether 3c:fd:fe:0a:a0:e2
ether 3c:fd:fe:0a:a0:e2
...


в случае железок - инкрементируется какой-то из "системных маков"

>sh mac-address-table | inc Router
0100.5e7f.64a8
0100.5e7f.64cc
0100.5e7f.6403
0100.5e7f.6488
0100.5e7f.64cd
...


На вирт.машинах может быть рандомайзер последних трёх байт. См, например

https://pubs.vmware.com/vsphere-51/index.jsp?topic=%2Fcom.vm...

VMware Organizationally Unique Identifier (OUI) allocation uses the default OUI 00:50:56 as the first three bytes of the MAC address generated for each virtual network. The MAC address-generation algorithm produces the rest of the MAC address. The algorithm guarantees unique MAC addresses within a virtual machine and attempts to provide unique MAC addresses across virtual machines.


как видно, во всех случаях явно присутствует повторяющаяся часть OUI и генератор стремится создать уникальность. Понятно, что уникальность нужна в пределах сегмента т.к. маки используются для адресации в пределах сегмента и за пределами сегмента уже не играют никакой роли. Тем не менее, производители никак не могут гарантировать такую уникальность, кроме как гарантируя полную уникальность адреса каждой железки в масштабах мира.


По крайней мере, так спланировано, о чём указывает множество довольно авторитетных источников типа вики и цискокурсов. На деле, понятное дело встречается всё что угодно - и материнки и сетевухи с одинаковыми маками и кривые алгоритмы коммутации в чипах Broadcom, основанные на коротких хэшах маков, что вызывает коллизии и другая гадость.

раскрыть ветку (6)
Автор поста оценил этот комментарий

Вопрос слегка в другую сторону. Вот этот хост у тебя что, Linux?
> ifconfig |grep ether

...

Автор поста оценил этот комментарий

Прости что заставил тебя писать эту портянку, право не стоило оно того. Резюмируя:
а) mac не должен быть уникальным в мире. Это простая и понятная идея делать его уникальным для железок, но натягивать это правило на все маки это отстой. Банально незачем.
b) Пример для vmware валидный, но у vmware есть свой OUI - логично и удобно его использовать. Однако vmware это далеко не единственный разработчик средств виртуализации. Например, тулстеки Xen чаще всего генерят произвольные маки.

раскрыть ветку (4)
Автор поста оценил этот комментарий

друг, я понимаю чего в принципе достаточно и необходимо и тоже видел много разных весёлых штук и примеров. Например, прошивку домашнего роутера, которая зашивает одинаковый мак. Мне, как админу провайдера, было очень весело про это узнать и потом отлавливать таких пользователей. Иногда проблема была решена в пределах сегмента, затем клиент с этим роутером переезжал в другой сегмент и снова вставал на грабли.


Поэтому еще раз: Использовать самому vs давать это как точное знание людям это две больших разницы. В методички нужно писать то-же самое, что в учебниках, по которым сертифицируется весь мир. И то-же самое что подразумевается в стандартах. И никак иначе.



Теперь касаемо самого предмета спора: название universal addresses уже о чём-то говорит. И ежели открыть 802 IEEE Standard for Local and Metropolitan Area Networks: Overview and Architecture http://www.ieee802.org/secmail/pdfocSP2xXA6d.pdf

то на 20 странице можно прочитать такие фразы

Currently, the IEEE assigns OUIs to be used for generating LAN MAC addresses and protocol identifiers. Assuming correct administration by the IEEE Registration Authority and the assignee, the LAN MAC addresses and protocol identifiers will be universally unique.


The concept of universal addressing is based on the idea that all potential members of a network need to have a unique identifier (if they are going to coexist in the network). The advantage of a universal address is that a station with such an address can be attached to any LAN in the world with an assurance that the address is unique.


как ты понимаешь, использование одинаковых адресов никак не удовлетворяет этой концепции. Хотя в принципе, когда у тебя небольшая локалка, всё будет работать, да. Но в учебники это не надо.


Про XEN насколько я прочитал тут https://wiki.xenproject.org/wiki/Xen_Networking тоже есть OUI, используемый для universal address. Также адрес может быть рандомным, но всё-таки подчиняется стандарту - помечается единичкой во втором старшем бите как locally administered address.


Пожалуй, больше я на этот спор время тратить не буду, и так уже дохрена потрачено.

раскрыть ветку (3)
Автор поста оценил этот комментарий

Я тебя не понимаю. Сначала ты говоришь, что надо требовать уникальности маков и точка, потом говоришь про локально администрируемые маки. Зачем же тогда вводить их в стандарт если и учебники против и стандарты и вендоры?

Я не зря тебя гну в сторону виртуализации. Если мейкеры железа заморачиваются на глобальную уникальность маков (и мы знаем почему и зачем), то в виртуальном мире этого просто не требуется. Это - новая реальность, не будущее. Ты же, сидя в провайдере, понимаешь, что виртуализация и машин и сетей и стораджей с прочей инфраструктурой уже вот она? На той неделе S3 у амазона прилёг и широким слоям вдруг стали понятны масштабы. Новые учебники будут именно про это.

(Я не шибко в теме ваших провайдерских дел, но завязываться на маки конечных устройств и иметь с ними гемор при переносе железки из одного сегмента в другой - это забавно)

раскрыть ветку (2)
Автор поста оценил этот комментарий

ты нудный :)

раскрыть ветку (1)
Автор поста оценил этот комментарий

Факт!

Автор поста оценил этот комментарий

У меня в посте есть слово "стандарт"? Но да, критика принимается, поправлю у себя, раскрою тему.

раскрыть ветку (9)
Автор поста оценил этот комментарий

Какие-то странные оправдания. Вместо того, чтобы принять разумную критику, начинаете пороть чушь. MAC адрес должен быть уникальным в мире. И все. Другой вопрос, что можно объяснить почему.

раскрыть ветку (8)
3
Автор поста оценил этот комментарий

А я вот возьму и перенастрою MAC-адрес в своём домашнем компе на тот же самый что и был в моей дохлой сетевухе 5 лет назад. Что при этом случится - сломается сетка? За мной прилетит полиция MAC-адресов? Выпишет штраф RIPE?

А как насчёт виртуализации - там раздаются виртуальные MAC-адреса, кто будет следить за тем чтобы они были "уникальными в мире"?

раскрыть ветку (4)
Автор поста оценил этот комментарий

Никто не запрещает вам и IP адрес выставить в 8.8.8.8. И настроить на этот блок сеть и прописать маршруты нормально. И это даже будет работать за натом почти корректно. То есть и IP адреса тоже не должны быть уникальными?

раскрыть ветку (3)
Автор поста оценил этот комментарий

Адреса должны быть уникальными только внутри сети, всё остальное можно настроить с изрядной толикой гемора, как вы собственно и описали.

раскрыть ветку (2)
Автор поста оценил этот комментарий

Ну удачи.


google-public-dns-a.google.com

Address: 8.8.8.8


C учетом того что IP - глобальное адресное пространство то и каждый адрес должен быть уникальным. NAT/PAT - технологии которые не от хорошей жизни появились.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Да я вполне себе знаю. Можно настроить с помощью двойного НАТа. Есть ещё и 8.8.4.4 :)

Вообще ситуация с подобными НАТ конструкциями зачастую встречается при настройке VPN с сетками находящимися в одинаковых диапазонах IP адресов.

1
Автор поста оценил этот комментарий

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

Лично видел примерно 2 десятка железок, у которых был одинаковый MAC-адрес. Вообще одинаковый.

раскрыть ветку (2)
Автор поста оценил этот комментарий

Это кстати записано во втором бите MAC-адреса. Если он 0 - адрес глобально администрируемый, если он 1 - адрес локально администрируемый.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Ну, формально прав и ты, и он.

Просто говорили о разных типах маков.

1
DELETED
Автор поста оценил этот комментарий
Если про уровни говорить, то можно и про среды передачи, и про кодирование, и про протоколы.
Да уж, интересная область.
Автор поста оценил этот комментарий

Я, кстати, видел такие устройства, у которых 1 мак был на всех устройствах. Да и способ записи там отличался от стандартного.

раскрыть ветку (3)
2
Автор поста оценил этот комментарий

А какой стандартный, если не секрет? Для меня равноправны два часто встречающихся (по байту через двоеточие и по два байта через точку).

раскрыть ветку (2)
2
Автор поста оценил этот комментарий

Насколько знаю, стандарта на запись маков нет, во всех источниках упоминаются общепринятые способы записи в виде 16-ричных цифр с разделителями (двоеточие или тире) или без разделителей.


В основном встречаются

ec:43:f6:db:22:dd

EC-43-F6-DB-22-DD

ec43.f6db.22dd


где-то в программах/исходниках драйверов можно встретить и в виде 16-ричной записи числа 0xEC43F6DB22DD которым адрес на самом деле и является.

Автор поста оценил этот комментарий

Стандартный, и наиболее чаще встречающийся - все таки через двоеточие.

Вернее, они оба допускаются стандартом. Но чаще встречается именно этот вид.

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку