我正在尝试在 BNEP 网络接口上发布 discover dns-sd 服务。我有一个 Linux 系统和一部 Android 手机。我已从我的 Android 手机启用网络共享,并使 Linux 系统连接到 BNEP 网络。完成设置后,我能够在两个设备之间进行 ping 操作。
我的要求是从 Linux 系统发布 DNS-SD 服务并从 Android 设备发现该服务。我使用 Avahi 从 Linux 系统发布服务,并使用 Android 应用程序中的应用程序浏览服务。
我面临的问题是,该服务在 Linux 系统本地发布,但没有在 BNEP 网络上发布(因为当我从 Linux 开始浏览在 Linux 上发布的服务时,发现成功)
路由命令详细信息
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.44.1 0.0.0.0 UG 0 0 0 bnep0
172.17.0.0 * 255.255.0.0 U 0 0 0 eth0
192.168.44.0 * 255.255.255.0 U 0 0 0 bnep0
192.168.44.1 * 255.255.255.255 UH 0 0 0 bnep0
192.168.203.0 * 255.255.255.0 U 0 0 0 inc-scc
192.168.204.0 * 255.255.255.0 U 0 0 0 inc-adr3
224.0.0.0 * 240.0.0.0 U 0 0 0 bnep0
当我从 Android 手机启动发现时,我捕获了 tcpdump,以检查响应是否到达手机。我发现消息正在正常发送。
Android 手机 IP:192.168.44.1
Linux设备:mx6q.local
Tcpdump 详细信息
192.168.44.1.mdns > 224.0.0.251.mdns: 0 PTR (QM)? _services._dns-sd._udp.local. (46)
04:26:58.158918 IP (tos 0x0, ttl 255, id 16701, offset 0, flags [DF], proto UDP (17), length 169)
mx6q.local.mdns > 224.0.0.251.mdns: 0*- [0q] 4/0/0 _services._dns-sd._udp.local. PTR _workstation._tcp.local., _services._dns-sd._udp.local. PTR _sftp-ssh._tcp.local., _services._dns-sd._udp.local. PTR _ssh._tcp.local., _services._dns-sd._udp.local. PTR _udisks-ssh._tcp.local. (141)
192.168.44.1.mdns > 224.0.0.251.mdns: 0 PTR (QM)? _services._dns-sd._udp.local. (46)
04:26:55.154939 IP (tos 0x0, ttl 255, id 16698, offset 0, flags [DF], proto UDP (17), length 169)
mx6q.local.mdns > 224.0.0.251.mdns: 0*- [0q] 4/0/0 _services._dns-sd._udp.local. PTR _workstation._tcp.local., _services._dns-sd._udp.local. PTR _sftp-ssh._tcp.local., _services._dns-sd._udp.local. PTR _ssh._tcp.local., _services._dns-sd._udp.local. PTR _udisks-ssh._tcp.local. (141)
Avahi 配置文件
[server]
domain-name=local
use-ipv4=yes
use-ipv6=no
[wide-area]
enable-wide-area=yes
我认为 Linux 系统缺少一些我无法识别的配置,请帮助我。
注意:1. 当我从 Android 设备发布 DNS-SD 服务时,我可以在 Linux 系统上发现相同的服务,但问题恰恰相反。2. 同一组设备可与 Wifi、以太网和 USB (rndis) 网络接口配合使用