Компьютерные сети
Канальный уровень и Ethernet
2018 год, крупный банк. Атакующий получает физический доступ к сетевому порту в коридоре. Через ARP-spoofing он перехватывает трафик целого офисного сегмента. Атака работает потому, что MAC-адреса не аутентифицированы, а broadcast-домен слишком большой. Понимание канального уровня - это не академическая теория, это основа сетевой безопасности.
- **ARP-spoofing**: подмена MAC в ARP-ответах - перехват трафика в локальной сети без взлома паролей
- **CAM-table flooding**: заполнение MAC-таблицы коммутатора -> он начинает флудить как хаб
- **VLAN hopping**: атаки на trunk-порты для перехода между изолированными сегментами
- **Jumbo frames в дата-центрах**: 9000 байт вместо 1500 снижает CPU overhead при 10/40/100 Гбит/с трафике
Предварительные знания
Исторический контекст
Роберт Меткалф изобрёл Ethernet в 1973 году в Xerox PARC, вдохновившись ALOHAnet. Первый Ethernet работал на коаксиальном кабеле со скоростью 2.94 Мбит/с и использовал CSMA/CD для разрешения коллизий. В 1980 году DEC, Intel и Xerox стандартизировали DIX Ethernet (10 Мбит/с). Сегодня Ethernet - самый распространённый стандарт локальных сетей, определяющий всё от дата-центров до домашних роутеров.
MAC-адрес: уникальный идентификатор
2018 год. Атака ARP-spoofing в корпоративной сети - злоумышленник рассылает поддельные ARP-ответы, подменяя свой MAC-адрес адресом шлюза. Весь трафик офиса идёт через его машину. Атака возможна потому, что MAC-адреса не аутентифицированы на канальном уровне. Чтобы понять почему - нужно разобраться, что такое MAC.
Первый байт MAC содержит флаги: бит 0 (LSB) - unicast (0) или multicast (1); бит 1 - глобально уникальный (0) или локально назначенный (1). Broadcast-адрес: FF:FF:FF:FF:FF:FF.
MAC-адрес работает только в пределах одного сегмента сети (broadcast domain). Когда пакет пересекает маршрутизатор, MAC-адреса отправителя и получателя перезаписываются - остаётся только IP-адрес.
Пакет из Москвы в Нью-Йорк проходит через 15 маршрутизаторов. Что происходит с MAC-адресами на каждом маршрутизаторе?
Ethernet-фрейм: структура кадра
Ethernet-фрейм - это PDU канального уровня. Он содержит MAC-адреса источника и назначения, полезную нагрузку (обычно IP-пакет) и контрольную сумму CRC-32 для проверки целостности. Каждый байт зафиксирован стандартом IEEE 802.3.
MTU (Maximum Transmission Unit) Ethernet = 1500 байт. Если IP-пакет больше - он фрагментируется. Jumbo Frames (до 9000 байт) используются в дата-центрах для снижения overhead-а при большом трафике.
FCS (Frame Check Sequence) - это CRC-32 контрольная сумма, которую вычисляет отправитель и проверяет получатель. Если не совпадает - фрейм отбрасывается без уведомления. На L2 нет механизма повторной передачи - это задача TCP на L4.
Wireshark показывает фрейм с FCS mismatch. Что произойдёт с этим фреймом?
CSMA/CD: доступ к разделяемой среде
До появления коммутаторов (до 1990-х) все устройства в Ethernet делили одну шину - коаксиальный кабель. Если два устройства начинали передавать одновременно, сигналы накладывались - коллизия. CSMA/CD (Carrier Sense Multiple Access with Collision Detection) - алгоритм, который решал, кто и когда говорит.
Современный Ethernet - full duplex с коммутаторами. Каждое устройство имеет выделенный канал к коммутатору, коллизий нет. CSMA/CD не нужен и отключён. Но Wi-Fi до сих пор использует CSMA/CA (Avoidance).
Wi-Fi использует CSMA/CA (Collision Avoidance) вместо CD - нельзя обнаружить коллизию в радиоэфире, потому что передатчик 'оглушает' сам себя. Поэтому Wi-Fi старается избежать коллизии заранее через RTS/CTS и случайные паузы.
Офисная сеть 2024 года: все ПК через коммутатор. Активен ли CSMA/CD?
Collision Domain и Broadcast Domain
Два ключевых понятия сегментации сети: Collision Domain (область, где возможна коллизия) и Broadcast Domain (область, куда доходят broadcast-фреймы). Коммутатор разделяет первое, маршрутизатор - второе. Эта разница определяет дизайн любой корпоративной сети.
Broadcast Domain - область, где распространяются broadcast-фреймы (FF:FF:FF:FF:FF:FF). Коммутатор не ограничивает broadcast - все порты получат его. Разделяет broadcast domain только маршрутизатор или VLAN.
Чем больше broadcast domain - тем больше 'шума' в сети. ARP-запросы, DHCP-discover, NetBIOS - всё это broadcast. В сети на 1000 устройств broadcast storm может полностью положить сеть.
Коммутатор полностью изолирует устройства - broadcast не проходит между портами
Коммутатор изолирует unicast-трафик через MAC-таблицу, но broadcast (FF:FF:FF:FF:FF:FF) рассылается на все порты VLAN
Broadcast используется для ARP (кто имеет IP X?), DHCP Discover и других протоколов. Коммутатор обязан его форвардить по определению broadcast. Для изоляции broadcast нужны VLAN или маршрутизатор.
Какое устройство разделяет broadcast domain?
Ключевые идеи
- MAC-адрес - 48-битный идентификатор сетевой карты (OUI + NIC). Работает только в локальной сети, перезаписывается на каждом маршрутизаторе
- Ethernet-фрейм - контейнер с MAC-адресами (Src/Dst), EtherType, Payload и FCS (CRC-32). MTU = 1500 байт
- FCS mismatch - фрейм молча отбрасывается без уведомления. Надёжность - задача TCP
- CSMA/CD - алгоритм для shared media (хабы). В full-duplex коммутаторах не нужен
- Коммутатор разделяет collision domain (каждый порт отдельный), маршрутизатор - broadcast domain
Что дальше
Освоили адресацию и фреймы. Следующий шаг - устройства, которые их обрабатывают:
- Коммутаторы — MAC-таблица, STP, VLAN - умная коммутация фреймов
- ARP протокол — Разрешение IP в MAC - мост между L2 и L3
Вопросы для размышления
- Почему нельзя использовать MAC-адрес для маршрутизации в интернете, если он уникален?
- ARP-таблица имеет TTL (время жизни записей). Почему нельзя хранить ARP-записи вечно?
- Если broadcast domain очень большой - как это влияет на производительность сети и почему?