是否有一条 ipfw 规则可以轻松地将 mDns 数据包从一个子网转发到另一个子网?我有一台 Snow Leopard Server 计算机作为两个子网之间的网关,并且希望每个子网中的计算机都能看到另一个子网中可用的服务。网关计算机已确认配置正确,因此数据包可以在两个子网之间正确路由(ping 有效,traceroute 显示子网跳数等)。我在设计 ipfw 规则时遇到的问题是,我不知道如何指示我希望将 en0 上发送到 224.0.0.251:5353 的多播数据包发送到 fw0(另一个接口)上的相同 ip/端口。我尝试了一条规则,例如
fwd 192.168.10.1 log udp from 192.168.1.0/24 to 224.0.0.251 recv en1
强制数据包跳转到另一个接口(从 en1 到 fw0),但无济于事。ipfw 日志显示该规则由数据包触发,但 tcpdump 没有显示另一个接口上的任何数据包。此外,其他防火墙规则只有转移端口 8668 和规则 #65535“允许任何到任何”。
有什么建议吗?谢谢。
答案1
我长期以来一直尝试让它按预期工作。
我发现这些多播数据包不会跨越子网。
但是,我发现的唯一真正的解决方案是在跨子网的系统上使用 mDNS 反射器守护进程(例如 avahi-daemon)。
听起来您还可以从广域 Bonjour 中受益,它是为大型企业设计的,用于在子网间广播 Bonjour / mDNS 流量。
答案2
答案3
出现同样的问题,我写了一个简单的 mdns 正向代理。将 mdns 转发到 dns 服务。https://github.com/naughtyGitCat/mdns-proxy
假设我们有一个网络区域 A(192.168.1.0/24),有机器运行 mdns 兼容守护程序,(linux avahi-daemon、windows wins、macos bonjor)
而另一个网络区域B(192.168.2.0/24),无法通过.local访问区域A的机器
在运行 avahi-daemon 的其中一台区域 A 机器上运行 ./mdns-proxy --debug,将该机器 ip 添加到区域 B 机器的 dns 服务器列表中