TL;DR: How can I resolve blah.local to a machine outside the LAN?
I have a router (Buffalo WSR-1166DD) running LEDE (or openwrt 17.01.4). I am trying to use it to keep my computers more isolated from the mountains of IoT things I keep putting on my network. So the network looks like this:
DSL Router (WAN: Internet IP LAN: 10.0.1.1)
Main Router (WAN: 10.0.1.2 LAN: 10.0.2.1)
LEDE Router (WAN: 10.0.2.3 LAN: 10.0.3.1)
The Main router has things like raspberry pi's, esp32's and my chromecast devices.
- For example, one chromecast has an IP of 10.0.2.108
The LEDE Router has my phones and laptops connected. I want to be able to connect to the machines in the main router using the .local addresses to resolve the addresses.
- Things like ping 10.0.2.108 work fine from inside LEDE router
- Things like ping work fine from inside LEDE router
From the googling and poking I've done, Just using IPTABLES to forward the mDNS stuff around is not easy (something about the packets having a TTL of 1?) but a service running on the router could repeat the mDNS requests from WAN to LAN or LAN to WAN. There is a mention of a specific piece of code that will do this (yep, 2011, very old):
Another thing I've found is this python code, which maybe I could run easier, because I don't have to compile python, but it has some dependencies...
My LEDE router has a MediaTek MT7621A CPU. I've never tried to cross compile for an openwrt system.
Is there a simpler solution? There are three different mDNS packages available through LUCI (avahi, mDNS, umdns). I don't see an obvious way to make any of them repeat requests on all the interfaces.
EDIT1: Here is a configuration that supposedly works on edge routers. Are these all just commands to IPTABLES?