WSL与Windows跨环境SSDP发现异常:仅WSL实例IP可用,本地回环地址失效求助
WSL与Windows跨环境SSDP发现异常:仅WSL实例IP可用,本地回环地址失效求助
最近我在把一套Windows上的进程迁移到WSL/Linux环境,遇到了跨环境SSDP发现和TCP通信的问题,想跟大家请教下。
之前在纯Windows环境下,两个进程是先通过SSDP完成服务发现,再建立TCP连接通信的,当时用localhost或者127.0.0.1就能正常工作。但现在要实现Windows主机到WSL实例的跨环境通信,我发现只有用WSL实例的专属IP才能让SSDP发现正常运行,用本地回环地址完全不行。
我在WSL里执行ifconfig得到的网络信息如下:
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端分别运行对应进程时,用172.26.253.18这个WSL的eth0 IP,SSDP发现能正常完成;但换成127.0.0.1就完全没反应。
我自己琢磨了下可能的原因:WSL环境里的127.0.0.1只指向它自身的本地回环接口,发送到这个地址的SSDP数据包会被限制在WSL内部,根本传不到Windows主机或者局域网里的其他设备上,所以Windows端自然收不到这些发现请求。
备注:内容来源于stack exchange,提问作者Piyush Kumar Gupta
相关产品推荐
相关产品推荐

