WSL向けのWindowsポートフォワード設定をスクリプト化する - @ledsun blog が動きませんでした。
パッとみ気が付きませんでしたが、netsh interface portproxy add v4tov4 listenport=8000 connectaddress=
は途中で途切れています。
正しくは次のように、connectaddresのあとにWSLのIPアドレスが続き、さらにconnectportパラメータが続く必要があります。
netsh.exe interface portproxy add v4tov4 listenport=8000 connectaddress=172.25.143.70 connectport=8000
バッチファイルの全文は以下です。
FOR /F "usebackq" %%i in (`wsl exec hostname -I`) DO @SET IP=%%i netsh interface portproxy add v4tov4 listenport=8000 connectaddress=%IP% netsh.exe interface portproxy show v4tov4 netsh interface ip show address | findstr "IP Address" pause netsh.exe interface portproxy delete v4tov4 8000 netsh.exe interface portproxy show v4tov4
このうち上手く行っていないのは、最初の行のwsl exec hostname -I
です。
これだけを実行すると次のように沢山のIPアドレスが表示されます。
C:\Windows\System32>wsl exec hostname -I 172.25.143.70 172.19.0.1 172.23.0.1 172.20.0.1 172.24.0.1 172.18.0.1 172.21.0.1 172.22.0.1 172.17.0.1
どういうことでしょうか? WSL側でIPアドレスを確認してみましょう。
ledsun@MSI:/m/c/U/led_l►ip addr 20:40 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:15:5d:5d:00:29 brd ff:ff:ff:ff:ff:ff inet 172.25.143.70/20 brd 172.25.143.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::215:5dff:fe5d:29/64 scope link valid_lft forever preferred_lft forever 3: br-ca29cad65f14: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:29:38:75:78 brd ff:ff:ff:ff:ff:ff inet 172.24.0.1/16 brd 172.24.255.255 scope global br-ca29cad65f14 valid_lft forever preferred_lft forever 4: br-e8b0de7f1b72: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:8f:c5:a4:21 brd ff:ff:ff:ff:ff:ff inet 172.18.0.1/16 brd 172.18.255.255 scope global br-e8b0de7f1b72 valid_lft forever preferred_lft forever 5: br-f8b610f612b1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:5c:30:4b:23 brd ff:ff:ff:ff:ff:ff inet 172.21.0.1/16 brd 172.21.255.255 scope global br-f8b610f612b1 valid_lft forever preferred_lft forever 6: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:f8:ed:2b:a4 brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 valid_lft forever preferred_lft forever 7: br-543258e3ee83: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:b8:24:bc:b8 brd ff:ff:ff:ff:ff:ff inet 172.22.0.1/16 brd 172.22.255.255 scope global br-543258e3ee83 valid_lft forever preferred_lft forever 8: br-7dfb510f7ade: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:42:89:28:64 brd ff:ff:ff:ff:ff:ff inet 172.19.0.1/16 brd 172.19.255.255 scope global br-7dfb510f7ade valid_lft forever preferred_lft forever 9: br-93389832bec3: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:3c:0e:c8:07 brd ff:ff:ff:ff:ff:ff inet 172.23.0.1/16 brd 172.23.255.255 scope global br-93389832bec3 valid_lft forever preferred_lft forever 10: br-998f0cb53ef4: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:58:94:61:57 brd ff:ff:ff:ff:ff:ff inet 172.20.0.1/16 brd 172.20.255.255 scope global br-998f0cb53ef4 valid_lft forever preferred_lft forever
実際、沢山出てきます。 WSL上で動かしているWebアプリケーションを外部から参照する - @ledsun blog で試したときは1つのIPアドレスが得られていました。 何が変わったのでしょうか? ChatGPTにネットワークインターフェースについて質問してみました。
br-998f0cb53ef4 はDockerに関連したネットワークインターフェースの名前です。具体的には、Dockerが作成するブリッジネットワークのインターフェースの名前の一例として見られます。
なるほど、そういえばWSLにDockerをインストールした記憶があります。