Как я могу подключиться к определенному BSSID?
Существует несколько беспроводных сетей с одинаковым SSID. Я ищу решение для подключения к конкретному (по BSSID).
nmcli con up ifname ap выглядит хорошо, но, к сожалению, это не работает. Он просто подключается обратно к исходной сети.
5 ответов
Ты можешь использовать Network Manager
Кли интерфейс, nmcli
,
Я уверен, что у вас уже есть BSSID
, Вы можете проверить и подтвердить это с помощью:
( $
это командная строка Строки, следующие за командой, являются выходными данными.)
$ nmcli -f in-use,ssid,bssid,signal,bars dev wifi
* SSID BSSID SIGNAL BARS
* Apollo III (TWC) XX:XX:XX:XX:XX:XX 98 ▂▄▆█
Chromecast8481 XX:XX:XX:XX:XX:XX 97 ▂▄▆█
-- XX:XX:XX:XX:XX:XX 94 ▂▄▆█
Apollo III (1) XX:XX:XX:XX:XX:XX 87 ▂▄▆█
TWCWiFi XX:XX:XX:XX:XX:XX 80 ▂▄▆_
CableWiFi XX:XX:XX:XX:XX:XX 80 ▂▄▆_
TWCWiFi-Passpoint XX:XX:XX:XX:XX:XX 80 ▂▄▆_
Apollo III (1) XX:XX:XX:XX:XX:XX 70 ▂▄▆_
Кли для подключения к BSSID
является:
$ nmcli d wifi connect XX:XX:XX:XX:XX:XX
Эта команда выдаст подсказку с графическим интерфейсом для пароля. Вы можете ввести пароль в командной строке (может быть из соображений безопасности):
$ nmcli d wifi connect XX:XX:XX:XX:XX:XX password "mypassword"
Последний не запрашивает пароль, но подключается к указанной сети с помощью BSSID в команде. Если вы ранее уже подключались к другой сети, она будет заменена на указанную в команде.
Команда также добавит информацию о соединении в /etc/NetworkManager/system-connections
место нахождения. Местоположение защищено.
Последующие подключения могут быть выполнены с помощью значка сети в области уведомлений под созданным именем.
Самый простой способ сделать это - использовать графический интерфейс, предоставленный Network Manager.
Перейдите к значку сети в верхней панели, выберите Edit Connections
найдите профиль беспроводного соединения для нужного SSID, откройте для EDIT, перейдите в поле BSSID и либо 1) откройте желаемый BSSID, либо 2) введите желаемый BSSID вручную.
Ниже приведен пример беспроводного соединения с его полем BSSID.
Этот ответ был впервые опубликован Konrad Höffner на SuperUser. Пожалуйста, рассмотрите возможность голосования там, если это поможет вам.
Вы можете сделать это, подключившись к точке доступа вручную.
Во-первых, проще всего отключить диспетчер сети, если вы его используете:
sudo service network-manager stop
Затем вам нужно определить BSSID точки доступа, к которой вы хотите присоединиться: команда
sudo iw dev wlan0 scan
(если вы используете wlan0 в качестве беспроводного интерфейса), вы получите много выходных данных, среди которых вы найдете что-то вроде:
BSS f8:1a:67:aa:7f:b9 (on wlan0) -- associated TSF: 629432841083 usec (7d, 06:50:32) freq: 2417 beacon interval: 100 capability: ESS Privacy ShortPreamble SpectrumMgmt ShortSlotTime (0x0531) signal: -70.00 dBm last seen: 0 ms ago Information elements from Probe Response frame: SSID: MySSID_NAME
(вывод длиннее, чем этот). Соответствующая часть, конечно, BSS f8: 1a: 67: aa: 7f: b9.
Затем вам придется освободить свой интерфейс от любых предыдущих IP-адресов, на всякий случай:
sudo ip link set wlan0 down sudo ip addr flush dev wlan0 sudo ip link set wlan0 up
Теперь вы указываете, что хотите подключиться к конкретной точке доступа:
sudo iwconfig wlan0 essid MySSID_NAME ap f8:1a:67:aa:7f:b9
где, конечно, AP предшествует BSSID, который вы только что определили. Теперь вам нужно запустить wpa_supplicant,
sudo wpa_supplicant -Dnl80211 -i wlan0 -B -c FILE_with_WPA_Secrets
(если вы не знаете, как настроить файл с вашими учетными данными WPA, вы можете посмотреть его здесь, например; просто будьте осторожны, когда написано, что сеть = {, это должна быть сеть = { без пробела). И, наконец,
sudo dhclient -v wlan0
(флаг -v не работает на всех дистрибутивах Linux, мне это нравится, потому что я могу следить за происходящим).
РЕДАКТИРОВАТЬ
Приведенные выше инструкции работают для сети с безопасностью WPA. Для обеспечения безопасности WEP замените команду wpa_supplicant:
sudo iwconfig wlan0 key s:Your_WEP_password
Помните, что два символа s: перед вашим паролем необходимы. После этого еще раз
sudo dhclient -v wlan0
Надеюсь это поможет.
Это скорее расширение ответа TheOdd. Поскольку iwconfig устарел во многих дистрибутивах, вместо него можно использовать iw для связи с определенной точкой доступа. iw работает немного иначе, чем iwconfig, поскольку вы указываете конкретные точки доступа по частоте, а не по BSSID. Кроме того, я счел необходимым разблокировать аренду DHCP, прежде чем запрашивать еще одну с другой точки доступа. Предполагая, что вы уже подключены к точке доступа в той же сети, вам не нужно повторно отправлять аутентификацию с помощью wpa_supplicant. Я использую wlan0, но у вашего WNIC может быть другое имя. Вот полный процесс переключения между точками доступа с одинаковым ESSID:
показать информацию о подключении:
снять wlan0:
sudo ip link set wlan0 down
бесплатный WNIC любых предыдущих IP-адресов:
sudo ip addr flush dev wlan0
удалить старую аренду dhcp:
sudo dhclient -r wlan0
вернуть WNIC обратно:
sudo ip link set wlan0 up
сканируйте, обратите внимание на частоту:
sudo iw dev wlan0 scan
укажите ESSID и частоту с помощью iw (не iwconfig), чтобы связать с конкретной точкой доступа:
sudo iw wlan0 connect <ESSID> <freq>
Например:
sudo iw wlan connect fly-for-wifi 2462
запустить dhcp:
sudo dhclient -v wlan0
Проверьте:
iw wlan0 link
Этот ответ эквивалентен ответу, который объясняет, как использовать графический интерфейс NetworkManager, но использовать CLI.
- (необязательно, используется для отображения всех доступных Wi-Fi и их BSSID)
nmcli device wifi list
- Отредактируйте поле BSSID:
nmcli connection edit ConnectionName set 802-11-wireless.bssid 12:34:56:AB:CD:EF save quit
nmcli connection modify ConnectionName 802-11-wireless.bssid 12:34:56:AB:CD:EF
ConnectionName
обычно идентичен ESSID, если он создается автоматически (вы можете перечислить все сохраненные имена соединений с помощьюnmcli connection
), заменять12:34:56:AB:CD:EF
с идентификатором соединения. - Используйте профиль подключения:
nmcli connection up ConnectionName
Обратите внимание: таким образом, если этот BSSID недоступен, он не будет автоматически подключаться к какому-либо другому BSSID.
Есть некоторые возможные исправления.
Вручную отмените изменения.
Сделайте то же самое, но на шаге 2 вам нужно сделать:
nmcli connection edit ConnectionName remove 802-11-wireless.bssid save quit
или
nmcli connection modify ConnectionName 802-11-wireless.bssid ''
Создайте новое соединение, клонировав существующее.
nmcli connection delete ConnectionName-cloned # delete all existing connections named "ConnectionName-cloned" nmcli connection clone ConnectionName ConnectionName-cloned # create a new connection with name "ConnectionName-cloned" copying from the connection named "ConnectionName". Note that if there is an existing one it will create a new one with the same name nmcli connection modify ConnectionName-cloned 802-11-wireless.bssid 12:34:56:AB:CD:EF # as above nmcli connection up ConnectionName-cloned # as above