Лично я не делал этого раньше, но вот некоторая информация, чтобы направить вас в правильном направлении.
С точки зрения протокола, определенно возможно иметь одну радиостанцию, работающую и как AP, и как STA клиента. Лучше всего (или, возможно, почти обязательно), если точка доступа, которую вы создаете, и точка, к которой вы присоединяетесь как клиент, находятся на одном канале. Наличие радиокарты должно постоянно переключать каналы на запросы на обслуживание - это рецепт потерянных кадров и ужасной производительности.
В программном плане это становится возможным. Несколько драйверов карт 802.11 в Linux поддерживают концепцию VAP (виртуальных точек доступа), которая позволяет одной карте работать как несколько точек доступа (несколько SSID, даже BSSID) одновременно. Как ни странно, термин VAP стал означать любой вид виртуальных интерфейсов на одной и той же карте 802.11, независимо от того, находится ли виртуальный интерфейс в режиме AP или нет. Таким образом, в этих комбинациях карт и драйверов вы можете создать две VAP - VAP в режиме STA.
Драйвер MadWifi для карт на базе Atheros поддерживает VAP. Если ваша карта 802.11 использует чипсет Atheros и вы устанавливаете правильную версию драйвера MadWifi, вы можете настроить свою карту для одновременного режима STA + AP примерно так:
wlanconfig ath0 create wlandev wifi0 wlanmode sta
wlanconfig ath1 create wlandev wifi0 wlanmode ap
Обратите внимание, что это не полные инструкции по настройке, а просто попытка начать работу.
Возможно, вы захотите Google что-то вроде " Wi-Fi VAP " для получения дополнительной информации. Я скопировал вышеупомянутые команды отсюда .
Ох, и какой-то миф разрушает: карты Atheros не редкость на потребительских машинах. Они являются основными игроками в чипсетах 802.11, наряду с Broadcom, Marvell, Intel и Ralink. И только то, что я использовал пример MadWifi / Atheros, не означает, что нет драйверов для Linux для чипов других крупных игроков, которые могут делать то же самое. Кроме того, 802.11s не требуется для этого. Сказать, что для этого нужно сделать 802.11, это все равно, что сказать, что вы должны поддерживать протокол Spanning Tree, чтобы просто пересылать кадры с одного интерфейса на другой.