TLDR: Raspberry Pi 임시 WiFi 네트워크에서 동료와의 무선 통신을 방지하고 싶지만 인터페이스를 끄거나 비활성화하고 싶지 않습니다. 이는 노드가 서로 범위를 벗어나는 것을 시뮬레이션하기 위한 것입니다.
나는 임시 네트워크("PiFi")를 실행하는 세 개의 Raspberry Pi로 구성된 무선 네트워크를 가지고 있습니다. 각 Pi에서 인터페이스에는 wlan0
고정 IP 주소( 1, 2 또는 3) 10.0.0.x
가 할당됩니다. x
디버깅 목적으로 Pi는 이더넷 스위치에 연결되어 SSH를 통해 제어할 수 있습니다. 이 유선 네트워크가 사용되며 192.168.2.*
해당 주소는 내 노트북의 DHCP에 의해 할당됩니다. 네트워킹을 활성화하려면 각 장치에서 다음 명령을 사용합니다. (메시 네트워크에서 레이어 2 라우팅을 처리하기 위해 BATMAN도 실행하고 있지만 관련성이 없다고 생각합니다.)
시작 시 명령:
iw wlan0 set type ibss
ip link set wlan0 up
iw wlan0 ibss join "PiFi" 2432
/etc/dhcpcd.conf
:
interface wlan0
static ip_address=10.0.0.x/24
내 문제는 각 노드를 테스트해야 한다는 것입니다.무선 전화네트워크는 무선으로 다른 노드의 범위를 벗어날 때 수행됩니다(내 소프트웨어에는 시간 초과가 발생하고 주기적으로 연결을 다시 시도해야 하는 TCP 연결이 있습니다). Pi를 서로의 범위 밖으로 물리적으로 이동하여 이를 테스트하는 것은 어렵습니다. 불행히도 다음 사항은 나에게 적합하지 않습니다.
- 인터페이스를 비활성화합니다(
ip link set wlan0 down
). 이는 에 대한 바인딩을 허용하지 않습니다10.0.0.x
. - 송신기를 끄십시오(
iwconfig wlan0 txpower off
). 같은 문제입니다(바인딩할 수 없음). - 송신기 전원을 끄십시오(
iwconfig wlan0 txpower 1mW
). 장치는 서로 가까이 있기 때문에 무선으로 쉽게 통신할 수 있습니다. - 노드(
iw wlan0 ibss leave; iw wlan0 ibss join "FakeFi" 2432
)에서 ESSID를 전환합니다. 이것은 이상한 효과를 가져올 수 있습니다. 때로는 작동하지만 일반적으로 소켓의 연결 끝이 때때로(1/5) 에 바인딩됩니다192.168.2.*
(강제).연결하다일단 탈퇴/가입이 발생하면 바인딩된 소켓이10.0.0.x
실패합니다.EADDRNOTAVAIL
내 소켓이 올바른 주소에 바인딩되도록 인터페이스를 유지하는 방법이 필요하지만 어떻게든 실제 무선 통신을 비활성화할 수 있습니다. 이론적으로는 물리적 안테나를 비활성화하거나 전송 전력을 0으로 설정하여 이를 수행할 수 있지만 이를 수행할 수 있는 방법을 찾지 못했습니다. 나는 어떤 해결책이라도 열려 있습니다.