Docker Openwrt and DNS resolving

I have openwrt installed with docker and smartdns

i have a docker dns-proxy-server( 192.168.200.2) for dynamically creating host entries for ad-hoc containers

my problem is while i can nslookup the name and ip of the docker containers (e.g. 192.168.200.3 or hello.docker.local) internally in the I can only seem to ping the docker container via thier ip( 192.168.200.3) using connected clients( 192.168.100.133).

my config is as follows:-

dhcp.@dnsmasq[0]=dnsmasq
dhcp.@dnsmasq[0].domainneeded='1'
dhcp.@dnsmasq[0].rebind_protection='1'
dhcp.@dnsmasq[0].rebind_localhost='1'
dhcp.@dnsmasq[0].domain='local'
dhcp.@dnsmasq[0].cachesize='1000'
dhcp.@dnsmasq[0].readethers='1'
dhcp.@dnsmasq[0].leasefile='/tmp/dhcp.leases'
dhcp.@dnsmasq[0].localservice='1'
dhcp.@dnsmasq[0].ednspacket_max='1232'
dhcp.@dnsmasq[0].authoritative='1'
dhcp.@dnsmasq[0].expandhosts='1'
dhcp.@dnsmasq[0].logqueries='1'
dhcp.@dnsmasq[0].filterwin2k='1'
dhcp.@dnsmasq[0].addnhosts='/tmp/hosts/docker'
dhcp.@dnsmasq[0].server='/docker.local/192.168.200.2'
dhcp.@dnsmasq[0].port='0'
dhcp.lan=dhcp
dhcp.lan.interface='lan'
dhcp.lan.start='100'
dhcp.lan.limit='150'
dhcp.lan.leasetime='12h'
dhcp.lan.dhcpv4='server'
dhcp.lan.ra='server'
dhcp.lan.ra_flags='managed-config' 'other-config'
dhcp.lan.force='1'
dhcp.lan.dhcp_option='6,192.168.100.1' '6,192.168.100.196' '6,192.168.200.2'
dhcp.docker=dhcp
dhcp.docker.interface='docker'
dhcp.@domain[0]=domain
dhcp.@domain[0].name='docker.local'
dhcp.@domain[0].ip='192.168.200.2'
network.loopback=interface
network.loopback.device='lo'
network.loopback.proto='static'
network.loopback.ipaddr='127.0.0.1'
network.loopback.netmask='255.0.0.0'
network.globals=globals
network.globals.ula_prefix='fd73:24a7:2db9::/48'
network.@device[0]=device
network.@device[0].name='br-lan'
network.@device[0].type='bridge'
network.@device[0].ports='eth0'
network.lan=interface
network.lan.device='br-lan'
network.lan.proto='static'
network.lan.ipaddr='192.168.100.196'
network.lan.gateway='192.168.100.1'
network.lan.netmask='255.255.255.0'
network.lan.ip6assign='60'
network.lan.dns_search='docker.local'
network.lan.dns='8.8.4.4' '192.168.100.1' '192.168.100.196' '192.168.200.2'
network.docker=interface
network.docker.device='docker0'
network.docker.proto='none'
network.docker.auto='0'
network.docker.dns='192.168.200.2'
network.@device[1]=device
network.@device[1].type='bridge'
network.@device[1].name='docker0'

i've been at it for days...not sure what is the cause of it.... any ideas?

Disable rebind protection or add an exception.

list rebind_domain 'docker.local'

You have added multiple option 6 using the list directive, which is wrong. This way only one DNS server is advertised to lan clients (probably the last one). The option should look like this:

dhcp.lan.dhcp_option='6,192.168.100.1,192.168.100.196,192.168.200.2'

Thanks this didn't work. Here's what I deduce thus far

  • I can ping docker.local from LuCi diagnostic section
  • i can't ping docker.local from within router ssh
  • I can't ping docker.local from outside the router via client
  • I can ping the ip address of the container from outside the router via a client
  • I can ping the ip address from within the router via ssh
  • I can visit the container via its ip address
  • I can't visit the container via its domain hello.docker.local
  • I can visit Luci from router.local