Wifibox 0.10 - FreeBSD で Linux WiFi ドライバーを使用するための環境

Wifibox 0.10 プロジェクトが利用可能になりました。これは、必要なドライバーが不足しているワイヤレス アダプターを使用する FreeBSD の問題を解決することを目的としています。 FreeBSD にとって問題となるアダプターの動作は、ワイヤレス デバイス用のネイティブ Linux ドライバーがロードされている Linux でゲスト システムを起動することによって保証されます。

ドライバーを含むゲスト システムのインストールは自動化されており、必要なコンポーネントはすべて既製の Wifibox パッケージの形式でパッケージ化されており、付属の rc サービスを使用して起動時に起動されます。 スリープモードへの移行も含めて正しく処理されます。 この環境は Linux でサポートされているあらゆる WiFi カードで使用できる可能性がありますが、主に Intel チップでテストされています。 Qualcomm Atheros および AMD RZ608 (MediaTek MT7921K) ワイヤレス チップを搭載したシステムでも、正しい動作がテストされています。

ゲスト システムは、ワイヤレス カードへの転送アクセスを組織する Bhyve ハイパーバイザーを使用して起動されます。 ハードウェア仮想化 (AMD-Vi または Intel VT-d) をサポートするシステムが必要です。 ゲスト システムは、Musl システム ライブラリと BusyBox ユーティリティ セットに基づいて構築された Alpine Linux ディストリビューションに基づいています。 画像のサイズはディスク上で約 30MB を占有し、約 90MB の RAM を消費します。

ワイヤレス ネットワークに接続するには、wpa_supplicant パッケージが使用され、その構成ファイルはメインの FreeBSD 環境の設定と同期されます。 wpa_supplicant によって作成された Unix 制御ソケットはホスト環境に転送されるため、wpa_cli ユーティリティや wpa_gui ユーティリティ (net/wpa_supplicant_gui) などの標準 FreeBSD ユーティリティを使用してワイヤレス ネットワークに接続し、操作できるようになります。

新しいリリースでは、WPA をメイン環境に転送するメカニズムが再設計され、wpa_supplicant と hostapd の両方で動作できるようになりました。 ゲスト システムに必要なメモリ量が削減されました。 FreeBSD 13.0-RELEASE のサポートは終了しました。

さらに、Intel および Realtek チップ上のワイヤレス カード用に FreeBSD で提供されるドライバを改善する作業にも注目できます。 FreeBSD Foundation の支援を受けて、FreeBSD 13.1 に含まれる新しい iwlwifi ドライバーの開発が続けられています。 このドライバーは、Linux ドライバーと net80211 Linux サブシステムのコードに基づいており、802.11ac 標準をサポートし、新しい Intel ワイヤレス チップで使用できます。 必要なワイヤレス カードが検出されると、起動中にドライバーが自動的にダウンロードされます。 Linux ワイヤレス スタックのコンポーネントは、LinuxKPI レイヤーを使用して有効になります。 以前、iwm ドライバーは同様の方法で FreeBSD 用に移植されました。

並行して、Realtek RTW88 および RTW89 ワイヤレス チップ用のドライバー rtw88 および rtw89 の開発が開始されました。これらも、Linux から対応するドライバーを転送して LinuxKPI レイヤーを使用して動作するように開発されています。 rtw88 ドライバーは初期テストの準備ができていますが、rtw89 ドライバーはまだ開発中です。

さらに、2022 月のアップデートで修正された FreeBSD ワイヤレス スタックの脆弱性 (CVE-23088-80211) に関連する詳細と既製のエクスプロイトの公開についても言及できます。 この脆弱性により、クライアントがネットワーク スキャン モード (SSID バインドの前の段階) にあるときに、特別に設計されたフレームを送信することにより、カーネル レベルでコードを実行できます。 この問題は、アクセス ポイントによって送信されたビーコン フレームを解析する際の ieee2009_parse_beacon() 関数のバッファ オーバーフローによって発生します。 オーバーフローは、実際のデータ サイズがヘッダー フィールドで指定されたサイズと一致するかどうかのチェックを怠ったことが原因で発生しました。 この問題は、XNUMX 年以降に構築された FreeBSD のバージョンで発生します。

Wifibox 0.10 - FreeBSD で Linux WiFi ドライバーを使用するための環境

ワイヤレス スタックに関係しない FreeBSD への最近の変更には、ブート時間の最適化が含まれます。テスト システムでは 10 秒から 8 秒に短縮されました。 GEOM モジュールの Gunion は、読み取り専用モードでアクセス可能なディスク上で行われた変更を別のディスクに転送するために実装されました。 カーネルの暗号 API には、VPN WireGuard ドライバーに必要な暗号プリミティブ XChaCha20-Poly1305 AEAD と Curve25519 が用意されています。

出所: オープンネット.ru

コメントを追加します