如何连接到特定的 BSSID?

Kri*_*isz 12 wireless nmcli

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

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

L. *_*mes 25

您可以使用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      ???_
Run Code Online (Sandbox Code Playgroud)

连接到 的 cliBSSID是:

$ nmcli d wifi connect XX:XX:XX:XX:XX:XX
Run Code Online (Sandbox Code Playgroud)

该命令将为您提供输入密码的 GUI 提示。您可以在命令行输入密码(可能是出于安全考虑):

$ nmcli d wifi connect XX:XX:XX:XX:XX:XX password "mypassword"
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 这个答案可能已经过时或者从未完全按照预期工作。如果您的设备已知该连接,则指定 BSSID 似乎只是连接到整个 SSID,而不是确切的 BSSID。请参阅问题 https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/465。 (2认同)

hey*_*ema 7

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

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

请参阅下面的无线连接示例,其中显示了其 BSSID 字段。

在此输入图像描述


The*_*Odd 6

这个答案首先由MariusMatutiae 在 SuperUser 上发布。如果这对您有帮助,请考虑在那里投票。

您可以通过手动连接到 AP 来实现。

首先,如果您正在运行网络管理器,最容易关闭网络管理器:

  sudo service network-manager stop
Run Code Online (Sandbox Code Playgroud)

然后你需要确定你想加入的AP的BSSID:命令

 sudo iw dev wlan0 scan
Run Code Online (Sandbox Code Playgroud)

(如果您使用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
Run Code Online (Sandbox Code Playgroud)

(输出比这长)。相关部分当然是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
Run Code Online (Sandbox Code Playgroud)

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

  sudo iwconfig wlan0 essid MySSID_NAME ap f8:1a:67:aa:7f:b9
Run Code Online (Sandbox Code Playgroud)

当然ap在您刚刚确定的BSSID之前。现在你需要启动wpa_supplicant

 sudo wpa_supplicant -Dnl80211 -i wlan0 -B -c FILE_with_WPA_Secrets
Run Code Online (Sandbox Code Playgroud)

(如果您不知道如何使用您的 WPA 凭据设置文件,例如,您可以在此处查找;请小心,它说network= {,它应该是network={没有空格)。最后,

 sudo dhclient -v wlan0
Run Code Online (Sandbox Code Playgroud)

-v标志不适用于所有 Linux 发行版,我喜欢它,因为我可以监控正在发生的事情)。

编辑

上述说明适用于具有 WPA 安全性的网络。对于 WEP 安全性,将 wpa_supplicant 命令替换为:

  sudo iwconfig wlan0 key s:Your_WEP_password
Run Code Online (Sandbox Code Playgroud)

请记住,密码前的两个字符s:是必需的。在这之后,再次

  sudo dhclient -v wlan0
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。