
私は複数の Raspberry Pi 3 モデル B ボードを持っており、それらには外部 Wi-Fi アダプターが接続されています。私の目的は次のとおりです。
- RSP デバイスのメッシュ ネットワークを作成します。
- 各 RSP ボードには独自の AP があり、クライアント (モバイル/ラップトップ) をそれに接続できます。
- これらの AP のクライアントは、異なる RSP デバイス範囲内を移動できますが、どの AP に接続されていても (単一のネットワークに接続されているかのように) 相互に通信できる必要があります。
1 を修正するには、RSP3 の内部 WiFi インターフェイス (wlan0) で batman-adv を使用しました。これで、すべてのデバイスが仮想 bat0 インターフェイスを介して相互に ping を実行できるようになりました。
2 については、外部 WiFi アダプター (wlan1) を使用し、hostapd と dnsmasq の助けを借りて、各 RSP ボードで AP (すべての AP で同じ SSID とチャネル) を実行できます。また、現在、異なる AP にいくつかのモバイル デバイスも接続しています。
私の主な障害は目標 3 です。
これを解決するために、bridge-utils ツールを使用して wlan0 と wlan1 インターフェイス間にブリッジを作成しようとしました。しかし、RSP では、両方のインターフェイスが WDS モジュールをサポートしていません。そのため、今のところ、すべてのクライアントに対して単一のネットワークを作成できません。また、wlan0 と wlan1 の間で IP 転送を使用しようとしましたが、他の RSP デバイスから接続されたクライアントに ping を実行できません。
接続されているすべてのクライアントに対して単一のネットワークを作成する他の方法 (WDS 以外) はありますか?
答え1
これを機能させるには、いくつか調整が必要な点があります。
まず、すべての RPI の wlan1 AP を同じチャネル上に配置しないでください。そうしないと、それらの間で大きな干渉が発生します。
WDSを使用する必要もありません。この説明詳細については、こちらをご覧ください。各 AP に同じ SSID、WiFi セキュリティ タイプ、同じパスワードが設定されていることを確認してください。
すべての RPI で wlan0 と wlan1 の間にブリッジを作成する必要があるという点は正しい考えです。私は bridge-utils に精通していませんが、batman-adv ドキュメントのブリッジ作成の手順に従う方がおそらくよいでしょう。ここ。
もう一つ注意すべき点は、DHCP サービスのために dnsmasq を実行する必要はおそらくないということです。クライアントは、自動的に割り当てられたリンク ローカル IPv6 アドレスを使用して、このワイヤレス LAN 経由で相互に通信できます。
編集:私の間違いです。RPI3 で wlan を使用して真のブリッジを作成することはサポートされていないようです。NAT を使用した潜在的な回避策があるようです。ここブリッジ接続をサポートする外部 WiFi アダプターを 2 つ接続する場合も可能になる場合があります。
答え2
IP 構成については何も述べられていませんが、問題 3 に対処するには IP 構成がまさに必要です。
IPプランを慎重に選択してください
ネットワーク全体には「一般的な IP スキーム」が適用されます。たとえば、多くのネットワークでは が使用されます192.168.*.*
。
使用できますIPv4とIPv6の両方のIPプライベート空間ユーザーが使用している他のネットワークと衝突しないように注意してくださいまたはRPis接続されている可能性があります。
たとえば、グローバル ネットワークを使用するとします172.17.*.*
。「すべてゼロ」( 172.17.*.0
) および「すべて 1」( 172.17.*.255
) アドレスは、ネットワークとそのすべてのサブディビジョンで予約済み (つまり使用不可) であることに注意してください。
この大きなネットワークを、各 RPi が独立して使用する小さなネットワークに分割する必要があります。サブネットワークの 1 つは RPi 間の通信に使用され、これは私たち172.17.0.*
自身で保持します。別の番号を使用することもできますが、0 を使用するとスクリプトで Pi を簡単に構成できます。
172.17.xxx.*
ネットワークの「パブリック」部分は、各 RPi に固有のIP を使用しますxxx
。ここでも、スクリプトを簡単にするために、1 から開始して増加させます。
RPiにはIPが必要です両方ネットワーク。パブリック ネットワークの場合、 を使用するのがベスト プラクティス.254
なので、 になります172.17.xxx.254
。しかし、中央ネットワークはどうでしょうか。RPi は、他の RPi によってネットワークへのゲートウェイとして使用されます172.17.xxx.*
。IP アドレスをリレー ネットワークに一致させるのは論理的であるため、 を使用します172.17.0.xxx
。
Piをセットアップする
RPis
wlan1
(公共インターフェース)を使用するには修理済みIP はすべての RP の中で一意であり、0 ではありません (上記を参照)。ネットマスクは172.17.xxx.254
です。xxx
255.255.255.0
RPis
wlan0
(プライベートインターフェース)を使用するには修理済みIP は172.17.0.xxx
上記xxx
と同じです。ネットマスクは です255.255.255.0
。$END
各 RPi で、使用している RPi の数に置き換えて、次のスクリプトを実行します。echo 1 > /proc/sys/net/ipv4/ip_forward for i in $(seq 1 $END); do route add -net 172.17.$i.0 netmask 255.255.255.0 gw 172.17.0.$i; done iptables -A FORWARD -s 172.17.0.0/16 -d 172.17.0.0/16 -j ACCEPT
TL;DR、次のことを行います。ここでは、大きなネットワークを選択します172.17.0.0/16
。これを 255 の小さなネットワークに分割します。を自分たちで172.17.xxx.0/24
保持し0
、他のすべての番号をユーザーに渡します。次に、RPi に、他のコンピューター宛てのパケットを適切な「ゲートウェイ」RPi に転送するように指示します。
ユーザーのデバイスに正しい場所を探すように指示する
パブリック ネットワークの DHCP サーバーとして dnsmasq を使用していると想定します。ユーザー デバイスを正しく構成するには、設定を微調整する必要があります。
ネットワークに適した範囲 (IE
172.17.xxx.1
から )のアドレスを提供するように DHCP を設定します172.17.xxx.253
。dnsmasq 構成の DHCP 部分に静的ルートを追加します (ここでも
xxx
適切に置き換えます)。dhcp-option=121,16.172.17.0.0,172.17.xxx.254
静的ルートを使用すると、クライアントのデフォルト ゲートウェイが上書きされるのを防ぐことができます。この方法では、クライアントが別のネットワーク (イーサネットが接続されたラップトップなど) に接続されていても、問題は発生しません。
セットアップをコミットする前に、1台または2台のPiと1台または2台のクライアントでテストしてください。全てあなたのRPis。