Двухголовый Realtek

2017-09-09

WiFi чипы от Realtek серии rtl818xx довольно распространены - они попадаются и в дешёвых планшетах, телефонах, массово попадают в различные USB-“свистки”.

Но есть один малоизвестный факт - драйвер для некоторых разновидностей микросхем этой серии можно собрать в режиме поддержки “Concurrent mode” - то есть вместо одного устройства в этом вашем линуксе будет два, одно из которых можно использовать как обычный адаптер WiFi, а второй - как точку доступа.

Это позволит (как минимум):

  • Собрать собственный WiFi-рипитер
  • Сэкономить USB-порты
  • Нашаманить себе беспроводную точку доступа в стиле TorBOX

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

Тестирование на россыпи моих устройств показало, что работает на устройствах с идентификаторами:

  • Bus 002 Device 003: ID 0bda:8176 Realtek Semiconductor Corp.
  • Bus 002 Device 004: ID 0bda:8178 Realtek Semiconductor Corp.

Что соответствует девайсам Realtek RTL8188CUS и RTL8192CU.

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

Запускал я всё это на “Android-свистке” (КДПВ) с установленным Armbian (об этом как-нибудь в другой раз).

Результат Speedtest вот такой:

Speed test Realtek Dual Head

Точка доступа работает через NAT (трансляция адресов). Тестировалось на телефоне.

Удивительно, но подобная функциональность была доступна только для определенного набора довольно дорогих чипов в OpenWRT (типа Atheros). И работала только тогда, когда и точка и клиент использовали один и тот же канал. Realtek же вроде бы такого ограничения не имеет, т.е. мне удалось держать точку на канале X, а с интернетом соединяться через канал Y. И всё работало.

Ну, и как обычно, есть ложка дегтя - довольно неприятное ограничение. “Заспуфить”, то есть подменить MAC-адрес клиента WiFi не получится без разрыва связи с точкой доступа.

Дело в том, что “подменный” MAC в “реалтеках” устанавливается через параметр модуля. Т.е. модуль надо выгрузить, и загрузить с параметром. Очевидно, что в момент выгрузки связь с устройством пропадёт. Хотя, можно будет попробовать обойти путём изменения параметра где-нибудь в /etc/modprobe.d/realtekwifi.conf, где, собственно и этот мак и устанавливать через параметр “rtw_initmac” вместе с настройками для отключения энергосбережения. Отличная, кстати, мысль - надо будет обязательно попробовать в другой раз.

######Update
Таки попробовал выставлять разные MAC-адреса - эффект интересный - в системе появляются 2 адаптера с одинаковыми адресами и это всё иногда работает (одна из пяти попыток смены на случайный MAC) - видимо, нужно менять либо последние 4 цифры, либо иметь какой-то генерированный проверенный список.


В массы

В трубу