Yanor.net/
Wiki
Blog
GitHub
Sandbox
開始行:
* WSL2上で起動しているアプリに外部のPCからアクセスできる...
** 問題 [#xea6acb5]
- WSL2のLinuxのIPアドレスはWSL2を起動しているPCのIPアドレ...
-- (WSL1ではLinuxのIPアドレスはWSL1を起動ているPCのIPア...
- また、WSL2のLinuxはPCを再起動するたびにIPアドレスが変わる
- したがって、このままでは外部のPCからWSL2のLinuxにIPアド...
** 解決方法 [#hcab1c0f]
- WSL2を起動しているPC(Windows)にポートフォワーディング...
- ポートフォワーディング設定はスクリプトにして、PC起動時...
** ポートフォワーディング設定スクリプト [#m1356b35]
$ip_in_linux = bash.exe -c 'ip -4 address show eth0 | gr...
$found = $ip_in_linux -match '\d{1,3}\.\d{1,3}\.\d{1,3}\...
if (!$found) {
Write-Output "The Script Exited, the ip address of WSL...
exit;
}
$ports_in_linux = @(22, 80, 443, 8000);
$_ports_in_linux = $ports_in_linux -join ",";
Invoke-Expression "Remove-NetFireWallRule -DisplayName '...
Invoke-Expression "New-NetFireWallRule -DisplayName 'WSL...
Invoke-Expression "New-NetFireWallRule -DisplayName 'WSL...
for ($i = 0; $i -lt $ports_in_linux.length; $i++) {
$port = $ports_in_linux[$i];
Invoke-Expression "netsh interface portproxy delete v4...
Invoke-Expression "netsh interface portproxy add v4tov...
}
- $ports_in_linuxは自分の環境に合わせて書き換える
- 上のスクリプトを適当なファイル名(wsl_portforwading.p1...
- ポートフォワーディングの設定が残ってしまった場合は、自...
** タスクスケジュールにスクリプトの実行を登録 [#b4db62ae]
- WIN+Sキーを押して、'''taskschd.msc'''と入力して、出てき...
- タスクスケジューラーが起動するので、右上のペインから「...
- 基本タスクの作成ウィザードが開くので、名前に適当な名前...
- いつタスクを開始するかを聞かれるので、「ログオン時」を...
-- プログラムに''' C:\WINDOWS\System32\WindowsPowerShell\...
-- 引数の追加に'''c:\scripts\wsl2-portforwading.ps1''' (...
-- と入力して、次へ
- タスクで度の操作を実行しますかを聞かれるので、「プログ...
- 完了ボタンを押して、ウィザードを閉じる
- タスクスケジューラーの真ん中のペインに今作ったタスク(W...
- プロパティのダイアログが開くので、全般タブを選んで、「...
** 参考 [#ffd83159]
https://github.com/microsoft/WSL/issues/4150#issuecomment...
終了行:
* WSL2上で起動しているアプリに外部のPCからアクセスできる...
** 問題 [#xea6acb5]
- WSL2のLinuxのIPアドレスはWSL2を起動しているPCのIPアドレ...
-- (WSL1ではLinuxのIPアドレスはWSL1を起動ているPCのIPア...
- また、WSL2のLinuxはPCを再起動するたびにIPアドレスが変わる
- したがって、このままでは外部のPCからWSL2のLinuxにIPアド...
** 解決方法 [#hcab1c0f]
- WSL2を起動しているPC(Windows)にポートフォワーディング...
- ポートフォワーディング設定はスクリプトにして、PC起動時...
** ポートフォワーディング設定スクリプト [#m1356b35]
$ip_in_linux = bash.exe -c 'ip -4 address show eth0 | gr...
$found = $ip_in_linux -match '\d{1,3}\.\d{1,3}\.\d{1,3}\...
if (!$found) {
Write-Output "The Script Exited, the ip address of WSL...
exit;
}
$ports_in_linux = @(22, 80, 443, 8000);
$_ports_in_linux = $ports_in_linux -join ",";
Invoke-Expression "Remove-NetFireWallRule -DisplayName '...
Invoke-Expression "New-NetFireWallRule -DisplayName 'WSL...
Invoke-Expression "New-NetFireWallRule -DisplayName 'WSL...
for ($i = 0; $i -lt $ports_in_linux.length; $i++) {
$port = $ports_in_linux[$i];
Invoke-Expression "netsh interface portproxy delete v4...
Invoke-Expression "netsh interface portproxy add v4tov...
}
- $ports_in_linuxは自分の環境に合わせて書き換える
- 上のスクリプトを適当なファイル名(wsl_portforwading.p1...
- ポートフォワーディングの設定が残ってしまった場合は、自...
** タスクスケジュールにスクリプトの実行を登録 [#b4db62ae]
- WIN+Sキーを押して、'''taskschd.msc'''と入力して、出てき...
- タスクスケジューラーが起動するので、右上のペインから「...
- 基本タスクの作成ウィザードが開くので、名前に適当な名前...
- いつタスクを開始するかを聞かれるので、「ログオン時」を...
-- プログラムに''' C:\WINDOWS\System32\WindowsPowerShell\...
-- 引数の追加に'''c:\scripts\wsl2-portforwading.ps1''' (...
-- と入力して、次へ
- タスクで度の操作を実行しますかを聞かれるので、「プログ...
- 完了ボタンを押して、ウィザードを閉じる
- タスクスケジューラーの真ん中のペインに今作ったタスク(W...
- プロパティのダイアログが開くので、全般タブを選んで、「...
** 参考 [#ffd83159]
https://github.com/microsoft/WSL/issues/4150#issuecomment...
ページ名: