如何选择使用相同 SSID 连接到哪个路由器?

Aks*_*tal 3 linux router wireless-networking wireless-router

在我所在的地区,有一个由大约 50 个具有相同 SSID 的路由器组成的大型网络。我的设备自动连接到最近且最强的网络。

如何手动连接到范围内的其中一个?

例子:

| 路由器|| 网络 SSID || 实力|
--------------------------------------
| 一个|| 随机名称 || 85% |
| 两个|| 随机名称 || 75% |
| 三|| 随机名称 || 65% |
| 四|| 随机名称 || 60% |
--------------------------------------

我的设备会自动连接,Router One因为它具有最大强度。我如何连接到Router TwoRouter Three(或Four)?

我需要一个针对 Linux 的解决方案。

Mar*_*iae 5

您可以通过手动连接到 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)