Wi-Fi-клиент и точка доступа на одном радио: что ломается
Хот-спот на Pi может выглядеть здоровым, пока его Wi-Fi-аплинк застревает. Прочитайте комбинации интерфейсов и ограничения каналов установленного радио, прежде чем винить VPN.
Ваш телефон остаётся подключённым к хот-споту, пока аплинк не пропускает ничего. Pi по-прежнему сообщает об ассоциации Wi-Fi, точка доступа по-прежнему рассылает beacon-кадры, и каждый запрос истекает по тайм-ауту. Одно радио одновременно обслуживает две роли, и одна из них побеждает, когда другой нужен канал. Прежде чем трогать VPN, выясните, принимают ли установленный драйвер и прошивка такую пару ролей вообще.
Симптом указывает на радио, а не на туннель
Проследите сбой по порядку, и он перестаёт выглядеть ошибкой маршрутизации. Клиент подключается к хот-споту, получает адрес и загружает одну-две страницы. Затем интерфейс станции заново ассоциируется с вышестоящим маршрутизатором после роуминга, обновления ключа или короткого провала сигнала. Точка доступа либо перезапускает свой beacon, либо оставляет клиентов без пути, а журнал VPN заполняется попытками переподключения, которые никогда не были причиной.
Два имени интерфейсов не создают два радио. wlan0 и интерфейс точки доступа делят одно устройство, один конечный автомат канала и один планировщик прошивки. Ядро точно показывает, какие комбинации ролей и каналов поддерживает это устройство, поэтому читайте этот список, а не предполагайте, что пара работает, раз оба интерфейса поднялись.
Прочитайте комбинацию, прежде чем что-либо менять
Беспроводной стек объявляет свой контракт в разделе комбинаций интерфейсов команды iw list. Каждая пронумерованная комбинация перечисляет разрешённые числа ролей, сколько интерфейсов может существовать и сколько разных каналов эти интерфейсы могут занимать одновременно. Комбинация, в которой указаны одна станция и одна точка доступа на одном канале, — та, которая нужна этому развёртыванию.
iw list | sed -n '/valid interface combinations/,/^$/p'
Читайте числа, а не только наличие слов. Драйвер может поддерживать режим станции и режим точки доступа по отдельности, тогда как единственная законная комбинация обоих допускает только один канал, небольшое общее число интерфейсов или интервал beacon, который хот-спот не выдержит. Некоторые прошивки также теряют одну роль во время сканирования или обновления ключа, что выглядит как нестабильный аплинк, а не как предел возможностей. Если ни одна комбинация не перечисляет обе роли, пара не поддерживается, что бы ни предлагала кнопка хот-спота на рабочем столе.
Документация по комбинациям интерфейсов cfg80211 описывает поля и ограничение beacon. Значения одного адаптера ничего не говорят о другом, поэтому храните вывод вместе с машиной, а не обобщайте его.
План канала и адресов решает остальное
Точка доступа должна находиться на канале, который радио способно обслуживать, а аплинк станции должен следовать за вышестоящей точкой доступа. Когда эти два решения расходятся, одна роль должна перезапуститься. На многих адаптерах с одним радио хот-спот поэтому повторяет канал станции, и смена канала на вышестоящей стороне на короткое время тянет хот-спот за собой вниз.
Планируйте сторону IP отдельно от радио. Маршрутизируемый хот-спот обычно использует частную подсеть вроде 192.168.50.0/24, Pi на 192.168.50.1, пул DHCP внутри этой подсети и Pi в роли пересылающего резолвер. Общий режим NetworkManager настраивает пересылку и трансляцию адресов для этой подсети, но не добавляет ёмкости радио и не делает туннель единственным выходом. Запишите, мостятся ли клиенты на втором уровне или маршрутизируются на третьем, прежде чем спорить о политике VPN.
Порядок тестов, который отделяет радио от маршрутизации
Двигайтесь от устройства наружу и остановитесь на первом шаге, который не сработает. Эти чтения безопасны на работающей системе и не меняют конфигурацию. Выполняйте их, когда клиент ассоциирован, а аплинк находится в том состоянии, которое вы отлаживаете.
iw dev
iw dev wlan0 link
nmcli -t -f DEVICE,STATE,CONNECTION device status
ip -br addr show
sysctl net.ipv4.ip_forward
Если iw dev wlan0 link не показывает ассоциации, проблема радио идёт первой, а туннель не имеет значения. Если аплинк ассоциирован, а у клиента нет адреса, значит неверны подключение и полномочия DHCP. Если у клиента есть адрес, но нет доступности, не хватает пересылки, трансляции или доставки резолвера. Только когда работают и путь хот-спота, и путь аплинка, сбойный туннель становится следующим, что нужно проверить.
Запишите адаптер, драйвер и прошивку рядом с принятой комбинацией и правилом канала. Более позднее обновление ядра или прошивки может изменить поддерживаемый список, и именно эта заметка превращает загадку в известное ограничение.