특정 BSSID에 Wi-Fi 연결을 강제 적용

특정 BSSID에 Wi-Fi 연결을 강제 적용

(수백 가지가 있기 때문에 시도한 실제 단계에 대해 의도적으로 부정확합니다. BASH 기록의 규모를 살펴봤기 때문에 알고 있습니다.)

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가 연결할 수 없는 상태가 되고 계속 다시 시작해야 하며 종종 NetworkManager를 다시 시작해야 합니다.

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(실제 비밀번호 중 하나)가 파생되므로 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에게 큰 감사를 전하고 싶습니다. 내 사용 사례는 위층 모뎀 옆에 있는 기본 라우터와 내 망원경을 제어하는 ​​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는 더 나은 연결을 찾아야 했지만 어떤 이유로든 찾지 못했습니다. 그러나 위와 같이 정의된 두 번째 네트워크 Hannah-2를 사용하면 쉽게 찾을 수 있습니다.

Wi-Fi 설정 홈페이지 한나 2 구성

관련 정보