Unable to discover devices across vlans using umdns

Hi, I set up OpenWRT for the first time on three Linksys MX4300 devices in the following configuration:

  • AP1 and AP2 are connected to Main via LAN2 and LAN3 ports.
  • Main has a home server connected to it via LAN1 port, and my PC is connected to AP2 LAN1 port.
  • Three vlans: lan, guest, iot.

I’ve been using the user guides off OpenWRT.org in combination with YouTube videos from OneMarcFifty, but I can’t seem to get device discovery working, and I am not sure if DAWN is doing anything for 802.11k/v.

  1. For device discovery, nothing is being discovered on my IoT vlan from lan. Some devices I can connect to if I use the IP address reported by OpenWRT, but using the host name doesn’t work for anything, and trying to use auto discovery, like finding my printer, doesn’t work (the printer is connected wirelessly to IoT, my PC is on lan). I tried following the user guide for umdns for Local Device Discovery, but I wasn’t successful. Do I need to use Avahi instead of umDNS when trying to discover devices across vlans?

  2. I installed DAWN and enabled 802.11k/v/r. I get the following warning:

daemon.warn dawn: Client / BSSID = XX:XX:XX:XX:XX:XX / YY:YY:YY:YY:YY:YY: BEACON REQUEST failed

I found the following information on it from two years ago: BEACON REQUEST failed #238. Should I just ignore the warning? Also, are things like DAWN and usteer worth using? My devices do switch between APs, but I am not sure if they are doing it on their own, or if DAWN is telling them.

Main DHCP:


config dnsmasq
	option domainneeded '1'
	option localise_queries '1'
	option rebind_protection '1'
	option rebind_localhost '1'
	option local '/lan/'
	option domain 'lan'
	option expandhosts '1'
	option cachesize '1000'
	option authoritative '1'
	option readethers '1'
	option leasefile '/tmp/dhcp.leases'
	option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
	option localservice '1'
	option ednspacket_max '1232'

config dhcp 'lan'
	option interface 'lan'
	option start '100'
	option limit '150'
	option leasetime '12h'
	option dhcpv4 'server'
	option dhcpv6 'server'
	option ra 'server'
	list ra_flags 'managed-config'
	list ra_flags 'other-config'

config dhcp 'wan'
	option interface 'wan'
	option ignore '1'

config odhcpd 'odhcpd'
	option maindhcp '0'
	option leasefile '/tmp/hosts/odhcpd'
	option leasetrigger '/usr/sbin/odhcpd-update'
	option loglevel '4'
	option piofolder '/tmp/odhcpd-piofolder'

config host
	option name 'OpenMediaVault'
	list mac '###'
	option ip '192.168.1.168'
	option leasetime 'infinite'

config dhcp 'guest'
	option interface 'guest'
	option start '100'
	option limit '150'
	option leasetime '12h'

config dhcp 'iot'
	option interface 'iot'
	option start '100'
	option limit '150'
	option leasetime '12h'

config host
	option name 'OpenWrt-AP1'
	list mac '###'
	option ip '192.168.1.2'
	option leasetime 'infinite'

config host
	option name 'OpenWrt-AP2'
	list mac '###'
	option ip '192.168.1.3'
	option leasetime 'infinite'


Main Firewall:


config defaults
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	option synflood_protect '1'

config zone
	option name 'lan'
	list network 'lan'
	option input 'ACCEPT'
	option output 'ACCEPT'
	option forward 'ACCEPT'

config zone
	option name 'wan'
	list network 'wan'
	list network 'wan6'
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	option masq '1'
	option mtu_fix '1'

config forwarding
	option src 'lan'
	option dest 'wan'

config rule
	option name 'Allow-DHCP-Renew'
	option src 'wan'
	option proto 'udp'
	option dest_port '68'
	option target 'ACCEPT'
	option family 'ipv4'

config rule
	option name 'Allow-Ping'
	option src 'wan'
	option proto 'icmp'
	option icmp_type 'echo-request'
	option family 'ipv4'
	option target 'ACCEPT'

config rule
	option name 'Allow-IGMP'
	option src 'wan'
	option proto 'igmp'
	option family 'ipv4'
	option target 'ACCEPT'

config rule
	option name 'Allow-DHCPv6'
	option src 'wan'
	option proto 'udp'
	option dest_port '546'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-MLD'
	option src 'wan'
	option proto 'icmp'
	option src_ip 'fe80::/10'
	list icmp_type '130/0'
	list icmp_type '131/0'
	list icmp_type '132/0'
	list icmp_type '143/0'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-ICMPv6-Input'
	option src 'wan'
	option proto 'icmp'
	list icmp_type 'echo-request'
	list icmp_type 'echo-reply'
	list icmp_type 'destination-unreachable'
	list icmp_type 'packet-too-big'
	list icmp_type 'time-exceeded'
	list icmp_type 'bad-header'
	list icmp_type 'unknown-header-type'
	list icmp_type 'router-solicitation'
	list icmp_type 'neighbour-solicitation'
	list icmp_type 'router-advertisement'
	list icmp_type 'neighbour-advertisement'
	option limit '1000/sec'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-ICMPv6-Forward'
	option src 'wan'
	option dest '*'
	option proto 'icmp'
	list icmp_type 'echo-request'
	list icmp_type 'echo-reply'
	list icmp_type 'destination-unreachable'
	list icmp_type 'packet-too-big'
	list icmp_type 'time-exceeded'
	list icmp_type 'bad-header'
	list icmp_type 'unknown-header-type'
	option limit '1000/sec'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-IPSec-ESP'
	option src 'wan'
	option dest 'lan'
	option proto 'esp'
	option target 'ACCEPT'

config rule
	option name 'Allow-ISAKMP'
	option src 'wan'
	option dest 'lan'
	option dest_port '500'
	option proto 'udp'
	option target 'ACCEPT'

config zone
	option name 'guest'
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	list network 'guest'

config forwarding
	option src 'guest'
	option dest 'wan'

config zone
	option name 'iot'
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	list network 'iot'

config forwarding
	option src 'iot'
	option dest 'wan'

config forwarding
	option src 'lan'
	option dest 'iot'

config rule
	option src 'guest'
	option name 'Allow-DNS-DHCP-Guest'
	option dest_port '53 67 68'
	option target 'ACCEPT'

config rule
	option src 'iot'
	option name 'Allow-DNS-DHCP-IoT'
	option dest_port '53 67 68'
	option target 'ACCEPT'

config rule
	option src 'lan'
	option name 'Allow-mDNS-Lan'
	list proto 'udp'
	option src_port '5353'
	list dest_ip '224.0.0.251'
	option dest_port '5353'
	option target 'ACCEPT'

config rule
	option src 'guest'
	option name 'Allow-mDNS-Guest'
	list proto 'udp'
	option src_port '5353'
	list dest_ip '224.0.0.251'
	option dest_port '5353'
	option target 'ACCEPT'

config rule
	option src 'iot'
	option name 'Allow-mDNS-IoT'
	list proto 'udp'
	option src_port '5353'
	list dest_ip '224.0.0.251'
	option dest_port '5353'
	option target 'ACCEPT'

Main Network:


config interface 'loopback'
	option device 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config globals 'globals'
	option ula_prefix '###'
	option packet_steering '1'

config device
	option name 'br-lan'
	option type 'bridge'
	list ports 'lan1'
	list ports 'lan2'
	list ports 'lan3'

config device
	option name 'lan1'
	option macaddr '###'

config device
	option name 'lan2'
	option macaddr '###'

config device
	option name 'lan3'
	option macaddr '###'

config interface 'lan'
	option device 'br-lan.10'
	option proto 'static'
	option ipaddr '192.168.1.1'
	option netmask '255.255.255.0'
	option ip6assign '60'

config interface 'wan'
	option device 'wan'
	option proto 'dhcp'
	option peerdns '0'
	list dns '1.1.1.1'
	list dns '1.0.0.1'

config interface 'wan6'
	option device 'wan'
	option proto 'dhcpv6'

config interface 'guest'
	option proto 'static'
	option device 'br-lan.20'
	option ipaddr '192.168.20.1'
	option netmask '255.255.255.0'

config interface 'iot'
	option proto 'static'
	option device 'br-lan.30'
	option ipaddr '192.168.30.1'
	option netmask '255.255.255.0'

config bridge-vlan
	option device 'br-lan'
	option vlan '10'
	list ports 'lan1:u*'
	list ports 'lan2:t'
	list ports 'lan3:t'

config bridge-vlan
	option device 'br-lan'
	option vlan '20'
	list ports 'lan2:t'
	list ports 'lan3:t'

config bridge-vlan
	option device 'br-lan'
	option vlan '30'
	list ports 'lan2:t'
	list ports 'lan3:t'


Main UMDNS:

config umdns
	option jail 1
	list network lan
	list network guest
	list network iot

Main Wireless:


config wifi-device 'radio0'
	option type 'mac80211'
	option path 'platform/soc@0/c000000.wifi'
	option band '5g'
	option channel '36'
	option htmode 'HE80'
	option country 'US'
	option cell_density '0'

config wifi-iface 'default_radio0'
	option device 'radio0'
	option network 'lan'
	option mode 'ap'
	option ssid 'OpenWrt'
	option encryption 'psk2'
	option key '###'
	option ieee80211r '1'
	option mobility_domain '0010'
	option ft_over_ds '0'
	option ft_psk_generate_local '1'
	option ieee80211k '1'
	option bss_transition '1'

config wifi-device 'radio1'
	option type 'mac80211'
	option path 'platform/soc@0/c000000.wifi+1'
	option band '2g'
	option channel '1'
	option htmode 'HE20'
	option country 'US'
	option cell_density '0'

config wifi-iface 'default_radio1'
	option device 'radio1'
	option network 'lan'
	option mode 'ap'
	option ssid 'OpenWrt'
	option encryption 'psk2'
	option key '###'
	option ieee80211r '1'
	option mobility_domain '0010'
	option ft_over_ds '0'
	option ft_psk_generate_local '1'
	option ieee80211k '1'
	option bss_transition '1'

config wifi-device 'radio2'
	option type 'mac80211'
	option path 'platform/soc@0/c000000.wifi+2'
	option band '5g'
	option channel '100'
	option htmode 'HE80'
	option country 'US'
	option cell_density '0'

config wifi-iface 'default_radio2'
	option device 'radio2'
	option network 'lan'
	option mode 'ap'
	option ssid 'OpenWrt'
	option encryption 'psk2'
	option key '###'
	option ieee80211r '1'
	option mobility_domain '0010'
	option ft_over_ds '0'
	option ft_psk_generate_local '1'
	option ieee80211k '1'
	option bss_transition '1'

config wifi-iface 'wifinet3'
	option device 'radio0'
	option mode 'ap'
	option ssid 'OpenWrt.Guest'
	option encryption 'psk2'
	option key '###'
	option network 'guest'
	option ieee80211r '1'
	option ft_over_ds '0'
	option ft_psk_generate_local '1'
	option mobility_domain '0020'
	option ieee80211k '1'
	option bss_transition '1'

config wifi-iface 'wifinet4'
	option device 'radio1'
	option mode 'ap'
	option ssid 'OpenWrt.Guest'
	option encryption 'psk2'
	option key '###'
	option ieee80211r '1'
	option ft_over_ds '0'
	option ft_psk_generate_local '1'
	option network 'guest'
	option mobility_domain '0020'
	option ieee80211k '1'
	option bss_transition '1'

config wifi-iface 'wifinet5'
	option device 'radio2'
	option mode 'ap'
	option ssid 'OpenWrt.Guest'
	option encryption 'psk2'
	option key '###'
	option ieee80211r '1'
	option mobility_domain '0020'
	option ft_over_ds '0'
	option ft_psk_generate_local '1'
	option network 'guest'
	option ieee80211k '1'
	option bss_transition '1'

config wifi-iface 'wifinet6'
	option device 'radio1'
	option mode 'ap'
	option ssid 'OpenWrt.IoT'
	option encryption 'psk2'
	option key '###'
	option network 'iot'
	option ieee80211r '1'
	option mobility_domain '0030'
	option ft_over_ds '0'
	option ft_psk_generate_local '1'
	option ieee80211k '1'
	option bss_transition '1'


AP DHCP:


config dnsmasq
	option domainneeded '1'
	option boguspriv '1'
	option filterwin2k '0'
	option localise_queries '1'
	option rebind_protection '1'
	option rebind_localhost '1'
	option local '/lan/'
	option domain 'lan'
	option expandhosts '1'
	option nonegcache '0'
	option cachesize '1000'
	option authoritative '1'
	option readethers '1'
	option leasefile '/tmp/dhcp.leases'
	option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
	option nonwildcard '1'
	option localservice '1'
	option ednspacket_max '1232'
	option filter_aaaa '0'
	option filter_a '0'

config dhcp 'lan'
	option interface 'lan'
	option start '100'
	option limit '150'
	option leasetime '12h'
	option dhcpv4 'server'
	option ignore '1'

config odhcpd 'odhcpd'
	option maindhcp '0'
	option leasefile '/tmp/hosts/odhcpd'
	option leasetrigger '/usr/sbin/odhcpd-update'
	option loglevel '4'
	option piofolder '/tmp/odhcpd-piofolder'

config dhcp 'iot'
	option interface 'iot'
	option ignore '1'

config dhcp 'guest'
	option interface 'guest'
	option ignore '1'


AP Firewall:


config defaults
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	option synflood_protect '1'

config zone
	option name 'lan'
	option input 'ACCEPT'
	option output 'ACCEPT'
	option forward 'ACCEPT'
	list network 'lan'

config zone
	option name 'wan'
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	option masq '1'
	option mtu_fix '1'

config forwarding
	option src 'lan'
	option dest 'wan'

config rule
	option name 'Allow-DHCP-Renew'
	option src 'wan'
	option proto 'udp'
	option dest_port '68'
	option target 'ACCEPT'
	option family 'ipv4'

config rule
	option name 'Allow-Ping'
	option src 'wan'
	option proto 'icmp'
	option icmp_type 'echo-request'
	option family 'ipv4'
	option target 'ACCEPT'

config rule
	option name 'Allow-IGMP'
	option src 'wan'
	option proto 'igmp'
	option family 'ipv4'
	option target 'ACCEPT'

config rule
	option name 'Allow-DHCPv6'
	option src 'wan'
	option proto 'udp'
	option dest_port '546'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-MLD'
	option src 'wan'
	option proto 'icmp'
	option src_ip 'fe80::/10'
	list icmp_type '130/0'
	list icmp_type '131/0'
	list icmp_type '132/0'
	list icmp_type '143/0'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-ICMPv6-Input'
	option src 'wan'
	option proto 'icmp'
	list icmp_type 'echo-request'
	list icmp_type 'echo-reply'
	list icmp_type 'destination-unreachable'
	list icmp_type 'packet-too-big'
	list icmp_type 'time-exceeded'
	list icmp_type 'bad-header'
	list icmp_type 'unknown-header-type'
	list icmp_type 'router-solicitation'
	list icmp_type 'neighbour-solicitation'
	list icmp_type 'router-advertisement'
	list icmp_type 'neighbour-advertisement'
	option limit '1000/sec'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-ICMPv6-Forward'
	option src 'wan'
	option dest '*'
	option proto 'icmp'
	list icmp_type 'echo-request'
	list icmp_type 'echo-reply'
	list icmp_type 'destination-unreachable'
	list icmp_type 'packet-too-big'
	list icmp_type 'time-exceeded'
	list icmp_type 'bad-header'
	list icmp_type 'unknown-header-type'
	option limit '1000/sec'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-IPSec-ESP'
	option src 'wan'
	option dest 'lan'
	option proto 'esp'
	option target 'ACCEPT'

config rule
	option name 'Allow-ISAKMP'
	option src 'wan'
	option dest 'lan'
	option dest_port '500'
	option proto 'udp'
	option target 'ACCEPT'

config zone
	option name 'guest'
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	list network 'guest'

config zone
	option name 'iot'
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	list network 'iot'


AP Network:


config interface 'loopback'
	option device 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config globals 'globals'
	option ula_prefix '***'
	option packet_steering '1'

config device
	option name 'br-lan'
	option type 'bridge'
	list ports 'lan1'
	list ports 'lan2'
	list ports 'lan3'
	list ports 'wan'

config device
	option name 'lan1'
	option macaddr '***'

config device
	option name 'lan2'
	option macaddr '***'

config device
	option name 'lan3'
	option macaddr '***'

config interface 'lan'
	option device 'br-lan.10'
	option proto 'dhcp'

config bridge-vlan
	option device 'br-lan'
	option vlan '10'
	list ports 'lan1:u*'
	list ports 'lan2:u*'
	list ports 'lan3:u*'
	list ports 'wan:u*'

config bridge-vlan
	option device 'br-lan'
	option vlan '20'
	list ports 'wan:t'

config bridge-vlan
	option device 'br-lan'
	option vlan '30'
	list ports 'wan:t'

config interface 'guest'
	option proto 'dhcp'
	option device 'br-lan.20'

config interface 'iot'
	option proto 'dhcp'
	option device 'br-lan.30'


AP UMDNS:

config umdns
	option jail 1
	list network lan
	list network guest
	list network iot

AP Wireless:


config wifi-device 'radio0'
	option type 'mac80211'
	option path 'platform/soc@0/c000000.wifi'
	option band '5g'
	option channel '36'
	option htmode 'HE80'
	option country 'US'
	option cell_density '0'

config wifi-iface 'default_radio0'
	option device 'radio0'
	option network 'lan'
	option mode 'ap'
	option ssid 'OpenWrt'
	option encryption 'psk2'
	option key '###'
	option ieee80211r '1'
	option ft_over_ds '0'
	option ft_psk_generate_local '1'
	option mobility_domain '0010'
	option ieee80211k '1'
	option bss_transition '1'

config wifi-device 'radio1'
	option type 'mac80211'
	option path 'platform/soc@0/c000000.wifi+1'
	option band '2g'
	option channel '1'
	option htmode 'HE20'
	option country 'US'
	option cell_density '0'

config wifi-iface 'default_radio1'
	option device 'radio1'
	option network 'lan'
	option mode 'ap'
	option ssid 'OpenWrt'
	option encryption 'psk2'
	option key '###'
	option ieee80211r '1'
	option mobility_domain '0010'
	option ft_over_ds '0'
	option ft_psk_generate_local '1'
	option ieee80211k '1'
	option bss_transition '1'

config wifi-device 'radio2'
	option type 'mac80211'
	option path 'platform/soc@0/c000000.wifi+2'
	option band '5g'
	option channel '100'
	option htmode 'HE80'
	option country 'US'
	option cell_density '0'

config wifi-iface 'default_radio2'
	option device 'radio2'
	option network 'lan'
	option mode 'ap'
	option ssid 'OpenWrt'
	option encryption 'psk2'
	option key '###'
	option ieee80211r '1'
	option mobility_domain '0010'
	option ft_over_ds '0'
	option ft_psk_generate_local '1'
	option ieee80211k '1'
	option bss_transition '1'

config wifi-iface 'wifinet3'
	option device 'radio0'
	option mode 'ap'
	option ssid 'OpenWrt.Guest'
	option encryption 'psk2'
	option key '###'
	option ieee80211r '1'
	option mobility_domain '0020'
	option ft_over_ds '0'
	option ft_psk_generate_local '1'
	option network 'guest'
	option ieee80211k '1'
	option bss_transition '1'

config wifi-iface 'wifinet4'
	option device 'radio1'
	option mode 'ap'
	option ssid 'OpenWrt.Guest'
	option encryption 'psk2'
	option key '###'
	option ieee80211r '1'
	option mobility_domain '0020'
	option ft_over_ds '0'
	option ft_psk_generate_local '1'
	option network 'guest'
	option ieee80211k '1'
	option bss_transition '1'

config wifi-iface 'wifinet5'
	option device 'radio2'
	option mode 'ap'
	option ssid 'OpenWrt.Guest'
	option encryption 'psk2'
	option key '###'
	option ieee80211r '1'
	option mobility_domain '0020'
	option ft_over_ds '0'
	option ft_psk_generate_local '1'
	option network 'guest'
	option ieee80211k '1'
	option bss_transition '1'

config wifi-iface 'wifinet6'
	option device 'radio1'
	option mode 'ap'
	option ssid 'OpenWrt.IoT'
	option encryption 'psk2'
	option key '###'
	option ieee80211r '1'
	option mobility_domain '0030'
	option ft_over_ds '0'
	option ft_psk_generate_local '1'
	option ieee80211k '1'
	option bss_transition '1'
	option network 'iot'


Thanks!

For discovery of appliance there are several mechanisms used, the two most common are:
mDNS, used by e.g Chromecast and some printers and by Apple (Bonjour is apples mDNS implementation)

The second often used discovery protocol is SSDP/DLNA used by e.g.mediaservers

So to be able to discover all between subnets you need for mDNS e.g. umDNS or Avahi and for SSDP/DLNA you need e.g. SMCRoute

not sure about umdns, but I use avahi-dbus-daemon, but make sure that this is in the config file:

[reflector]
enable-reflector=yes

That ensure the broadcasts are reflected. You probably want to fill in the deny-interfaces section or allow-interfaces to make sure nothing leaks to the internet.

Thanks, I didn't know about SSDP/DLNA. I'll look into messing around with SMCRoute this week.

If I can't get umDNS to do what I am looking for, I'll try Avahi. For Avahi 'allow-interfaces', do you use the interface name or the device name? For instance:

config interface 'iot'
	option proto 'dhcp'
	option device 'br-lan.30'

Would I use iot, or br-lan.30? I know the option is called 'allow-interfaces', but the blog linked on the OpenWRT user guide implies that it is the device name that's used.

I think I have the names in the block part, I do not use the allow. I can look it up if you want to try.

Also note you do need some firewall rules.

Does Avahi get installed/configured on the Main router and all APs, or only Main?

Only on the main router.

The APs should theoretically only have an IP address on a single network (i.e. the one used to manage the APs; typically not the guest, iot, etc.).

It took me days to figure out that you don’t have to rely on umdns or any other mDNS service to get DAWN to work. There are four discovery options in DAWN, 0 - is broadcast on the broadcast ip you specify, so for example if you set broadcast_ip 192.168.1.255 it will send out udp broadcast packets on that entire network on udp port 1025 and all you have to do is set network_option ‘0’ on all your instances, if you set network_option ‘1’ same thing but multicast on udp port 1025 and you have to make sure your router/access points can handle IGMP/Multicast properly. Setting option_network ‘3’ allows you to manually connect your DAWN instances together via server_ip on tcp port 1026, so you set all your DAWN instances to network_option ‘3’ and on all but one you specify the server_ip to point to the one you didn’t set server_ip on, hub and spoke arrangement like, and all the nodes will exchange their data with the server one, and it will pass on its information to all the nodes that ask for it. Option 3 is the most reliable way of making sure dawn works, no broadcast, no discovery, a direct connection between all instances, and once it works it works really well with the default configuration which is 5 ghz biased so your devices will roam between 5 ghz access points and switch to 2.4 ghz only when they have to, and switch back to 5 ghz when signal improves. But once you can see the hearing map in Status - DAWN you can tune it to obtain the scores you need for your use case. Good luck!