Почему пакеты mDNS достигают моего устройства с маской подсети 255.255.255.255?

Вопрос или проблема

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

Во-первых, нет оснований для того, чтобы такой план сработал. Подумайте, что с “типичными” масками подсети, такими как 255.255.255.0, вы уже регулярно получаете пакеты вне подсети, со всего Интернета (например, от веб-серверов, с которыми взаимодействует ваш браузер). Это буквально то, как работает Интернет.

Это также относится к многоадресной рассылке. Несмотря на то, что mDNS специально является “link-local”, IP-многоадресная рассылка в общем случае маршрутизируется – она была даже задумана так, чтобы ее можно было передавать по всему Интернету (см. ‘Mbone’), и сегодня все еще есть провайдеры, которые маршрутизируют многоадресные пакеты между клиентами. Так что, даже если ваш mDNS-программное обеспечение может отказаться обрабатывать пакеты mDNS вне подсети, нет причины, чтобы оно не смогло их принять.

Во-вторых, маска подсети только информирует ваше устройство, куда оно может отправлять пакеты. (Она фактически является сокращением для маршрута ‘on-link’ или ‘device’ в подсеть.) Она никак не связана с их получением и полностью внутренна для вашего устройства: остальная сеть вообще не знает, какую маску подсети вы настроили.

Пакеты в рамках локальной подсети доставляются не по IP-адресу, а по MAC-адресу. Ethernet-коммутаторы особо не заботятся о целевом IP-адресе (и о исходном IP) – это нормально, когда на Ethernet находятся пакеты, которые адресованы на уровне MAC устройству A, но являются чем-то совершенно другим на IP-уровне.

(Действительно, так используются шлюзы (роутеры): когда вам нужно отправить пакет на superuser.com, он адресован IP-адресу superuser.com, но MAC-адресу вашего маршрутизатора по умолчанию. Вот почему существует ARP и вот почему поле “Шлюз по умолчанию” необходимо: оно указывает ОС, через MAC-адрес какого устройства следует отправлять интернет-пакеты.)

Так что, если пакет адресован специальным “Бродкаст” или “Многоадресным” MAC-адресам, Ethernet-коммутаторы доставят его на все порты (или на все подписанные порты), независимо от его IP-источника или назначения; аналогично будут вести себя и точки доступа Wi-Fi. И как только пакет передан вам, у вас нет выбора, кроме как его принять – ОС может отказаться обрабатывать его, например, если правила брандмауэра его отвергают, но она не может отказаться его принять.

Как правило, инструменты захвата пакетов (например, Wireshark) получают свои данные на ранней стадии, до какой-либо фильтрации брандмауэром, не говоря уже о другой обработке, так что даже нежелательные пакеты будут отображаться в Wireshark вне зависимости от всего остального.

Единственный способ надежно изолировать хосты – это сделать это на уровне ваших Ethernet-коммутаторов/роутеров (то есть “изоляция второго уровня”). Чаще всего это достигается путем создания VLAN-ов на коммутаторе Ethernet – одна IP-подсеть на каждый VLAN – если это поддерживается вашим роутером; или то же самое с отдельными физическими коммутаторами, которые подключаются в отдельные порты на роутере (то есть не в коммутируемые порты, как у домашних роутеров).

Ответ или решение

Вопрос о том, почему пакеты mDNS достигают устройства, настроенного с маской подсети 255.255.255.255, на первый взгляд может показаться странным. Однако для полного понимания этого явления нужно рассмотреть несколько аспектов работы сетевых технологий и особенностей, связанных с mDNS и сетями в целом.

Теория

Маска подсети и её назначение

Маска подсети используется для определения части IP-адреса, которая идентифицирует сеть, и части, которая идентифицирует конкретное устройство внутри этой сети. В случае маски 255.255.255.255, все биты являются частью идентификатора устройства, а не сети, что обозначает адрес как одиночный хост. Такое устройство будет предпочитать использование маршрутных записей для определения ближайших маршрутов передачи пакетов.

Пример с IP и MAC адресами

Хотя это может создать впечатление, что устройство изолировано и не должно получать данные из других сегментов сети, важно понимать, что Ethernet работает на другом уровне, используя MAC-адреса. На уровне Ethernet, маршрутизация пакетов осуществляется по MAC-адресам, а не по IP-адресам. Переключатели Ethernet не учитывают IP-адреса при передаче данных в пределах локальной сети — они проверяют MAC-адреса, что позволяет пакетам достигать всех устройств, если они адресованы на широковещательный или многоадресный MAC-адрес.

Протокол mDNS

Протокол mDNS, или Multicast DNS, используется для разрешения имён в пределах локальной сети без необходимости в центральном DNS-сервере. mDNS использует метод многоадресной передачи на IP-адрес 224.0.0.251 с UDP портом 5353. Пакеты мDNS концептуально адресованы всем устройствам в локальной сети, что использует многоадресную передачу, игнорируя концепцию подсетей на уровне IP.

Применение

Когда рассматривается взаимодействие mDNS на сетевом уровне, необходимо учитывать, что:

  1. Доставка пакетов: Пакеты mDNS, как и любые другие широковещательные или многоадресные пакеты, передаются всем устройства по сети Ethernet, которые могут принимать и обрабатывать такие типы сообщений. Ethernet-переключатель передаст эти пакеты всем подключённым устройствам или по крайней мере всем устройствам, которые подписаны на этот многоадресный адрес.

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

  3. Обработка пакетов устройством: Даже если устройства и получают нежелательные пакеты mDNS, они могут быть отфильтрованы с помощью брандмауэра. Это предотвратит дальнейшую обработку таких пакетов приложениями, но не помешает их приёму на уровне аппаратуры.

  4. Использование инструментов анализа трафика: Инструменты типа Wireshark получают копии всех пакетов, поступающих на сетевой интерфейс, до применения брандмауэрных фильтров. Это значит, что даже нежелательные пакеты будут отображаться в таких инструментах, что является полезным для диагностики и анализа сетевого трафика.

Заключение

Изоляция устройства от сети на уровне IP посредством применения маски подсети 255.255.255.255 не способна предотвратить получение пакетов, предназначенных для всех устройств в пределах физической сети, таких как mDNS сообщения. Для эффективной изоляции требуются меры на уровне второго уровня OSI, такие как использование VLAN или отдельных физических сетевых устройств (например, маршрутизаторов и коммутаторов). В случае, когда изоляция является критически важной, рекомендуется разграничение сетевого трафика между различными сегментами сети с помощью управляемых коммутаторов и маршрутизаторов.

Оцените материал
Добавить комментарий

Капча загружается...