mDNS / Bonjour thourgh WLAN和VLAN


1

我有以下情况:

Zyxel USG20 -> VLAN -> Server (192.168.50.xx) (local_1)
|
| -> Switch -> wired devices (192.168.80.xx) (local_2)
-> LEDE WLAN ROUTER -> Mobile Devices (192.168.80.xx) (local_2)

我在VLAN部分运行Homekit服务器,其IP为50.xx范围。现在我希望能够通过mDNS / Bonjour从Range 80.xx中的移动设备发现IP

我在USG20中添加了端口5353的规则,从local_2传递到local_1,并为IP 244.0.0.251添加了从local_2传递到local_1的规则

但是我无法在VLAN中发现服务器。我需要做些什么来使这个设置工作?

谢谢。

Answers:


1

这是正常的- 的mDNS使用一个链路本地多播组(224.0.0.251的IPv4,FF02 :: FB上的IPv6),其从不被路由器/网关转发。一些实现还通过标记IP TTL = 1的所有mDNS分组来强制执行此操作。(这都是假设您的路由器启用了多播转发,以...开头)

要跨网络/子网工作,需要在应用层代理mDNS - 例如,在Linux或BSD路由器上,您将运行启用了代理的avahi-daemon。


由于您有Raspberry Pi和具有802.1Q VLAN的交换机,您可以将Rpi作为中继使用,同时将其连接到“客户端”和“服务器”VLAN。(请注意,您不应仅为Rpi创建专用VLAN;这将完全打败该点。)

在评论中,您声明Rpi在端口4上。

  1. 在交换机中,将端口4(不是 LAG 4)标记为一个VLAN的“未标记”,并为所有其他VLAN标记“标记”。如果交换机提供配置端口的“PVID”,请确保它与未标记的VLAN匹配。

    (或者,可以将所有VLAN标记为“。”)

  2. 在Rpi中,为将要接收的每个标记 VLAN 创建虚拟“vlan”接口。假设它运行Linux,您可以暂时使用:

    ip link add eth0.100 link eth0 type vlan id 100
    ip link set eth0.100 up
    dhclient eth0.100
    

    (如何使这个永久性取决于你的分布。)

  3. 在Rpi中,启用代理(反射)/etc/avahi/avahi-daemon.conf

    [reflector]
    enable-reflector=yes 
    

谢谢您的回答。因此,最好的方法是将这些服务器服务迁移到独立的覆盆子,我认为这将位于local_2网络内部。或者我使用树莓作为链接设备。谢谢。
C. Hediger

请记住,mDNS代理不需要在路由器上运行- 只需在直接连接到两个网络的设备上运行(即只需要能够接收多播)。
grawity

那么覆盆子满足要求吗?他将被连接到local_2网络。local_2网络可以访问local_1网络。
C. Hediger

正如您刚刚发现的那样,间接可达性是不够的......代理必须同时直接在两个子网上。例如,你可以把一个的Rpi一个802.1Q“标记”您都在其上的VLAN / Trunk端口,如果你的网关和交换机支持。
grawity

我实际上正在尝试这个。我在我的RPI上创建了一个ID为100的VLAN。我已经发出了一个dhcp命令,我可以在zywall的日志中看到该请求。不幸的是,zywall确实提供了正确的IP(local_1范围),rpi无法接收此优惠,因为交换机似乎没有将此答案转发给pi,因为端口配置不正确。以下是GS108交换机中实际配置的图片:imgur.com/a/e2bntEy 我不是专家,但我认为LAG将结合两种流量。我的RPI端口是4号.7和8是服务器
C. Hediger
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.