本記事は「 TTDC Advent Calendar 2024 」4日目の記事です。
概要
wsl2にてシステムを構築する際、WindowsとLinuxで同じネットワークを使いたい場面が発生しました.
ネットワーク設定を間違えると、深みにはまってしまい貴重な時間を無駄にしてしまうので、mirroredネットワーク設定とデバッグ方法を簡単に紹介します.
wsl2 mirroredネットワークとは
Windows(Windows11 22H2 以降)にあるネットワーク インターフェイスを wsl2 にミラーリングすることで、同じipアドレスを使うことができるようになります.
作業環境
Windowsホスト環境
プロセッサ:13th Gen Intel(R) Core(TM) i7-1355U 1.70 GHz
メモリ:32.0 GB
エディション:Windows 11 professional
バージョン:22H2
WSL バージョン: 2.3.26.0
カーネル バージョン: 5.15.153.1-2
wsl2 Linux 仮想環境
ディストリビューション:Ubuntu 22.04 LTS
前準備
wsl2のバージョンが古いとmirroredネットワークが動作しないので、Windows PowerShellを使ってwsl2をアップデートします.
-
Windows PowerShellを 「管理者として実行する」 で選択、起動します.
-
wsl2 をアップデートします.
wsl --update
-
wsl2 の設定を更新するため、wsl2をシャットダウンします.
wsl --shutdown
設定手順
-
新規で.wslconfigファイル作成する場合
Windows PowerShellにて下記コマンド実行します.(不要な設定も入っているのでカスタマイズしてください)# %UserProfile%\.wslconfig # example C:\Users\【Windowsログインユーザ名】 cd ~ echo "[wsl2] memory=8GB # examle 8GB (must be an integer) swap=0 # swap off:0, swap MB is manual, examole 500MB networkingMode=mirrored # ここがポイント # エンコーディングを指定して保存(UTF-8にしないと動作しない) " | %{ $_+"`n" } | ForEach-Object{ [Text.Encoding]::UTF8.GetBytes($_) } | Set-Content -Encoding Byte -Path .wslconfig
-
.wslconfigファイルが既にある場合
Windowsホスト側で.wslconfigファイルメモ帳で直接編集し、「networkingMode=mirrored」を設定します.
.wslconfigファイルは、C:\Users\【Windowsログインユーザ名】の直下にあります.
確認方法
wsl2を再起動してWindowsと同じipアドレスが設定されているか確認します.
- Windowsホスト側:ipconfigコマンド
- wsl2側:ifconfigコマンド
Windowsホスト側とwsl2側で同じipアドレスが設定されていることを確認できます.
デバッグ方法
wsl2のパケットはWindows側には転送されないため、wsl2にてパケットキャプチャーして動作確認します.私は、パケットキャプチャーにWiresharkを使用しているため、インストールコマンドと起動方法を記載します.
# install
sudo apt update
sudo apt upgrade
sudo apt install wireshark
# load wireshark
sudo wireshark
wsl2側のパケットキャプチャーに通信パケットが表示されます.
※想定パケットをキャプチャできない場合は、システム構成を見直してください.
まとめ
Windows11(Windows11 22H2 以降)に、WSL2を使い mirroredネットワークの設定を行い簡単にデバッグする方法を記載しました.
開発環境構築のお役に立てると幸いです.
最後まで読んでいただき、ありがとうございました!
今後も機械学習の活用を始め、開発環境やシミュレーションなど幅広く技術情報発信をしていく予定です!
最後になりますが、本記事の内容に誤りなどあれば、コメントにてご教授お願いいたします.