私は(非常に単純な)ユーザーレベルのIPネットワークスタックを書いています。これを行うには、OSネットワークスタックを「バイパス」してネイティブイーサネットフレームをインポートする必要があります。このtap
インターフェースは実行可能なアプローチのように聞こえますが、私にとってはうまくいかないようです。とインターフェイスbridge
の間にインターフェイスを作成しましたが、実際のインターフェイスには他の多くのパケットが含まれているにもかかわらず(もう一度確認されます)、そこには非常に奇妙なUDPパケットがほんの数だけ表示されます。wlan
tap
tcpdump -i tap0 -e -vv
wlan
tcpdump
私は何が間違っていましたか?ユーザ空間ネットワークスタックソリューションを解決する他の(より良い)方法はありますか?
ベストアンサー1
Wi-Fiステーションモードインターフェイスをブリッジできず、機能しません。どのソフトウェアスタックを使用するかは問題ではありません。この制限は仮想化などに適用されます。
それは明確ではありません。説明しようとします。
ieee802.11 パケットには (通常) 3 つのアドレスが含まれます。アクセスポイントのアドレス、送信者アドレス、受信者アドレス。送信者と受信者アドレスは、有線イーサネットとワイヤレスイーサネット間で共有されるイーサネットMACアドレスです。パケットは無線「ステーション」と有線ネットワーク(別名「DS」、配布システム)のホストとの間を流れることができるが、ステーションIDと宛先アドレスを含むのに十分なパケットフィールドにアドレスフィールドがないため、ステーションはもはや配布できない。 。 (同じ分野です。)
その結果、「メインモード」(アクセスポイント)インターフェイスはブリッジできますが、ステーションモードインターフェイスはブリッジできません。
解決策は通常、ブリッジングの代わりにNATを使用するルーティングを使用することです。