理論:WIFI親インターフェースを持つTAPインターフェース

理論:WIFI親インターフェースを持つTAPインターフェース

複数のLinux TAPインターフェイスを作成し、単一のWIFIアダプタを介してパケットを送受信できるようにしたいと思います。すべての意図と目的のために、TAPインターフェイスは完全なネットワークアダプタとして機能することを望みます。彼らは自分のDHCPアドレスを要求し、他のネットワークアダプタのようにローカルネットワークと対話できる必要があります。

私はイーサネットアダプタを使ってこれを達成しましたが、WiFiは別の獣だと聞きました。正確な理由は覚えていませんが、「ラジオ放送アドレスあたりIPアドレス1個」と関連がありました。

TAPインターフェイスを使用してWiFi接続を介してネットワークをブリッジできますか? Network Managerを使用して実行できる設定はありますか?誰かが記事を1つまたは2つにリンクすることができますか?私はこれについて何も見つけるのが難しいです。

答え1

このネットワークエンジニアリングSEリンク802.11フレームヘッダーの4つのレイヤ2アドレスイーサネットとWi-Fiの違いの素晴らしい説明です。

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

ブリッジモードのクライアントは上記のTA! = SAまたはDA! = RAを意味し、4つのアドレスがすべて必要ですが、APは3つだけで構成されています。これが一般的な構成ではWi-Fiブリッジが不可能な理由です。クライアントブリッジが機能するには、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に統合します。たとえば、すべてのデバイスがLinuxを実行し、ドライバがmac80211と互換性がある場合は、次のように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 設定はここの範囲外です。使用するとき所有者、有効にする必要がある特定の設定があります。

# 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

単一のWi-Fiネイティブモード(3アドレスモード)接続を使用して、別々のIPを持つ複数のコンテナまたは仮想マシンを同時に使用できる回避策もあります。一つMACアドレス(STAのアドレスとして使用):したがって通常DHCPと互換性がありませんデフォルトではMACアドレスに依存します(DHCPサーバーが許可しない限り)。DHCPクライアント識別子オプション)。知られているIPVLAN(コンテナで一般的に使用されます)とそれに対応するTAP(仮想マシンで一般的に使用されます)が呼び出されます。IPVTAP。 L2モードで使用すると、標準のイーサネットインターフェイスのように見える機能を提供します。

(シンプルIPネットワークネットワーク)コンテナ、ホストのインターフェイスを使用してIP LAN 192.0.2.0/24のゲートウェイ192.0.2.1とWi-Fi接続を確立した後、次のように使用できます。無線LAN 0:

# 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アドレスモードに関連するオプションがあるかどうかは真剣に疑われます。についてはIPVLAN/IPVTAPこれはコンテナ/仮想化アプリケーションでサポートする必要があります。LXCあるいは、実際にNetworkManagerが提供しないlibvirt(デフォルトではIPVTAPをサポートしていないようです)。

関連情報