特定のBSSIDにWi-Fi接続を強制する

特定のBSSIDにWi-Fi接続を強制する

(何百ものものがあるので、試した実際のステップについて意図的に不正確です。

CentOS 7、ネットワーク管理者

(以下のエラーは修正してください)

カスタマーエクスペリエンスには、SSIDが同じAPが複数あります。 Linuxボックスを各APに順番にリンクし、コマンドを実行してデータを収集し、次のAPに移動し、クリーニングし、すすぎ、繰り返すBASHスクリプトを作成する必要がありました。 BSSIDは、接続に使用される確かなものです。スクリプトとしてのスクリプトは正常に動作しますが、BSSIDベースのWi-Fi接続ビットは機能しません。

iw、iwconfig、nmcli、およびwpa_supplicantを試しましたが、私が指定したBSSIDに確実に接続できませんでした。接続された実際のBSSIDは、コマンドに何を入力してもランダムであるようです。私が収集したものから、wpa_supplicantを除くすべてのツールは単にBSSIDを取得し、SSIDに関連付けてから、接続設定でSSIDを使用します。正しい場合(直接言うと)少し愚かなようです。

wpa_supplicant はこの方法で使用するには脆弱です。常にwpa_cliが接続できない状態になり、再起動を続行し、NetManagerを再起動する必要があります。

私はPythonに切り替えることを検討しましたが、PythonモジュールはLinuxコマンドを囲むラッパーのようで、何も変更されません。

誰でもアイデアがあれば伝えてください。これが難しすぎると信じられないので、明らかなものが欠けているようです...

以下、Eduardoのソリューションを試しました。

提供された方法では正確に達成できません。 MACアドレス/ BSSIDが変数である(SSIDとパスワード/ pskは静的です)シェルスクリプトで接続試行ループを実行しています。

接続に使用するコマンドは次のとおりです。

nmcli connection up ifname wlp4s0 ap $AP passwd-file passwdfile

ここで passwdfile には psk が含まれています。これは$ APリストを通るループです。

リスト内の任意のAPにまだ接続されています。 (おそらく当時最高の信号を持つ信号です)、(私にとって)もっと混乱しているのは、イベントが次のiw接続BSSIDを表示することです。

nmcli -f SSID,BSSID,ACTIVE dev wifi list | grep yes

私が正しくしていないという非常に明白な何かがあるでしょう(これは私にとってまだ新しいものです)。

答え1

一般的なASCIIパスワードのみを提供する場合は、wpa_supplicantSSIDから64桁の16進PSK(実際のパスワードの1つ)が派生するため、SSIDを見つける必要があります。この時点でSSIDモードに入ります。

したがって、解決策はBSSIDを指定し、64個の16進PSKパスワード。

以下を実行して、64桁の16進PSKを取得できます。

wpa_passphrase YourSSID YourAsciiPassword

たとえば、

$ wpa_passphrase Example myexample
network={
    ssid="Example"
    #psk="myexample"
    psk=e22b519be7138dce1d81d1b67b622a720774f22753f79f954376e6e2b722e2c7
}

その後、SSIDの代わりにBSSIDを使用すると、次の結果が表示されます。

network={
  bssid=EE:FF:00:01:02:03
  psk=e22b519be7138dce1d81d1b67b622a720774f22753f79f954376e6e2b722e2c7
}

これにより、対応するBSSIDに接続できます。

答え2

私のユースケースは少し異なりますが、正しい方向に解決策を提供したEduardo Trapaniに大きな感謝を伝えたいと思います。マイユースケースは、2階のモデムの横にあるネイティブルーターと、私の望遠鏡を制御するRaspberry Pi 5の外側を指す下層のウィンドウにあるNest APを持つGoogle Nestルーターとアクセスポイントのペアです。

Eduardoのソリューションのこの部分は絶対に必要です。

$ wpa_passphrase Example myexample
network={
    ssid="Example"
    #psk="myexample"
    psk=e22b519be7138dce1d81d1b67b622a720774f22753f79f954376e6e2b722e2c7
}

このステップは非常に重要です。しかし、彼がwpa_passphraseコマンドの出力から生成したネットワークフラグメントをどうすべきかわかりません。

network={
  bssid=EE:FF:00:01:02:03
  psk=e22b519be7138dce1d81d1b67b622a720774f22753f79f954376e6e2b722e2c7
}

それは非常に簡単であることが判明しました。私のシステムのネットワークGUIにネットワークを追加し、BSSID(アクセスポイントのMACアドレス)とパスワード(wpa_passphraseコマンドの出力)を入力しました。実際に働いた。私のmbpsは8から245に増えました!

私の元のネットワークはHannahで、Piはより良い接続を見つける必要がありましたが、何らかの理由で見つかりませんでした。ただし、上記のように定義された2番目のネットワークHannah-2を使用すると、簡単に見つけることができます。

Wi-Fi設定ホームページ ハンナ2構成

関連情報