私が作成したい設定は5つのデバイスで構成されており、すべて無線で互いに接続されています。いつでもこれらのAPに接続し、ネットワーク上のすべてのデバイスにpingを送信できます。各APには独自のDHCPサーバーもあります。
もっと興味深くするには、すべてを動的にします。つまり、これらのデバイスのいずれかが落ちるか、新しいデバイスが追加される可能性があります。
A、E——お客様。
B、C、D - APとクライアント
WLAN1-APインターフェイス
WLAN0 - クライアントインターフェイス
設定例:
A(WLAN0) --- B(WLAN0,WLAN1) --- C(WLAN0,WLAN1) --- D(WLAN0,WLAN1) --- E(WLAN0)
正しい接続方法が何であるかを提案してください。
これまで...
Wi-Fiドライバはrtl8723dsで、ブリッジインターフェイスが機能していないようです。
APごとに異なるサブネットを保持します(デバイスはクライアントで始まり、ネットワークを検索し、APを起動する前に未使用のサブネットを選択します) - これは有望に見えますが、ルーティングは悪夢に変わります。
修正する: 詳細を追加し、いくつかのことを明確にしてください。
ワイヤレスインターフェイスのみ使用できます。無線LAN 1、無線LAN 0
外部デバイスはAP(またはWiFi経由)に接続でき、ネットワーク上のすべてのデバイスを確認し、UDPパケットをそれらの1つに送信できる必要があります。
babeld ad-hoc / meshプロトコルで遊んでいましたが、外部デバイス(スマートフォンなど)がメッシュと通信できるように、babeldにWLAN0を提供し、APにWLAN1を提供する際に多くの問題が発生しました。 AP 設定に Hostapd を使用します。
問題はAPが起動したときに発生します。これ以上デバイスを表示できません。つまり、グリッドが消えます。一部のランダムデバイスでは、babeldを再起動する必要があります。
グリッドノードに対してDHCPが機能するように管理できませんでした。おそらく、デバイスがランダムな順序で起動し、ネットワーク全体が頻繁に起動/中断されるためです。静的ノードはありません。
ランダムテストを実行しましたが、奇妙な不安定性がありました。たとえば、グリッドを一晩実行したままにすると、午前中にデバイスがお互いを見ることができなくなります。
アップデート2:最終目標の詳細については、こちらをご覧ください。
私はしばらくこの点を深く掘り下げて、これらすべての目的を説明するためにあまりにも多くの主要な詳細を見落としたと思います。たぶんもっと良い方法があるかもしれません。
比較的近接しており、相互に接続されたコンパクトな組み込みデバイスのコレクションです。
唯一の接続オプションはWiFiです。
他のWi-Fi対応デバイス(スマートフォンなど)はWi-Fiに接続できる必要があります。一つカスタムUDPデータを送信してパケットを識別するデバイスすべての端末。最も論理的な解決策は、デバイスのいずれかのボタンを押してAPを起動するようです。
決まったことはなく、デバイスの数も変わります。
Babeldは私をグリッドのアイデアから除外しましたが、おそらくバットマンはもっと有望かもしれません。もうオプションはありませんか?
AP、クライアント、AP...、およびすべてのルーターを接続します。調査をすればするほど、状況はさらに悪化しました。
アップデート3:
rtl8723ds ドライバーでバットマン - モジュールを操作できません。モジュールをロードしようとすると、分割エラーが発生します。
また再び行き止まった路地にぶつかりました。 。
答え1
「正しい」方法は設定によって異なります。
LANとインターネットを介して互いに接続されている複数の固定装置がインストールされている場合は、集合体を使用したいと思います。分配システム同じBSSIDを持ち、各デバイスでアクセスポイントを実行します。これは、各デバイスでwlan APインターフェイスとイーサネットインターフェイス(および)を接続し、wlan0
他の場所(またはデバイスの1つ)で単一のDHCPサーバーを実行することを意味します。eth0
より多くのアクセスポイントを追加すると、クライアントの数に関係なく「正常に」機能します。
一方、WLANを介して相互に接続しようとする機器が多い場合メッシュネットワーク。これはあなたが使うことを意味します一つ各デバイスのWLANインターフェイスは、「メッシュ」または「一時」(IBSS)モードです。いいえアクセスポイントとクライアントとして機能します。また、ルーティング先(たとえば、すべてのデバイスが常に互いに見えるかどうか、または見えないデバイス間でルーティングするかどうかなど)も指定する必要があります。選択できるメッシュルーティングプロトコルはさまざまです。遊ぶことができます。
複数のアクセスポイントとクライアントを持つメッシュネットワークを作成するのは楽しいかもしれませんが、お勧めできません。
詳細は質問を更新することで提供されます。
編集する
どのシナリオを達成したいのかはまだ完全にはわかりません。
次のシナリオが必要な場合:
多くのノード(「ルータ」)はWLANを介して互いに接続され、各ノードはAPを提供します。あるいは、一部のノードをインターネットに接続することもできます。
多くのクライアントは、接続するノードAPのうちの1つを正確に選択し、「ノードネットワーク」から分離する必要があります(必須、必須ではありません)。
それでは、使用されているものと同様のインフラストラクチャをお勧めします。フライピンク計画。彼らは使うバットマンレイヤ 2 ルーティングでは、OpenWRT と Gluon ベースの「ノード」(通常は単一の WLAN インターフェイスを備えた安価なルータ、2 つの WLAN インターフェイスを備えたハードウェアがある場合は良い)用の既製のファームウェアを提供し、ローカル グリッドに接続します。ゲートウェイを介して(必要ではないかもしれません)、これは何百ものノード、時には何千人ものクライアントで構成される地域コミュニティとの成功したコラボレーションです。
レイヤ 3 ルーティングを使用する Babel は、より大きなネットワークにさらに拡張する必要があります。 Freifunkの一部の人々がBatmanを置き換えるために働いていることを知っていますが、これまではまだバグがあります(あなたの経験と一致しているようです)。
シナリオが異なり、他のものが必要な場合は参考にしてください。
編集する
はい、最終目標に関する情報を追加してください。まだ絵は不明です。質問:
スマートフォンが識別パケットを送信する理由みんな機器? 1つのデバイスで十分ではありませんか?デバイスでどのような回答/相互作用を期待していますか?
ユーザーの対話が突然現れるのはなぜですか(「ボタンを押す必要があります」)?認証に必須ですか?スマートフォンがいつでも識別パケットを送信できる場合はどうなりますか?スマートフォンアプリのユーザーは事前共有キーを入力する必要がありますか?
セキュリティの問題がありますか?ノードは互いに認証する必要がありますか?スマートフォンはノードに対して自己認証を受ける必要がありますか?ノードとして?すべてのノードに?セキュリティ上の考慮事項は重要なので、明確かつ完全に作成してください。
クライアント(スマートフォン)の要件は何ですか?スマートフォンならアプリケーションのみ実行できますか? (スマートフォンはSTAでAP経由で接続する必要があります。)それともネットワーク設定を変更できますか?スマートフォンに加えて、他の種類の顧客もいますか?
とにかく、今まで私が理解したところによると、次はどうですか?
wlan0
すべてのノードは、インターネット上のIBSSとインターネット上のオープンAP(暗号化なし)を介してwlan1
Batman Meshを実装します。 AP(wlan1
) は BatmanGrid(bat0
) に接続されます。グリッド全体には、IPv4 アドレスを割り当てる DHCP サーバーがあります。あるいは、IPv6が利用可能な場合は、リンクローカルIPv6アドレスでも十分です。これは、基本的にLANセグメントであるすべてのデバイスにオープンで安全でないトランスポート層を提供することを意味します。すべてのセキュリティプロトコルはこの層の上に実装する必要があります。
すべてのノードは対話のためにいくつかのデーモンを実行します。ノードはUDPブロードキャストを介して互いに認証します。
クライアント(スマートフォン)は、一般的な手順ですべてのAPに接続します。スマートフォンには、UDPブロードキャストを介してすべてのノードに対して自分自身を認証するアプリケーションがあります。その時点から、UDPユニキャスト(またはTCPなど)を介して、1つ、複数、またはすべてのノードの悪魔と対話することができます。
はい。分散ネットワークアプリケーションは困難です。 「すばやく書く」ことはできません。
そして、バットマンは使用されるWLANドライバとは全く独立しています。選択したBatmanのバージョンがカーネルのバージョンに合った最新バージョンであることを確認し、カーネルモジュールをコンパイルして接続します。インターフェイスを取得しbat0
、それを使用してbatctl
グリッドインターフェイスを追加する必要があります。