如何连接到特定的 BSSID?

如何连接到特定的 BSSID?

有多个无线网络具有相同的 SSID。我正在寻找一种解决方案来连接到特定网络(通过 BSSID)。

nmcli con up ifname ap看起来不错,但不幸的是,它不起作用。它只是重新连接到原始网络。

答案1

您可以使用Network Manager的 cli 界面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      ▂▄▆_

连接的 CLIBSSID是:

$ nmcli d wifi connect XX:XX:XX:XX:XX:XX

该命令将为您提供一个 GUI 提示,要求您输入密码。您可以在命令行上输入密码(可能存在安全问题):

$ nmcli d wifi connect XX:XX:XX:XX:XX:XX password "mypassword"

后者不会提示输入密码,而是通过命令中的 BSSID 连接到指定的网络。 如果您之前已经连接到其他网络,它将被命令中指定的网络替换。

该命令还会将连接信息添加到该/etc/NetworkManager/system-connections位置。该位置受到保护。

后续可以通过通知区域中的网络图标按创建的名称进行连接。

答案2

简单的执行此操作的方法是使用网络管理器提供的 GUI。

转到顶部面板中的网络图标,选择Edit Connections,找到所需 SSID 的无线连接配置文件,打开进行编辑,然后转到 BSSID 字段并 1) 弹出所需的 BSSID,或 2) 手动输入所需的 BSSID。

请参见下面显示其 BSSID 字段的无线连接示例。

在此处输入图片描述

答案3

此答案最初由MariusMatutiae 在 SuperUser 上。如果这对您有帮助,请考虑在那里投票。

您可以通过手动连接 AP 来完成此操作。

首先,如果您正在运行网络管理器,最简单的方法是关闭它:

  sudo service network-manager stop

然后你需要确定你想加入的 AP 的 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

现在您指定要连接到特定的 AP:

  sudo iwconfig wlan0 essid MySSID_NAME ap f8:1a:67:aa:7f:b9

当然美联社先于基础服务识别码你刚刚确定了。现在你需要开始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

希望这可以帮助。

答案4

这个答案相当于解释如何使用 NetworkManager 的 GUI 的答案,但使用 CLI。

  1. (可选,用于列出所有可用的 Wi-Fi 及其 BSSID)
    nmcli device wifi list
    
  2. 编辑 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为连接 ID。
  3. 使用连接配置文件:
    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
    

相关内容