Bridge Wifi が Debian Buster で動作しません。

Bridge Wifi が Debian Buster で動作しません。

私のLinux技術はせいぜい初心者ですが、学びようとしています。ですから、この事実とこの質問を考えてみてください。 Debian Busterがインストールされたノートパソコンがあります。イーサネットとWiFiアダプタを一緒に接続する必要があります。

私はたくさんのチュートリアルを読んでいます。Debian を使って WiFi から Ethernet へのネットワークインターフェイスブリッジを設定するには?しかし、この記事では次のように指摘します。

"wlan0インターフェイスもリモートAPに接続するように設定する必要があります。",

だからすぐに試しました。以下は私の設定です。言うまでもなく、{ssid}と{password}は実際の値に置き換えられました。

auto enp0s31f6
allow-hotplug enp0s31f6
iface enp0s31f6 inet manual

auto wlp4s0
allow-hotplug wlp4s0
iface wlp4s0 inet manual
                wpa-ssid {ssid}
                wpa-psk  {password}

auto br0
iface br0 inet static
bridge_ports enp0s31f6 wlp4s0
address 10.0.10.8
netmask 255.255.255.0
gateway 10.0.10.1
dns-domain prox
dns-nameservers 8.8.8.8

だからこの種の作品があります!この場合、イーサネット側は機能しますがWi-Fi側は機能しないため、イーサネットが切断されるとインターネット接続が失われ、このアクティビティの目的が失われます。私がここで何か間違っているのでしょうか?ワイヤレスインターフェイスをワイヤレスネットワークに接続するには別の方法を使用する必要がありますか?

この設定を使用してワイヤレスで接続すると、ワイヤレスネットワークに接続できますが、明らかにブリッジでは機能しません。

allow-hotplug wlp4s0
iface wlp4s0 inet static
                wpa-ssid {ssid}
                wpa-psk  {password}
 address 10.0.10.8
 netmask 255.255.255.0
 gateway 10.0.10.1
 dns-domain prox
 dns-nameservers 8.8.8.8 

助けてくれてありがとう。一週間の大部分を作動させようとしましたが、ほとんどあきらめています。

###修正する###

返信を送ってくれた@dirktに感謝します。理解できますね。これにより、根本的な問題をより明確に説明できるようになります。ネットワークアダプタを使用する前にブリッジを適用するアプリケーションを使用しています。

その後、アプリケーションはブリッジを使用してネットワークと通信します。ブリッジで使用するには、ネットワークアダプタが1つだけ必要です。家にはEthernetがあまりないので、Wi-Fiアダプタを好みます(私はこの設定を使用しています)。

だから、イーサネット側を気にせずにWiFiアダプタをブリッジしようとしても動作しません。動作を試みますが(つまり、エラーは発生しません)、ブリッジにIPアドレスを発行しません。

尋ねる前に、このアプリケーションはプロのオーディオ業界向けの独自のオーディオアプリケーションです。メーカーがなぜこれが最善の方法だと思うのかわかりませんが、私が読んだところによると、これは奇妙なことではないようです。ソフトウェア部分が仮想化されているため、一部の仮想化プラットフォームも同じことを行うと思います。おそらくそれが理由であろう。

したがって、上記を考慮してWiFiアダプタを片面ブリッジとしてのみ使用できます。これほど十分ではありませんか?この問題は解決できますか?Wi-FiクライアントとEthernetの問題を接続できませんか?それとも私がどういう意味なのか誤解したのでしょうか?

答え1

イーサネットとWiFiアダプタを一緒に接続する必要があります。

FAQは次のとおりです。 Wi-Fiはデフォルトで3アドレスモードを使用します。その結果Wi-Fi クライアントとイーサネットを接続できません。

(技術的には可能ですが動作しません。Wi-Fiネットワークのパケットはブリッジされており、同じサブネットにあってもイーサネットの宛先に到達しません。 .)

しかし、あなたはできるブリッジaWiFiアクセスポイント(AP)とイーサネット。

だからこれXYの問題:あなたのYは「Debian BusterでWi-FiとLANを接続する必要があります」ですが、Xが何であるかわかりません(おそらくあなたの家にWi-FiとLANがあり、同じサブネットにありたいですか?)。

Xが何であるかに応じて、これを達成する別の方法があります。たとえば、Wi-Fi APとLANをブリッジできます。ルータから

答え2

予備説明

〜のように@dirktはすでに書いています。、ブリッジングの制限は、ネットワークスタックがワイヤレスインターフェイスを介して別のソースMACアドレスを使用してフレームを送信しようとする(および失敗する)のを防ぐことです。この制限の詳細については、このNE SE Q / Aを参照してください。802.11フレームヘッダーの4つのレイヤ2アドレス。リンクタイトルにもかかわらず、デフォルトでは3つのMACのみが使用され、ステーションクライアント(「STA」)は単純なエンドポイントとして扱われるのではなく、アクセスポイント(「AP」)は3番目のMACをブリッジとして使用します。 4日欠席。 STAブリッジングを許可する4アドレスモード(「4A」)に切り替えるには、4AをサポートするようにAPを再設定する必要があります。例えば所有者ブリッジを完全に構成する必要がある各STAに対して、4Aモードで追加のローカルクローンワイヤレスインターフェイスを作成することで、通常どおり通常のSTAのサービス提供をサポートしたり、4AモードSTAに異なるサービスを提供したりできます。ほとんどのパブリックカスタマーAPはこの機能をサポートしていません(再構成可能APを実行しない限り)。所有者そして、フードの下に適切なWi-Fiハードウェア/ファームウェアが必要です)。

OPの特定のケースでは、追加の手がかりがあります。ブリッジは単一のブリッジポートを使用するので、大丈夫です。と言えるただ仮定してみてください一つソースMACアドレスはブリッジから来ます。ブリッジがワイヤレスカードのMACアドレスで設定されている場合、プロトコルに固有の制限はこの場合適用されません。ただし、この特定のケースでは、ワイヤレスインターフェイスの設定を許可するようにネットワークスタックに通知する方法はありません。ブリッジポートへ。誰かが他の人が欲しいなら相互作用(いいえブリッジポート)このように振る舞うIPVLAN最も簡単な選択になります。

だから使用交通制御機能は、ハブの回避策と同じ機能を使用します。

  • 着信ワイヤレスインターフェイスのすべてのフレームを取得して移動し、着信ミラーインターフェイスを表示します。
  • このミラーリングされたインターフェイスから出てくるすべてのフレームを取得し、出て行く準備ができたワイヤレスインターフェイスに進みます(電波で)。
  • ワイヤレスインターフェイスの代わりにミラーインターフェイスを使用するようにネットワークスタックを設定するか、このミラーインターフェイス(ワイズピア)をブリッジポートとして使用し、ワイヤレスインターフェイスをブリッジポートとして設定することを再現します。

これにより、対応する仮想「ハブ」の他のポートがOPの場合、ブリッジポートとして物理ブリッジに接続されます。技術的にはブリッジポートに設定されたワイヤレスインターフェイスではないため、カーネルはこれを無効にする必要がないため、特別な制限はありません。

注:私はワイズ一対のインターフェース。使うインターフェースも機能しますが、選択しましたワイズインターフェイスのペアには2つの理由と1つの追加の理由があります。

  • 年をとるIP ルート 2/カーネルバージョンtc ... action mirred次にリダイレクトできません。入り口しかし、ただ出口。 ㅏワイズ一対のインタフェースは方向インバータとして機能します。出口片側になる入り口一方、この回答は以前のシステムでも機能します。

  • ネットワークスタックの仕組み(そこに薬があります)、これはAF_PACKET(tcpdump)キャプチャを非対称にします。入り口AF_PACKET複製後に発生し、tcpdump表示できません。入り口トラフィックは次にリダイレクトされます。入り口ミラーインターフェイスでは、両方のインターフェイスで同時に表示できます。出口これはAF_PACKETの前に発生します。この回答は一般的な動作を維持します。つまり、ワイヤレスインターフェイスとミラーリングインターフェイス(およびミラーリングインターフェイス)の両方の方向が表示されます。ワイズ実際には関連していないピアインターフェイス)。

  • ボーナス理由:nftablesやっと手に入れた出口カーネル 5.16/5.17 ではまだサポートできない可能性があります。同様に自由に選択することもできません。方向フレーム移動用。そしてワイズ方向性インバータとして、すべての条件が満たされます。入り口到着出口交換も可能交通制御そしてnftables

ミラーインターフェース(またはワイズここで実装(ミラーリングされたインターフェイスの反対側)はIPアドレスを直接受信できますが(DHCPを使用することを含む)、OPの問題を解決するブリッジポートとして使用されます。つまり、アプリケーションにブリッジが必要です。

準備する

OPで解決する必要があるいくつかの詳細を削除します。

  • ネットワーク接続が一時的に切断されるため、リモートで設定しないでください。

  • OPは、IPアドレス(IPv4またはIPv6なし)、DNS、またはその他のカスタム設定を要求せずにSSIDにのみ接続するようにWi-Fiを再設定する必要がありました。これはブリッジインターフェイス用です。設定は、元の永続アドレスであるか、この回答の12:34:56:78:9a:bcなどの他のアドレス(非ランダムモード)である場合でも、常に無線インターフェイス上で同じMACアドレスを維持する必要があります。

  • システム構成への統合はOPを介して行う必要があります。ここでは手動設定のみ使用できます。ブリッジはワイヤレスで接続されるまで実際の接続にはならないため、急いで無駄に起動しないでください。最近では、ワイヤレスインターフェイスの代わりに一般的な設定がブリッジに設定されます(たとえば、DHCPクライアントの実行を含む)。

  • br_netfilterカーネルモジュールをロードしないでください。現在ロードされている場合は副作用を避けてくださいrmmod br_netfilter(なぜならDockerはlibvirtブリッジネットワークを停止します。そして多くのブリッジ設定)。

したがって、変更する前にサンプル構成を定義してみましょう。唯一の関連情報は、ワイヤレスインターフェイス名wlp3s0と対応するMACアドレス(この場合は12:34:56:78:9a:bc)です。

# ip link show dev wlp3s0
3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
    link/ether 12:34:56:78:9a:bc brd ff:ff:ff:ff:ff:ff

スピード

  • お好みのネットワーク設定ツールを使用して接続し、IPv4またはIPv6のアドレスを要求しないようにWi-Fiを再設定してください。

    これを行うことはOPに依存します。

  • vmbr0同じMACアドレスでブリッジインターフェイスを作成し、wlp3s0特殊機能を無効にします(予期しないトラフィックの発生を防ぐため)。

    ip link add name vmbr0 address 12:34:56:78:9a:bc type bridge stp_state 0 forward_delay 0 mcast_snooping 0 mcast_router 0
    

    または、すでに作成されている場合は設定を変更します。

    ip link set dev vmbr0 down
    ip link set dev vmbr0 address 12:34:56:78:9a:bc type bridge stp_state 0 forward_delay 0 mcast_snooping 0 mcast_router 0
    
  • 作るワイズインターフェイスはvmbr0p1一意のブリッジポートに設定され、vmbr0割り当てられたピアリンクと同じMACアドレスを持ちますwlp3s0mirred(MACアドレスは重要ではありません)。

    ip link add name vmbr0p1 address 12:34:56:78:9a:bc master vmbr0 type veth peer name wlp3s0mirred
    
  • IPv6 SLAACなどの独自のトラフィックを再設定またはwlp3s0作成しvmbr0p1ませんwlp3s0mirred。この3つのインターフェイスはブリッジポート(または機能的にブリッジポートと同じ)です。

    sysctl -w net.ipv6.conf.vmbr0p1.disable_ipv6=1
    sysctl -w net.ipv6.conf.wlp3s0mirred.disable_ipv6=1
    sysctl -w net.ipv6.conf.wlp3s0.disable_ipv6=1 #1st bullet should already have done this one
    

    徹底的に説明する(オプション):

    ip link set dev wlp3s0 arp off
    ip link set dev wlp3s0mirred arp off
    ip link set dev vmbr0p1 arp off # this one is probably already forced by being a bridge port.
    

インターフェイスは、次のコマンド配置前にすでに存在している必要があります。

  • トラフィックリダイレクト

    • wlp3s0mirredリダイレクト済み入り口wlp3s0到着出口

      • 使用TC

        tc qdisc add dev wlp3s0mirred ingress
        tc filter add dev wlp3s0mirred ingress matchall action mirred egress redirect dev wlp3s0
        
      • 上記の代わりに、以下を使用してください。nftables

        nft add table netdev hijack
        nft add chain netdev hijack towireless '{ type filter hook ingress device wlp3s0mirred priority 0; policy accept; }'
        nft add rule netdev hijack towireless fwd to wlp3s0  
        
    • wlp3s0リダイレクト済み入り口wlp3s0mirred到着出口

      ⚠️質問があります。:WPAは次のように異なります。イポールイーサネットフレームタイプ0x888E。フレームをハイジャックしていて、認証デーモン(wpa_supplicant)にブリッジからそれを読み取るように指示できないため、ブリッジを正常に使用するように指示することができないため、まだブリッジでEAPOLフレームを探していますwlp3s0。これらのフレームを引き続き使用できるwlp3s0ようにするには、まず例外を追加する必要がありますwpa_supplicant。それ以外の場合は、最初の接続が成功しても最後のフィルタのみを使用して(次の例外なしで)実行された次のキーの再生成は失敗します(そして追加の再接続も成功しません)。無線インターフェイスが絶えず接続され、切断されているようです。

      • 使用TC

        tc qdisc add dev wlp3s0 ingress
        tc filter add dev wlp3s0 ingress pref 1 protocol 0x888e matchall action pass
        tc filter add dev wlp3s0 ingress pref 2 matchall action mirred egress redirect dev wlp3s0mirred
        
      • 上記の代わりに、以下を使用してください。nftables

        nft add table netdev hijack # already done but doesn't fail to write it again
        nft add chain netdev hijack fromwireless '{ type filter hook ingress device wlp3s0 priority 0; policy accept; }'
        nft add rule netdev hijack fromwireless ether type 0x888e accept
        nft add rule netdev hijack fromwireless fwd to wlp3s0mirred
        
  • すべてのインターフェース設定

    ip link set dev vmbr0p1 up
    ip link set dev wlp3s0mirred up
    ip link set dev vmbr0 up
    

この答えは一つのことを可能にします。ブリッジはシステムの基本インターフェイスであり、切り替えに使用できます。ノーマルトラフィックは、イーサネット接続を介して使用されるのと同じ方法でWi-Fi接続を介して送信されます。

これが保証しないのは、実際に動作するためにブリッジが必要な独自のアプリケーションを作成することです。これは、ブリッジが必要な理由によって異なります。もしあれば以上他の送信元MACアドレスを使用するトラフィックが原因ですが、まだ機能していない可能性があります。

関連情報