DNS-SD forwarding issue with multiple Thread Networks / OTBR on same Ethernet LAN #13525
|
Hi, I am in an office environment and for testing we may have multiple OTBR / isolated Thread Networks on the same LAN for testing and development. Just to reiterate, these are small separate networks, not redundant OTBR on the same Thread Network. We are using SRP to advertise a local server running on the OTBR. This works well in normal use. However, I discovered an issue when setting up a second OTBR / Network yesterday where:
The only way to resolve this is to disconnect OTBR 1 and reboot OTBR 2 (OTBR 2 cache's OTBR 1 address and will keep serving it). The behavior implies that the DNS query goes out over ETH0 and other OTBR respond before the local OTBR uses it's own registration. I tried iptables and ip6tables to block DNS messages but these don't survive a reboot, it looks like otbr-agent overwrites the rules. I tried to build the otbr-agent with OPENTHREAD_CONFIG_DNS_UPSTREAM_QUERY_ENABLE forced to 0 but the build fails. Is there another way to stop this behavior? I cannot control the LAN connection and a dedicated Router between the LAN network and the OTBR is not feasible. OTBR is running on a Pi and is running whatever the latest otbr-agent is from Git. |
Replies: 1 comment 2 replies
|
What you are observing is OTBR's Discovery Proxy and Advertising Proxy operating across the shared Ethernet link:
Depending on your testing goals, here are the two recommended ways to address this: Option 1: Disable Discovery Proxy (Best for Isolated Test Labs)If each OTBR network is meant to be completely isolated and should never discover services from the Ethernet LAN, disable the Discovery Proxy using CMake when building # In your setup script or cmake build:
"-DOTBR_DNSSD_DISCOVERY_PROXY=OFF"(You can also disable Note: Forcing Option 2: Use Unique Instance Names (Best for Shared LAN Coexistence)If the OTBRs are intended to coexist on the same LAN:
|
What you are observing is OTBR's Discovery Proxy and Advertising Proxy operating across the shared Ethernet link:
eth0via mDNS.eth0over mDNS and receives OTBR 1's records, capping the TTL to 10 seconds per RFC 8766 Section 5.5.1.Depending on your testing goals, here are the two recommended ways to address this:
Option 1: Disable Discovery Proxy (Best for Isolated Test Labs)
If each OTBR network is meant to be completely isolated and should never discover services from the Ethernet LAN, disable the Discovery Proxy using CMake when building
ot-br-posix: