WSL[2]はゲストLinuxシステムにどのような制限を課すのでしょうか?

WSL[2]はゲストLinuxシステムにどのような制限を課すのでしょうか?

Windows PCにWSL2を導入したらすぐに、CentOS 8.2に適合バージョン。調べてみると、ホストのNTFSファイルシステムをすぐに読み書きできることがわかりました。インターネットにも接続されていましたが、接続を管理する方法がわかりませんでした。Network Managerをインストールできましたが、コマンドCould not create NMClient objectを実行するたびにが表示されましたnmcli。SELinux( )が見つかりませんでしたgetenforce。firewalldをインストールしましたが、 がfirewall-cmdスローされましたFailed to connect to socket /run/dbus/system_bus_socketsystemctlエラーが発生します。System has not been booted with systemd...その後、「WSL 用 Fedora リミックス」Windows アプリ ストアで 9.99 ドルで提供されていましたが、次のような注意書きがありました。

次のパッケージは、WSL 用 Fedora Remix のデフォルト インストールから削除されました: grub、plymouth、kernel、sssd、linux-firmware、dracut、parted、e2fsprogs、iprutils、ppc64-utils、selinux-policy、policycoreutils、sendmail、firewalld、fedora-release、fedora-logos、fedora-release-notes。

それで、主な質問は、WSL によって Linux の機能がどのように制限されるかということです。

次に、当然ながら、私たちが興味を持っているのは、それらを回避する方法です。まず心配なのは、インターネットへの接続は安全かどうかです。何らかのサービスを介して WSL Linux に接続できる場合、ホスト PC に侵入するのを阻止するファイアウォールはないように見えます。上記で書いたことに関して: でそのエラーが発生するのはなぜですかnmcli? SELinux を実行することは可能ですか? でユニットを管理することは可能ですかsystemctl?

答え1

WSL2 は、本質的には実際の Linux カーネルとカスタム init システムを使用する Linux VM です。このカスタム カーネルは、特別なドライバーを使用して Windows ファイル システムにアクセスする方法を認識しており、仮想ネットワーク アダプターを介してインターネット アクセスを受け取ります。

sysvinitシステム標準の init システム (または)を使用していないためsystemd、 のように、システムが通常開始するすべてのサービスが開始されませんdbus。したがって、 を実行してsystemctlもサービスを開始または停止することはできません。dbusの実行を必要とするプログラムは、手動で開始するか、適切な sysvinit スタイルのスクリプトを使用して開始する必要があります。後者は、ほぼすべての init システムで機能するはずです。

WSL2 では、このカスタム init システムを使用するのは、起動がほぼ瞬時に行われるためです。そうでない場合、動作させるためには Linux システム全体が起動するまで待たなければなりません。したがって、完全な Linux システムをセットアップするパッケージや、起動にのみ必要なパッケージは必要ありません。

ファイアウォールを使用する場合は、Linux システムではなく、Windows システムで構成する必要があります。nftablesまたは をiptables直接使用することもできますが、 に依存するものはsystemd使用しないでください。同様の理由で、ネットワーク アクセスは Windows によって制御され、Windows ネットワーク スタックの動作が反映されるため、Network Manager は使用しないでください。

なぜ SELinux が WSL で動作しないのかはわかりません。Microsoft Linux カーネルが SELinux を組み込んでいないか、有効にしていないためかもしれませんし、他のオペレーティング システムが SELinux を必要とせず (たとえば、Debian や Ubuntu は AppArmor を好む)、複数のモジュールを扱いたくないためかもしれませんし、drvfs (WSL ファイル システム) が必要な機能をサポートしていないためかもしれません。

完全に機能する Linux エクスペリエンスを希望する場合は、実際の Linux ディストリビューションをインストールする必要があります。WSL2 は、デュアルブートを必要とせずに Windows システムを使用して Linux 用のアプリケーションを開発または実行したい場合や、Windows を使用する必要があるが Linux を好む場合に最適ですが、完全な Linux システムの代替にはなりません。

関連情報