将mDNS查询从WSL子网重新路由到Windows主机子网

问题描述 投票:1回答:1

Heya伙伴编码人员/开发人员/网络人员/开发人员/ ...

我在WSL2(Windows 10 2004版本)的上下文中对mDNS / DNS-SD设置有问题

我在家中使用主服务器和Raspberry Pi进行了非常简单的设置,我想激活DNS服务发现,因此使我能够采用一种简单的方法在Raspberry PI上自动发现服务器。] >

使用一个简单的库,例如dnssd,或者甚至自己广播正确的数据,当不使用WSL2时,我都设法使其轻松工作。但是,我要求使其在WSL2上运行,这使事情变得复杂。

由于WSL2在其自己的子网上运行,因此广播不再起作用。在子网上使用mDNS仅在该子网上有效。但是Windows已经在主机和WSL之间重新路由了一些广播流量。

这很容易测试:从我的服务器到依赖mDNS的Pi的Avahi地址执行简单的Ping

enter image description here

在屏幕的左侧,您可以在主机网络接口上看到Wireshark捕获的流量,而在右侧,您可以在WSL网络接口上看到Wireshark捕获的流量。前三行是简单的ping:它是在WSL的上下文中执行的,但是此处显示的IP地址-172.28.192.1-不是WSL客户端的IP地址,它是内部DNS服务器的IP地址WSL。如您在右侧所见,它在Windows主机上的路由是完美的重新路由,其Windows服务器的IP地址为:192.168.0.39

但是,由脚本执行的第二个查询具有WSL源IP(172.28.204.42),并且该查询未在主机上重新路由。

我的网络知识非常有限,我不了解它是如何工作的,以及我如何让WSL在主机上路由我自己的mDNS查询。一个大胆的猜测是它与iptables有关,但就我所知。

如果有人知道为什么它可以在DNS服务器源地址上工作,而我自己执行时却不知道,这将对我有很大帮助!

编辑1:WSL路由表enter image description here

Heya编码人员/开发人员/网络人员/开发人员/ ......我在WSL2(Windows 10 2004版本)的上下文中遇到了mDNS / DNS-SD设置问题,我在家里有一个非常简单的主服务器设置...

routes windows-subsystem-for-linux subnet mdns dns-sd
1个回答
0
投票

WSL2 Hyper-V网络交换机不充当多播网桥。默认情况下,交换机会创建一个内部网络。组播数据包仅传递给连接到内部网络的系统,而不传递给外部网络。可以在this Nakivo blog post中找到有关Hyper-V网络类型的更多信息。

在您的第一种情况下,ping会触发常规DNS查找,该DNS查找会进入解析器-Windows主机。然后,Windows主机在其内部和外部网络上执行mDNS查找。数据包转储显示内部查找,但请注意,没有任何响应。响应来自外部网络,而ping则通过常规DNS获得响应。在第二种情况下,您仅执行mDNS查找。该查找未收到任何响应,因为它仅进入内部网络。为了证明mDNS查找可以在内部网络上运行,请查找Windows主机的本地地址(MACHINE.local)。这将起作用,因为Windows主机位于内部网络上并且可以响应。

© www.soinside.com 2019 - 2024. All rights reserved.