저는 현재 Arch Linux를 설치하고 systemd-networkd를 사용하여 홈 라우터에 무선으로 연결하는 Raspberry Pi Zero W를 사용하여 휴대용 헤드리스 프로젝트를 진행하고 있습니다. 다음 사용 사례에 대해 각각 다른 고정 IP를 사용하여 선호하는 SSID 쌍에 자동으로 연결되도록 하고 싶습니다.
외부에서 사용할 때 고정 IP를 사용하여 Android 장치의 무선 핫스팟에 자동으로 연결해야 합니다(휴대폰에서 SSH 또는 VNC를 통해 쉽게 연결할 수 있도록).
또한 집에 있을 때 관리를 수행하려면 집 LAN에서 SSH로 연결할 수 있어야 하며, 쉬운 SSH 액세스를 위해 고정 IP를 다시 사용해야 합니다.
그러나 집에 있을 때 테스트 목적으로 휴대폰에 연결할 수 있어야 하고 Android 핫스팟이 있는지에 따라 SSID 간에 자동으로 전환할 수 있어야 합니다.
문제를 더 복잡하게 만드는 것은 내 홈 라우터가 Android 휴대폰과 다른 IP 범위를 사용하므로 두 연결의 고정 IP가 달라야 한다는 것입니다.
이상적으로는 Pi가 다음과 같이 작동해야 합니다.
- 내 Android 핫스팟의 SSID를 감지하면 해당 SSID에 특정한 고정 IP 주소를 사용하여 해당 핫스팟에만 연결됩니다.
- 내 Android 핫스팟의 SSID를 감지하지 못하면 다른 고정 IP를 사용하여 내 집 Wi-Fi SSID에 연결을 시도합니다.
즉, 휴대폰의 핫스팟을 켜기만 하면 집에서 휴대폰을 사용하여 Pi를 테스트할 수 있고, 핫스팟을 꺼서 집에 있는 PC를 사용하여 Pi를 관리할 수 있습니다.
내가 이것을 어떻게 달성할 수 있는지 아는 사람이 있나요?
답변1
마침내 nmcli를 사용하는 네트워크 관리자를 사용하여 이 작업을 수행하는 방법을 알아냈습니다. 다음과 같이 두 개의 구성 파일을 설정합니다.
nmcli con add con-name "[Connection Name]" ifname wlan0 type wifi ssid "[SSID]"
ip4 [Static IP Address]/24 gw4 [Default Gateway]
nmcli con mod "[Connection Name]" ipv4.dns "8.8.8.8 8.8.4.4"
nmcli con mod "[Connection Name]" wifi-sec.key-mgmt wpa-psk
nmcli con mod "[Connection Name]" wifi-sec.psk [Passkey]
nmcli con mod "[Connection Name]" connection.autoconnect-priority 0
내 휴대폰 Wi-Fi 연결이 집 Wi-Fi보다 자동 연결 우선순위가 더 높은지 확인하세요. 그런 다음 두 연결을 모두 넣으십시오.
nmcli con up "[Connection Name]"
그러면 네트워크 관리자는 우선순위와 가용성에 따라 어느 것을 사용할지 자동으로 결정합니다. 집 Wi-Fi에서 전화 Wi-Fi로 전환하려면 전화기의 핫스팟을 켜고 NetworkManager 서비스를 다시 시작하여 다시 전환하고 전화기의 핫스팟을 껐습니다.