I’m connected via ethernet and DHCP, the DHCP provided nameserver is 10.0.0.111 and running dnsmasq for example.com to resolve to 10.0.0.110 when on the local network, while the ip for example.com on the open internet is 91.65.182.25.
Why would Mac OS X, after resetting the DNS cache first resolve the domain correctly, and then after a few minutes somehow get the public DNS ip?
ping, Safari, etc. are all affected. There is nothing going on in the 360 seconds wait time.
> sudo killall -HUP mDNSResponder && ping -c 3 example.com && sleep 360 && ping -c 3 example.com
Password:
PING example.com (10.0.0.110): 56 data bytes
64 bytes from 10.0.0.110: icmp_seq=0 ttl=64 time=0.795 ms
64 bytes from 10.0.0.110: icmp_seq=1 ttl=64 time=1.598 ms
64 bytes from 10.0.0.110: icmp_seq=2 ttl=64 time=0.830 ms
--- example.com ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.795/1.074/1.598/0.371 ms
PING home.jan.io (91.65.182.25): 56 data bytes
64 bytes from 91.65.182.25: icmp_seq=0 ttl=64 time=1.180 ms
64 bytes from 91.65.182.25: icmp_seq=1 ttl=64 time=3.704 ms
64 bytes from 91.65.182.25: icmp_seq=2 ttl=64 time=2.567 ms
--- home.jan.io ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 1.180/2.484/3.704/1.032 ms
@mattghall thank you for looking into this!
no NAT-PNP anywhere on the box that is example.com locally. And I disabled uPnP on the router/default gateway here, to see if that “poisons” the cache.
That is entirely possible!
The scenario is: I have a web service running on machine A in the LAN on the .110 ip address. I want to be able to access the service from inside the LAN ad outside the LAN with the same name. For that to work, I have example.com point to my router’s (.1 LAN ip) WAN ip 91.65.182.25 via my public DNS service, and port forwarding, so I get access from the outside, that’s all working fine.
Now I also want to access the service within the LAN under example.com, but the router (.1) doesn’t do the port forwarding when the call is coming from INSIDE THE HOUSE (and no way to set that up). So via https://gist.github.com/janl/fa8379fbd890282205e7 I set up dnsmasq on my other .111 box (it’s just FreeBSD jails, I don’t have too many machines here :) with DHCP, disabled DHCP on my router, and made the .111 DHCP send out the nameserver of .111 for DHCP clients. That also works nicely. The default gateway remains .1, not .111.
That is, my authoritative nameserver for example.com hands out then WAN ip, but I’m using dnsmasq locally to hijack that. FWIW, it worked for a while (few weeks), and stopped now (maybe after restarting the El Capitan MacBook Pro here)
My example.com is just a CNAME for my-other-example.com (for dyndns reasons, although It changes only every couple of years). Now reading through this, I’ll try to make dnsmasq respond to my-other-example.com with the same LAN ip as example.com, maybe that helps :)
As to your questions: