Как узнать, нахожусь ли я за NAT? (РЕШЕНО)
Что такое NAT
NAT — это технология, которая позволяет множеству устройств выходить в Интернет используя один и тот же IP адрес. Кстати, в вашей локальной сети, в которой имеется роутер, уже применяется NAT — именно благодаря этому все ваши устройства могут выходить в Глобальную сеть и не нужно каждому из них иметь внешний IP.
Как вы понимаете, это часто используемая технология. Возможно, вы много лет ею пользуетесь, даже не зная про неё. Она действительно приносит очень много пользы, но у неё есть недостаток — она позволяет делать подключения «в одну сторону». То есть если ваш компьютер инициализировал подключение к Интернету, то он отправит его роутеру, роутер сделает две вещи: 1) запомнит, что запрос пришёл с определённого устройства и 2) отправить этот запрос в Интернет. Когда придёт ответ, роутер всё ещё «помнит», что этот запрос был сделан для определённого устройства в локальной сети, и отправит ответ именно этому устройству. И так происходит каждый раз.
Но вот если на роутер придёт новый сетевой запрос из Глобальной сети (не ответ на запрос, а именно новый запрос), то роутер банально не знает, для кого в локальной сети он предназначен (если не настроена переадресация портов). Поэтому с этим поступившим запросом роутер ничего не делает. Многие Интернет-провайдеры также используют NAT. И работа происходит по точно такому же принципу — ваши сетевые запросы уходят в Глобальную сеть и вы без проблем получаете сетевые ответы, но новые запросы из Интернета к вашему компьютеру не могут пройти через NAT.
Поэтому если вы хотите на своём домашнем компьютере запустить сетевой сервис (например, веб-сервер) и хотите, чтобы был доступен из Глобальной сети Интернет, то вам нужно убедиться, что вам компьютер не за NAT сетью Интернет-провайдера.
Как узнать, использует ли мой Интернет-провайдер NAT
На самом деле непросто с полной уверенностью сказать, находится ли компьютер за NAT, но есть косвенные признаки, позволяющие с высокой степенью вероятности утверждать, что Интернет-провайдер применяет NAT для своих пользователей.
Поиск локальных IP адресов в сетевом маршруте
С помощью трассировки маршрута можно узнать, через узлы с какими IP адресами проходит сетевой трафик.
Чтобы запустить трассировку маршрута в Windows откройте команду строку (для этого нажмите Win+x и выберите пункт «Windows PowerShell») и запустите команду:
Для запуска трассировки в Linux запустите команду:
Если среди IP адресов, через которые проходит сетевой трафик, вы увидите входящие в следующие диапазоны, то скорее всего вы находитесь за NAT:
На этом скриншоте сразу два IP адреса из указанных диапазонов: 192.168.1.1 и 10.128.0.1.

192.168.1.1 — это роутер (как было сказано выше, роутер также использует NAT, поэтому если вы подключаете свой компьютер к сети Интернет-провайдера через роутер, то вам нужно настроить проброску (форвардинг) портов.
А другой IP 10.128.0.1 принадлежит локальной сети Интернет-провайдера. Поскольку локальные (приватные) IP адреса являются немаршрутизируемыми, можно с высокой долей вероятности утверждать, что используется NAT.
На следующем скриншоте виден роутер и целых три локальных IP из диапазона 10.0.0.0/8. Опять же можно утверждать, что NAT используется.

На этом скриншоте виден роутер (192.168.1.1), но среди последующих IP отсутствуют локальные. Означает ли это, что Интернет-провайдер не использует NAT? Нет. Если есть присутствуют локальные IP адреса, то почти наверняка NAT есть, но если локальных нет, то NAT может быть, а может отсутствовать.

Поэтому нужно сделать ещё один тест.
Трассировка до себя
Сервис «Трассировка до себя» позволяет косвенно определить что Интернет-провайдер использует NAT.
На странице сервиса вы можете запустить трассировку от сервера до вашего компьютера. Результат трассировки позволит косвенно определить, использует ли ваш Интернет-провайдер NAT.
Если в результатах трассировки показываются все узлы, как на скриншоте ниже, то это означает, что у вас белый (внешний) IP адрес с вероятностью 100%.

Если же трассировка заканчивается строками
как на скриншоте ниже:

То это означает, что скорее всего ваш компьютер находится за NAT.
Но сказанное не всегда верно — трассировка может не показать узлы и по другим причинам, не только из-за NAT.
Заключение
Комбинируя эти два способа, можно с высокой степенью вероятности определять, используется ли NAT в вашем сетевом подключении.
ИТ База знаний
Полезно
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
🔥 Популярное
Модель OSI – это просто!
TCP и UDP – в чем разница?
👌 Похожее
Конвергенция EIGRP – настройка таймеров
Основы IPv4 Access Control Lists
Установка K-значений в EIGRP
Про реактивное и упреждающее распределение достижимости в сетях
NAT на пальцах: что это?
2 32 или 4 294 967 296 IPv4 адресов это много? Кажется, что да. Однако с распространением персональных вычислений, мобильных устройств и быстрым ростом интернета вскоре стало очевидно, что 4,3 миллиарда адресов IPv4 будет недостаточно. Долгосрочным решением было IPv6, но требовались более быстрое решение для устранения нехватки адресов. И этим решением стал NAT (Network Address Translation).
Онлайн курс по Кибербезопасности
Изучи хакерский майндсет и научись защищать свою инфраструктуру! Самые важные и актуальные знания, которые помогут не только войти в ИБ, но и понять реальное положение дел в индустрии
Что такое NAT
Сети обычно проектируются с использованием частных IP адресов. Это адреса 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16. Эти частные адреса используются внутри организации или площадки, чтобы позволить устройствам общаться локально, и они не маршрутизируются в интернете. Чтобы позволить устройству с приватным IPv4-адресом обращаться к устройствам и ресурсам за пределами локальной сети, приватный адрес сначала должен быть переведен на общедоступный публичный адрес.
И вот как раз NAT переводит приватные адреса, в общедоступные. Это позволяет устройству с частным адресом IPv4 обращаться к ресурсам за пределами его частной сети. NAT в сочетании с частными адресами IPv4 оказался полезным методом сохранения общедоступных IPv4-адресов. Один общедоступный IPv4-адрес может быть использован сотнями, даже тысячами устройств, каждый из которых имеет частный IPv4-адрес. NAT имеет дополнительное преимущество, заключающееся в добавлении степени конфиденциальности и безопасности в сеть, поскольку он скрывает внутренние IPv4-адреса из внешних сетей.
Маршрутизаторы с поддержкой NAT могут быть настроены с одним или несколькими действительными общедоступными IPv4-адресами. Эти общедоступные адреса называются пулом NAT. Когда устройство из внутренней сети отправляет трафик из сети наружу, то маршрутизатор с поддержкой NAT переводит внутренний IPv4-адрес устройства на общедоступный адрес из пула NAT. Для внешних устройств весь трафик, входящий и выходящий из сети, выглядит имеющим общедоступный IPv4 адрес.
Маршрутизатор NAT обычно работает на границе Stub-сети. Stub-сеть – это тупиковая сеть, которая имеет одно соединение с соседней сетью, один вход и выход из сети.
Когда устройство внутри Stub-сети хочет связываться с устройством за пределами своей сети, пакет пересылается пограничному маршрутизатору, и он выполняет NAT-процесс, переводя внутренний частный адрес устройства на публичный, внешний, маршрутизируемый адрес.
Терминология NAT
В терминологии NAT внутренняя сеть представляет собой набор сетей, подлежащих переводу. Внешняя сеть относится ко всем другим сетям.
При использовании NAT, адреса IPv4 имеют разные обозначения, основанные на том, находятся ли они в частной сети или в общедоступной сети (в интернете), и является ли трафик входящим или исходящим.
NAT включает в себя четыре типа адресов:
При определении того, какой тип адреса используется, важно помнить, что терминология NAT всегда применяется с точки зрения устройства с транслированным адресом:
Рассмотрим это на примере схемы.
На рисунке ПК имеет внутренний локальный (Inside local) адрес 192.168.1.5 и с его точки зрения веб-сервер имеет внешний (outside) адрес 208.141.17.4. Когда с ПК отправляются пакеты на глобальный адрес веб-сервера, внутренний локальный (Inside local) адрес ПК транслируется в 208.141.16.5 (inside global). Адрес внешнего устройства обычно не переводится, поскольку он является общедоступным адресом IPv4.
Стоит заметить, что ПК имеет разные локальные и глобальные адреса, тогда как веб-сервер имеет одинаковый публичный IP адрес. С его точки зрения трафик, исходящий из ПК поступает с внутреннего глобального адреса 208.141.16.5. Маршрутизатор с NAT является точкой демаркации между внутренней и внешней сетями и между локальными и глобальными адресами.
Термины, inside и outside, объединены с терминами local и global, чтобы ссылаться на конкретные адреса. На рисунке маршрутизатор настроен на предоставление NAT и имеет пул общедоступных адресов для назначения внутренним хостам.
На рисунке показано как трафик отправляется с внутреннего ПК на внешний веб-сервер, через маршрутизатор с поддержкой NAT, и высылается и переводится в обратную сторону.
Рассмотрим весь путь прохождения пакета. ПК с адресом 192.168.1.5 пытается установить связь с веб-сервером 208.141.17.4. Когда пакет прибывает в маршрутизатор с поддержкой NAT, он считывает IPv4 адрес назначения пакета, чтобы определить, соответствует ли пакет критериям, указанным для перевода. В этом пример исходный адрес соответствует критериям и переводится с 192.168.1.5 (Inside local address) на 208.141.16.5. (Inside global address). Роутер добавляет это сопоставление локального в глобальный адрес в таблицу NAT и отправляет пакет с переведенным адресом источника в пункт назначения. Веб-сервер отвечает пакетом, адресованным внутреннему глобальному адресу ПК (208.141.16.5). Роутер получает пакет с адресом назначения 208.141.16.5 и проверяет таблицу NAT, в которой находит запись для этого сопоставления. Он использует эту информацию и переводит обратно внутренний глобальный адрес (208.141.16.5) на внутренний локальный адрес (192.168.1.5), и пакет перенаправляется в сторону ПК.
Типы NAT
Существует три типа трансляции NAT:
Static NAT
Статический NAT использует сопоставление локальных и глобальных адресов один к одному. Эти сопоставления настраиваются администратором сети и остаются постоянными. Когда устройства отправляют трафик в Интернет, их внутренние локальные адреса переводятся в настроенные внутренние глобальные адреса. Для внешних сетей эти устройства имеют общедоступные IPv4-адреса. Статический NAT особенно полезен для веб-серверов или устройств, которые должны иметь согласованный адрес, доступный из Интернета, как например веб-сервер компании. Статический NAT требует наличия достаточного количества общедоступных адресов для удовлетворения общего количества одновременных сеансов пользователя.
Статическая NAT таблица выглядит так:
Dynamic NAT
Динамический NAT использует пул публичных адресов и назначает их по принципу «первым пришел, первым обслужен». Когда внутреннее устройство запрашивает доступ к внешней сети, динамический NAT назначает доступный общедоступный IPv4-адрес из пула. Подобно статическому NAT, динамический NAT требует наличия достаточного количества общедоступных адресов для удовлетворения общего количества одновременных сеансов пользователя.
Динамическая NAT таблица выглядит так:
Port Address Translation (PAT)
PAT транслирует несколько частных адресов на один или несколько общедоступных адресов. Это то, что делают большинство домашних маршрутизаторов. Интернет-провайдер назначает один адрес маршрутизатору, но несколько членов семьи могут одновременно получать доступ к Интернету. Это наиболее распространенная форма NAT.
С помощью PAT несколько адресов могут быть сопоставлены с одним или несколькими адресами, поскольку каждый частный адрес также отслеживается номером порта. Когда устройство инициирует сеанс TCP/IP, оно генерирует значение порта источника TCP или UDP для уникальной идентификации сеанса. Когда NAT-маршрутизатор получает пакет от клиента, он использует номер своего исходного порта, чтобы однозначно идентифицировать конкретный перевод NAT. PAT гарантирует, что устройства используют разный номер порта TCP для каждого сеанса. Когда ответ возвращается с сервера, номер порта источника, который становится номером порта назначения в обратном пути, определяет, какое устройство маршрутизатор перенаправляет пакеты.
Картинка иллюстрирует процесс PAT. PAT добавляет уникальные номера портов источника во внутренний глобальный адрес, чтобы различать переводы.
Поскольку маршрутизатор обрабатывает каждый пакет, он использует номер порта (1331 и 1555, в этом примере), чтобы идентифицировать устройство, с которого выслан пакет.
Для исходного адреса маршрутизатор переводит внутренний локальный адрес во внутренний глобальный адрес с добавленным номером порта. Адрес назначения не изменяется, но теперь он называется внешним глобальным IP-адресом. Когда веб-сервер отвечает, путь обратный.
В этом примере номера портов клиента 1331 и 1555 не изменялись на маршрутизаторе с NAT. Это не очень вероятный сценарий, потому что есть хорошая вероятность того, что эти номера портов уже были прикреплены к другим активным сеансам. PAT пытается сохранить исходный порт источника. Однако, если исходный порт источника уже используется, PAT назначает первый доступный номер порта, начиная с начала соответствующей группы портов 0-511, 512-1023 или 1024-65535. Когда портов больше нет, и в пуле адресов имеется более одного внешнего адреса, PAT переходит на следующий адрес, чтобы попытаться выделить исходный порт источника. Этот процесс продолжается до тех пор, пока не будет доступных портов или внешних IP-адресов.
Подведем итоги в сравнении NAT и PAT. Как видно из таблиц, NAT переводит IPv4-адреса на основе 1:1 между частными адресами IPv4 и общедоступными IPv4-адресами. Однако PAT изменяет как сам адрес, так и номер порта. NAT перенаправляет входящие пакеты на их внутренний адрес, ориентируясь на входящий IP адрес источника, заданный хостом в общедоступной сети, а с PAT обычно имеется только один или очень мало публично открытых IPv4-адресов, и входящие пакеты перенаправляются, ориентируясь на NAT таблицу маршрутизатора.
А что относительно пакетов IPv4, содержащих данные, отличные от TCP или UDP? Эти пакеты не содержат номер порта уровня 4. PAT переводит наиболее распространенные протоколы, переносимые IPv4, которые не используют TCP или UDP в качестве протокола транспортного уровня. Наиболее распространенными из них являются ICMPv4. Каждый из этих типов протоколов по-разному обрабатывается PAT. Например, сообщения запроса ICMPv4, эхо-запросы и ответы включают идентификатор запроса Query ID. ICMPv4 использует Query ID. для идентификации эхо-запроса с соответствующим ответом. Идентификатор запроса увеличивается с каждым отправленным эхо-запросом. PAT использует идентификатор запроса вместо номера порта уровня 4.
Преимущества и недостатки NAT
NAT предоставляет множество преимуществ, в том числе:
Но у NAT есть некоторые недостатки. Тот факт, что хосты в Интернете, по-видимому, напрямую взаимодействуют с устройством с поддержкой NAT, а не с фактическим хостом внутри частной сети, создает ряд проблем:
Мы разобрали основные принципы работы NAT. Хотите больше? Прочитайте нашу статью по настройке NAT на оборудовании Cisco.
Онлайн курс по Кибербезопасности
Изучи хакерский майндсет и научись защищать свою инфраструктуру! Самые важные и актуальные знания, которые помогут не только войти в ИБ, но и понять реальное положение дел в индустрии
Всё, что вы хотели знать о МАС адресе

Разберемся, что это такое.
МАС адрес (media access control address) – уникальный идентификатор, назначенный сетевому адаптеру, применяется в сетях стандартов IEEE 802, в основном Ethernet, Wi-Fi и Bluetooth. Официально он называется «идентификатором типа EUI-48». Из названия очевидно, что адрес имеет длину в 48 бит, т.е. 6 байт. Общепринятого стандарта на написание адреса нет (в противоположность IPv4 адресу, где октеты всегда разделяют точками).Обычно он записывается как шесть шестнадцатеричных чисел, разделенных двоеточием: 00:AB:CD:EF:11:22, хотя некоторые производители оборудования предпочитают запись вида 00-AB-CD-EF-11-22 и даже 00ab.cdef.1122.
Исторически адреса прошивались в ПЗУ чипсета сетевой карты без возможности их модификации без флеш-программатора, но в настоящее время адрес может быть изменен программно, из операционной системы. Задать вручную МАС адрес сетевой карте можно в Linux и MacOS (всегда), Windows (почти всегда, если позволит драйвер), Android (только рутованный); с iOS (без рута) подобный трюк невозможен.
Структура адреса
Адрес состоит из части идентификатора производителя, OUI, и идентификатора, присваиваемого производителем. Назначением идентификаторов OUI (Organizationally Unique Identifier) занимается организация IEEE. На самом деле его длина может быть не только 3 байта (24 бита), а 28 или 36 бит, из которых формируются блоки (MAC Address Block, МА) адресов типов Large (MA-L), Medium (MA-M) и Small (MA-S) соответственно. Размер выдаваемого блока, в таком случае, составит 24, 20, 12 бит или 16 млн, 1 млн, 4 тыс. штук адресов. В настоящий момент распределено порядка 38 тысяч блоков, их можно посмотреть многочисленными онлайн-инструментами, например у IEEE или Wireshark.
Кому принадлежат адреса
Несложная обработка публично доступной базы данных выгрузки IEEE даёт довольно много информации. Например, некоторые организации забрали себе много OUI блоков. Вот наши герои:
| Вендор | Число блоков/записей | Число адресов, млн. |
|---|---|---|
| Cisco Systems Inc | 888 | 14208 |
| Apple | 772 | 12352 |
| Samsung | 636 | 10144 |
| Huawei Technologies Co.Ltd | 606 | 9696 |
| Intel Corporation | 375 | 5776 |
| ARRIS Group Inc. | 319 | 5104 |
| Nokia Corporation | 241 | 3856 |
| Private | 232 | 2704 |
| Texas Instruments | 212 | 3392 |
| zte corporation | 198 | 3168 |
| IEEE Registration Authority | 194 | 3072 |
| Hewlett Packard | 149 | 2384 |
| Hon Hai Precision | 136 | 2176 |
| TP-LINK | 134 | 2144 |
| Dell Inc. | 123 | 1968 |
| Juniper Networks | 110 | 1760 |
| Sagemcom Broadband SAS | 97 | 1552 |
| Fiberhome Telecommunication Technologies Co. LTD | 97 | 1552 |
| Xiaomi Communications Co Ltd | 88 | 1408 |
| Guangdong Oppo Mobile Telecommunications Corp.Ltd | 82 | 1312 |
У Google их всего 40, и это не удивительно: они сами производят не так много сетевых устройств.
Когда закончатся МАС-адреса
Мы все порядком устали от не прекращающихся уже лет 10 историй о том, что «IPv4 адреса вот-вот кончатся». Да, новые блоки IPv4 получить уже непросто. При этом известно, что IP адреса распределены крайне неравномерно; существуют гигантские и мало использованные блоки, принадлежащие крупным корпорациям и государственным учреждением США, впрочем, без особой надежды на их перераспределение в пользу нуждающихся. Распространение NAT, CG-NAT и IPv6 сделало проблему нехватки публичных адресов не такой острой.
В МАС адресе 48 бит, из которых «полезными» можно считать 46 (почему? читай дальше), что даёт 2 46 или 10 14 адресов, что в 2 14 раз больше IPv4 адресного пространства.
В настоящий момент распределено примерно полтриллиона адресов, или лишь 0.73% от всего объёма. До исчерпания MAC адресов ещё очень, очень далеко.
Случайность бит
Можно предположить, что OUI распределены случайно, а вендор затем также случайно назначает адреса индивидуальным сетевым устройствам. Так ли это? Посмотрим на распределение бит в имеющихся в моём распоряжении базах МАС адресов 802.11-устройств, собранных работающими системами авторизации в беспроводных сетях WNAM. Адреса принадлежат реальным устройствам, подключавшихся к Wi-Fi на протяжении нескольких лет в трех странах. В дополнение идет маленькая база 802.3-устройств проводной ЛВС.
Разобьем каждый МАС-адрес (шесть байт) каждой из выборок на биты побайтово, и посмотрим на частоту появления бита «1» в каждой из 48 позиций. Если бит выставлен совершенно произвольным образом, то вероятность получить «1» должна быть 50%.
| Выборка Wi-Fi №1 (РФ) | Выборка Wi-Fi №2 (Беларусь) | Выборка Wi-Fi №3 (Узбекистан) | Выборка LAN (РФ) | |
|---|---|---|---|---|
| Число записей в базе | 5929000 | 1274000 | 366000 | 1000 |
| Номер бита: | % бит «1» | % бит «1» | % бит «1» | % бит «1» |
| 1 | 48.6% | 49.2% | 50.7% | 28.7% |
| 2 | 44.8% | 49.1% | 47.7% | 30.7% |
| 3 | 46.7% | 48.3% | 46.8% | 35.8% |
| 4 | 48.0% | 48.6% | 49.8% | 37.1% |
| 5 | 45.7% | 46.9% | 47.0% | 32.3% |
| 6 | 46.6% | 46.7% | 47.8% | 27.1% |
| 7 | 0.3% | 0.3% | 0.2% | 0.7% |
| 8 | 0.0% | 0.0% | 0.0% | 0.0% |
| 9 | 48.1% | 50.6% | 49.4% | 38.1% |
| 10 | 49.1% | 50.2% | 47.4% | 42.7% |
| 11 | 50.8% | 50.0% | 50.6% | 42.9% |
| 12 | 49.0% | 48.4% | 48.2% | 53.7% |
| 13 | 47.6% | 47.0% | 46.3% | 48.5% |
| 14 | 47.5% | 47.4% | 51.7% | 46.8% |
| 15 | 48.3% | 47.5% | 48.7% | 46.1% |
| 16 | 50.6% | 50.4% | 51.2% | 45.3% |
| 17 | 49.4% | 50.4% | 54.3% | 38.2% |
| 18 | 49.8% | 50.5% | 51.5% | 51.9% |
| 19 | 51.6% | 53.3% | 53.9% | 42.6% |
| 20 | 46.6% | 46.1% | 45.5% | 48.4% |
| 21 | 51.7% | 52.9% | 47.7% | 48.9% |
| 22 | 49.2% | 49.6% | 41.6% | 49.8% |
| 23 | 51.2% | 50.9% | 47.0% | 41.9% |
| 24 | 49.5% | 50.2% | 50.1% | 47.5% |
| 25 | 47.1% | 47.3% | 47.7% | 44.2% |
| 26 | 48.6% | 48.6% | 49.2% | 43.9% |
| 27 | 49.8% | 49.0% | 49.7% | 48.9% |
| 28 | 49.3% | 49.3% | 49.7% | 55.1% |
| 29 | 49.5% | 49.4% | 49.8% | 49.8% |
| 30 | 49.8% | 49.8% | 49.7% | 52.1% |
| 31 | 49.5% | 49.7% | 49.6% | 46.6% |
| 32 | 49.4% | 49.7% | 49.5% | 47.5% |
| 33 | 49.4% | 49.8% | 49.7% | 48.3% |
| 34 | 49.7% | 50.0% | 49.6% | 44.9% |
| 35 | 49.9% | 50.0% | 50.0% | 50.6% |
| 36 | 49.9% | 49.9% | 49.8% | 49.1% |
| 37 | 49.8% | 50.0% | 49.9% | 51.4% |
| 38 | 50.0% | 50.0% | 49.8% | 51.8% |
| 39 | 49.9% | 50.0% | 49.9% | 55.7% |
| 40 | 50.0% | 50.0% | 50.0% | 49.5% |
| 41 | 49.9% | 50.0% | 49.9% | 52.2% |
| 42 | 50.0% | 50.0% | 50.0% | 53.9% |
| 43 | 50.1% | 50.0% | 50.3% | 56.1% |
| 44 | 50.1% | 50.0% | 50.1% | 45.8% |
| 45 | 50.0% | 50.0% | 50.1% | 50.1% |
| 46 | 50.0% | 50.0% | 50.1% | 49.5% |
| 47 | 49.2% | 49.4% | 49.7% | 45.2% |
| 48 | 49.9% | 50.1% | 50.7% | 54.6% |
Откуда такая несправедливость в 7 и 8 битах? Там почти всегда нули.
Действительно, стандарт определяет эти биты как специальные (Википедия):
Восьмой (с начала) бит первого байта МАС адреса называется Unicast/Multicast битом и определяет, какого типа кадр (фрейм) передается с этим адресом, обычный (0) или широковещательный (1) (мультикаст или броадкаст). Для обычного, unicast взаимодействия сетевого адаптера, этот бит выставлен в «0» во всех пакетах, им отправляемых.
Седьмой (с начала) бит первого байта МАС адреса называется U/L (Universal/Local) битом и определяет, является ли адрес глобально уникальным (0), или локально уникальным (1). По умолчанию, все «прошитые изготовителем» адреса глобально уникальны, поэтому подавляющее число собранных МАС адресов содержат седьмой бит выставленным в «0». В таблице присвоенных идентификаторов OUI только порядка 130 записей имеет U/L бит «1», и по всей видимости это блоки МАС адресов для специальных нужд.
С шестого по первый биты первого байта, биты второго и третьего байта в OUI идентификаторах, и тем более биты в 4-6 байтах адреса, назначаемые производителем, распределены более-менее равномерно.
Таким образом, в реальном МАС-адресе сетевого адаптера биты фактически равноценны и не несут технологического смысла, за исключением двух служебных бит старшего байта.
Распространенность
Интересно, какие производители беспроводного оборудования наиболее популярны? Объединим поиск по базе OUI с данными выборки №1.
| Вендор | Доля устройств, % |
|---|---|
| Apple | 26,09 |
| Samsung | 19,79 |
| Huawei Technologies Co. Ltd | 7,80 |
| Xiaomi Communications Co Ltd | 6,83 |
| Sony Mobile Communications Inc | 3,29 |
| LG Electronics (Mobile Communications) | 2,76 |
| ASUSTek COMPUTER INC. | 2,58 |
| TCT mobile ltd | 2,13 |
| zte corporation | 2,00 |
| не найден в базе IEEE | 1,92 |
| Lenovo Mobile Communication Technology Ltd. | 1,71 |
| HTC Corporation | 1,68 |
| Murata Manufactuaring | 1,31 |
| InPro Comm | 1,26 |
| Microsoft Corporation | 1,11 |
| Shenzhen TINNO Mobile Technology Corp. | 1,02 |
| Motorola (Wuhan) Mobility Technologies Communication Co. Ltd. | 0,93 |
| Nokia Corporation | 0,88 |
| Shanghai Wind Technologies Co. Ltd | 0,74 |
| Lenovo Mobile Communication (Wuhan) Company Limited | 0,71 |
Практика показывает, что чем зажиточнее контингент абонентов беспроводной сети в данном месте, тем больше доля устройств Apple.
Уникальность
Уникальны ли МАС адреса? В теории да, поскольку каждый из производителей устройств (владельцев блока МА) обязан обеспечивать уникальный адрес для каждого из выпускаемых им сетевых адаптеров. Однако некоторые производители чипов, а именно:
выставляют последние три байта МАС адреса в случайное число, по всей видимости, после каждой перезагрузки устройства. Таких адресов в моей выборке №1 нашлось 82 тысячи.
Поставить себе чужой, не уникальный адрес можно, конечно, путем целенаправленной его установки «как у соседа», определив его сниффером, или выбрав наугад. Также возможно случайно поставить себе не уникальный адрес, выполнив, например, восстановление бэкапа конфигурации какого-нибудь маршрутизатора вроде Mikrotik или OpenWrt.
Что будет, если в сети будет присутствовать два устройства с одним МАС адресом? Все зависит от логики сетевого оборудования (проводного роутера, контроллера беспроводной сети). Скорее всего, оба устройства или не будут работать, или будут работать с перебоями. С точки зрения стандартов IEEE, защиту от подделки МАС адресов предлагается решать при помощи, например, MACsec или 802.1Х.
Что, если поставить себе МАС с выставленным в «1» седьмым или восьмым битом, т.е. local или multicast-адрес? Скорее всего, ваша сеть на это не обратит внимания, но формально такой адрес не будет соответствует стандарту, и лучше так не делать.
Как работает рандомизация
Мы знаем, что с целью предотвратить отслеживание перемещения людей путем сканирования эфира и сбора МАС-операционные системы смартфонов уже несколько лет применяют технологию рандомизации. Теоретически, при сканировании эфира в поиске известных сетей смартфон отправляет пакет (группу пакетов) типа 802.11 probe request с МАС-адресом в качестве источника:
Включенная рандомизация позволяет указывать не «прошитый», а какой-то другой адрес источника пакета, меняющийся при каждом цикле сканирования, во времени или ещё как-то. Работает ли это? Посмотрим на статистику собранных МАС-адресов из эфира так называемым «Wi-Fi Радаром»:
| Вся выборка | Выборка только с нулевым 7м битом | |
|---|---|---|
| Число записей в базе | 3920000 | 305000 |
| Номер бита: | % бит «1» | % бит «1» |
| 1 | 66.1% | 43.3% |
| 2 | 66.5% | 43.4% |
| 3 | 31.7% | 43.8% |
| 4 | 66.6% | 46.4% |
| 5 | 66.7% | 45.7% |
| 6 | 31.9% | 46.4% |
| 7 | 92.2% | 0.0% |
| 8 | 0.0% | 0.0% |
| 9 | 67.2% | 47.5% |
| 10 | 32.3% | 45.6% |
| 11 | 66.9% | 45.3% |
| 12 | 32.3% | 46.8% |
| 13 | 32.6% | 50.1% |
| 14 | 33.0% | 56.1% |
| 15 | 32.5% | 45.0% |
| 16 | 67.2% | 48.3% |
| 17 | 33.2% | 56.9% |
| 18 | 33.3% | 56.8% |
| 19 | 33.3% | 56.3% |
| 20 | 66.8% | 43.2% |
| 21 | 67.0% | 46.4% |
| 22 | 32.6% | 50.1% |
| 23 | 32.9% | 51.2% |
| 24 | 67.6% | 52.2% |
| 25 | 49.8% | 47.8% |
| 26 | 50.0% | 50.0% |
| 27 | 50.0% | 50.2% |
| 28 | 50.0% | 49.8% |
| 29 | 50.0% | 49.4% |
| 30 | 50.0% | 50.0% |
| 31 | 50.0% | 49.7% |
| 32 | 50.0% | 49.9% |
| 33 | 50.0% | 49.7% |
| 34 | 50.0% | 49.6% |
| 35 | 50.0% | 50.1% |
| 36 | 50.0% | 49.5% |
| 37 | 50.0% | 49.9% |
| 38 | 50.0% | 49.8% |
| 39 | 50.0% | 49.9% |
| 40 | 50.0% | 50.1% |
| 41 | 50.0% | 50.2% |
| 42 | 50.0% | 50.2% |
| 43 | 50.0% | 50.1% |
| 44 | 50.0% | 50.1% |
| 45 | 50.0% | 50.0% |
| 46 | 50.0% | 49.8% |
| 47 | 50.0% | 49.8% |
| 48 | 50.1% | 50.9% |
Картина совсем другая.
8й бит первого байта МАС адреса по-прежнему соответствует Unicast-природе SRC-адреса в probe request пакете.
7й бит в 92.2% случаев установлен в Local, т.е. с достаточной долей уверенности можно считать, что именно столько собранных адресов относится к рандомизированным, а менее 8% — к реальным. При этом распределение бит в OUI для таких реальных адресов примерно совпадает с данными предыдущей таблицы.
Какому производителю, по OUI, принадлежат рандомизированные адреса (т.е. с 7м битом в «1»)?
| Производитель по OUI | Доля среди всех адресов |
|---|---|
| не найден в базе IEEE | 62.45% |
| Google Inc. | 37.54% |
| остальные | 0.01% |
При этом все рандомизированные адреса, отнесенные к Google, принадлежат одному OUI c префиксом DA:A1:19. Что это за префикс? Давайте посмотрим в исходники Android.
Стоковый андроид в поиске беспроводных сетей использует специальный, зарегистрированный OUI, один из немногих с установленным седьмым битом.
Вычислить реальный МАС из рандомного
Адрес целиком, либо его младшие три байта, это чистый Random.nextLong(). «Патентованное восстановление реального МАС» — надувательство. С большой долей уверенности можно ожидать, что производители Android-телефонов применяют и другие, не зарегистрированные OUI. Исходников iOS у нас нет, но скорее всего там применен схожий алгоритм.
Вышесказанное не отменяет работу других механизмов деанонимизации Wi-Fi абонентов, основанных на анализе других полей probe request фрейма, или корреляции относительной частоты посылаемых устройством запросов. Однако достоверно отследить абонента внешними средствами крайне проблематично. Собираемые данные больше подойдут для анализа средней/пиковой нагрузки по местоположению и времени, на основе больших чисел, без привязки к конкретным устройствам и людям. Точные данные есть только у тех, кто «внутри», у самих производителей мобильных ОС, у установленных приложений.
Что может быть опасного в том, что кто-то другой узнает МАС-адрес вашего устройства? Для проводных и беспроводных сетей можно организовать атаку «отказ в обслуживании». Для беспроводного устройства, к тому же, с некоторой вероятностью можно зафиксировать момент появления в месте, где установлен сенсор. Подменой адреса можно попробовать «представиться» вашим устройством, что может сработать, только если не применяется дополнительных средств защиты (авторизация и/или шифрование). 99.9% людей здесь не о чем волноваться.
МАС-адрес сложнее, чем кажется, но проще, чем мог бы быть.



