Ad-hoc Wi-Fi:インターフェースの動作を維持しながら無線通信を無効にします。

Ad-hoc Wi-Fi:インターフェースの動作を維持しながら無線通信を無効にします。

TLDR:Raspberry Pi一時的なWiFiネットワークで同僚との無線通信を防止したいが、インターフェイスをオフにしたり無効にしたくない。これは、ノードが互いに範囲外にあることをシミュレートするためのものです。

私は一時的なネットワーク(「PiFi」)を実行している3つの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

私のソケットが正しいアドレスにバインドされるようにインターフェイスを維持する方法が必要ですが、どういうわけか実際の無線通信を無効にすることができます。理論的には、物理​​アンテナを無効にするか、送信電力をゼロに設定することでこれを実行できますが、これを行う方法を見つけることができませんでした。私はどんな解決策でも開いています。

関連情報