WSL の Private IP アドレスを取得する
WSL 上で立てた開発サーバの内容を、Windows ホスト側のブラウザで表示しようと思った時に、こんな風にコマンドを叩くと、WSL の Private IP アドレスが見える。
$ npx sirv-cli --host=0.0.0.0
- Local: http://0.0.0.0:8080
- Network: http://172.17.30.130:8080
172.17.30.130
というのがそれだ。この値を取得するコマンドを調べてみる。
- WSL 内で実行する
$ hostname -I
- PowerShell で実行する
PS> wsl -e hostname -I
一方、/etc/resolv.conf
内を見てみると、コレとは違う IP アドレス 172.17.16.1
というモノが記述されていた。この値は次の方法で取得できる。
- WSL 内で実行する
$ cat /etc/resolv.conf | grep nameserver | cut -d ' ' -f 2
- PowerShell で実行する
PS> netsh interface ipv4 show ipaddress | Select-String -Pattern '\b172.*' | ForEach-Object { $_.Matches } | ForEach-Object { $_.Value }
PS> ipconfig | Select-String -Pattern '\b172.*' | ForEach-Object { $_.Matches } | ForEach-Object { $_.Value }
PS> (Get-NetIPAddress | Select-Object IPAddress | Where-Object { $_.IPAddress -Match '^172.*' }).IPAddress
コチラの IP アドレスを利用して http://172.17.16.1:8080/
なんていう風にアクセスしても、何も表示できない。hostname -I
で確認できる http://172.17.30.130:8080/
じゃないと透過できないようだ。
この辺、何がどうなって違う IP が見えるんだっけ?それぞれ何なんだっけ?っていうのがよく分かんなくなっちゃった。w