我在路由器上安装了openWRT发行版并启用了对avahi的支持。我的目标是发现我的网络中的网络服务。
我已将PC连接到已宣布服务的LAN端口。在路由器上,我在桥接接口上运行tcpdump:tcpdump -i br0 -vvn udp port 5353
在avahi浏览执行期间,我收到输出: root @ localhost:〜#avahi-browse -art
21:55:22.995004 IP (tos 0x0, ttl 255, id 0, offset 0, flags [DF], proto UDP (17), length 74)
192.168.1.1.5353 > 224.0.0.251.5353: [udp sum ok] 0 PTR (QM)? _services._dns-sd._udp.local. (46)
但是在我的PC上,wireshark在该呼叫期间没有显示任何多播查询,因此找不到任何服务。
是否意味着路由器以某种方式过滤组播数据包? 我知道的唯一方法是在ebtables中过滤,它没有显示有关mDNS地址过滤的信息:
root@localhost:~# ebtables -L
Bridge table: filter
Bridge chain: INPUT, entries: 1, policy: ACCEPT
-j RO_INPUT
Bridge chain: FORWARD, entries: 1, policy: ACCEPT
-j RO
Bridge chain: OUTPUT, entries: 1, policy: ACCEPT
-j IGMPPROXY
Bridge chain: RO, entries: 0, policy: RETURN
Bridge chain: RO_INPUT, entries: 0, policy: RETURN
Bridge chain: IGMPPROXY, entries: 4, policy: RETURN
-p IPv4 -o wl0.1 --ip-dst 239.0.0.0/8 -j DROP
-p IPv4 -o wl0.2 --ip-dst 239.0.0.0/8 -j DROP
-p IPv4 -o wl0.3 --ip-dst 239.0.0.0/8 -j DROP
-p IPv4 -o br0 --ip-dst 239.0.0.0/8 -j DROP
可以过滤/删除这些多播数据包吗?
答案 0 :(得分:0)
我发现在我的路由器中启用了snooping,我认为它与IGMP snooping
相对应禁用它后,多播DNS查询到达目的地并显示为wireshark。
这就是我所做的(当然路径在不同的硬件和发行版中会有所不同):
echo "0" > /proc/hwswitch/default/snooping