WSL のインスタンス IP 以外の IP アドレスでは SSDP 検出が機能しない

WSL のインスタンス IP 以外の IP アドレスでは SSDP 検出が機能しない

Windows から WSL/Linux にプロセスを移植しようとしています。以前は、2 つの Windows プロセスが、SSDP 検出が成功した後、TCP 接続を介して通信していました。今度は、Windows から Linux (WSL) への同様の通信を機能させたいと思っています。Windows<->Windows の場合、localhost/127.0.0.1 を使用していましたが、SSDP 検出は Windows<->WSL の WSL インスタンス IP でのみ機能するようです。

ifconfigWSL では次のようになります:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.26.253.18  netmask 255.255.240.0  broadcast 172.26.255.255
        inet6 fe80::215:5dff:fed7:82b  prefixlen 64  scopeid 0x20<link>
        ether 00:15:5d:d7:08:2b  txqueuelen 1000  (Ethernet)
        RX packets 422  bytes 72257 (72.2 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 299  bytes 27676 (27.6 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 378  bytes 19949 (19.9 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 378  bytes 19949 (19.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Windows でプロセスを実行し、その他のプロセスを WSL で実行している場合、SSDP 検出は 172.26.253.18 に対して機能します。

考えられる理由は、WSL 内で 127.0.0.1 を使用すると、それが WSL 環境自体のループバック インターフェイスを参照することです。127.0.0.1 に送信された SSDP パケットは WSL 環境内に留まり、ホストの Windows 環境やローカル ネットワーク上の他のデバイスには表示されません。

関連情報