理論上: TAP インターフェースと WIFI 親インターフェース

理論上: TAP インターフェースと WIFI 親インターフェース

複数の Linux TAP インターフェイスを作成し、単一の WIFI アダプターを介してパケットを送受信できるようにしたいと考えています。すべての目的において、TAP インターフェイスを本格的なネットワーク アダプターとして動作させたいと思っています。他のネットワーク アダプターと同様に、独自の DHCP アドレスを要求し、ローカル ネットワーク上で対話できる必要があります。

私はイーサネット アダプタを使ってこれを動作させることに成功しましたが、WiFi は別の話だと聞きました。正確な理由は思い出せませんが、「無線ブロードキャスト アドレスごとに 1 つの IP アドレス」と関係があるようです。

TAP インターフェイスを使用して、基本的に WiFi 接続を介してブリッジ ネットワークを行うことは可能ですか? networkmanager を使用して構成を行うことはできますか? 誰か記事を 1 つまたは 2 つリンクしてもらえますか? これに関する情報を見つけるのに苦労しています。

答え1

このネットワークエンジニアリングSEリンク802.11 フレーム ヘッダー内の 4 つのレイヤー 2 アドレスイーサネットと Wi-Fi の違いを非常にわかりやすく説明しています。

Wi-Fi では、通信のために追加の MAC アドレスが必要です。イーサネットの送信元および宛先 MAC と同じ送信元アドレス (SA) と宛先アドレス (DA) に加えて、Wi-Fi が機能するには送信元アドレス (TA) と受信者アドレス (RA) が必要です。これにより、合計 4 つの MAC アドレスになります。一般的なケースでは、クライアント (STA) が送信する場合は TA = SA、アクセス ポイント (AP) が STA に送信する場合は DA = RA であるため、通常は 3 つのアドレスのみが必要であり、AP は、使用可能な 4 つのアドレスのうち 3 つのアドレスのみを使用するように構成されます。

ブリッジモードのクライアントとは、TA != SA または DA != RA であり、4つのアドレスすべてが必要であることを意味しますが、APは3つのみに構成されています。そのため、一般的な構成ではWiFiをブリッジすることはできません。クライアントブリッジが機能するには、APとSTAの両方で4アドレスモードを有効にする必要があります。これは通常、次のように呼ばれます。ワイヤレス配信システム (WDS)ただし、互換性のない実装が複数存在する可能性があります。AP とすべての STA は互換性のある実装を使用する必要があります。

それで:

  • システムのブリッジが AP である場合、問題なく Wi-Fi をブリッジできます。これは、デフォルトの 3 アドレス モードを使用して、すべての AP が実行していることです。

  • ブリッジしようとしているシステムがシンプル クライアント (STA) の場合、ブリッジは機能しません。最近のドライバーでは、次のようなエラーが発生し、ワイヤレス インターフェイスをブリッジ ポートとして設定できなくなります。

    # ip link set wlan0 master bridge0
    Error: Device does not allow enslaving to a bridge.
    
  • 設定できる場合両方AP と STA を互換性のある WDS に接続します。たとえば、すべてが mac80211 と互換性のあるドライバーを使用して Linux を実行している場合は、次のコマンドで STA でこれを有効にできます。

    # iw dev wlan0 set 4addr on
    

そうすると、奴隷化される可能性がある。

    # ip link set wlan0 master bridge0
    # ip link show wlan0
    3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noqueue master bridge0 state DOWN mode DEFAULT group default qlen 1000
    [...]

iw コマンドを使用した 4 アドレス モードに関するドキュメントは、Linux ワイヤレス wiki にあります。APとクライアントモードで4アドレスを使用する

APの設定はここでは説明しません。ホストapd有効にするための特定の設定があります:

# WDS (4-address frame) mode with per-station virtual interfaces
# (only supported with driver=nl80211)
# This mode allows associated stations to use 4-address frames to allow layer 2
# bridging to be used.
#wds_sta=1

回避策として、単一のWifiデフォルトモード(3アドレスモード)接続で複数のコンテナまたはVMを別々のIPで同時に使用できるようにするが、1つMACアドレス(STAとして使用されるもの):通常DHCPと互換性がないデフォルトではMACアドレスに依存します(DHCPサーバーがDHCP クライアント識別子オプション)。 それは呼ばれていますipvlan(通常はコンテナ用)であり、TAPの対応物(通常はVM用)はIPVTAPL2 モードで使用すると、標準のイーサネット インターフェイスのように見えます。

(単純なIPネットワークネットワーク)コンテナは、ホスト上のインターフェイスを使用して、ゲートウェイ192.0.2.1を使用してIP LAN 192.0.2.0/24でWifi接続を確立した後、このように使用できます。無線LAN0:

# ip netns add testwifi
# ip link add link wlan0 name ipvl0 type ipvlan mode l2
# ip link set dev ipvl0 netns testwifi up
# ip -n testwifi address add 192.0.2.99/24 dev ipvl0
# ip -n testwifi route add default via 192.0.2.1
# ip netns exec testwifi ping -q -c1 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.

--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 5.372/5.372/5.372/0.000 ms

NetworkManagerに4アドレスモードに関連するオプションがあるかどうかは疑問です。IP アドレスこれはコンテナ/仮想化アプリケーションによってサポートされている必要があります。ルクセンブルクまたは libvirt (IPVTAP をネイティブにサポートしていないようです) ですが、NetworkManager では実際にはサポートされていません。

関連情報