Unable to reach (browse & ping) a new already working domain until reboot

Hi,

I’ve had the following issue on Manjaro; I’d like to know what piece of software is most likely to be the culprit and therefore to which bugtracker I should report it. And also, in the event that I face the same issue again in the future, I’d like to know if there’s a workaround that doesn’t require reboot (e.g. restart some service or flush some caches).

Here it goes:

Summary

On a server that I manage, which already had a working website with domain example.com (obviously that’s not the actual domain), I configured a subdomain newsubdomain.example.com (that’s not the real subdomain name either) within the same domain. Meaning that I added the A and AA DNS records and created a separate virtual host. This subdomain happened to be hosted on a different server, but I’m pretty sure that’s irrelevant.

After I set everything up, I checked the following:

  • the new subdomain records had propagated to the entire world according to https://www.whatsmydns.net/
  • I checked at Google Public DNS that the new subdomain was visible by Google’s DNS
  • the web servers for both the original domain (which had already been working before) and the new subdomain were both working (which is also confirmed by the following two points)
  • I asked a coworker to access http://newsubdomain.example.com from their computer from my same country and it was accessible
  • I checked from a third unrelated host (in another country) that I could wget http://newsubdomain.example.com

So, on my Manjaro local computer, I tried opening http://newsubdomain.example.coom in Google Chrome, and it failed with ERR_NAME_NOT_RESOLVED; so I also tried to ping the subdomain from a terminal and it also failed.

I changed my network configuration to use Google’s DNSs 8.8.8.8, disconnected and reconnected to the network; retried and it kept failing.

So I rebooted, and sure enough, it could access the domain.

It’s very likely (I’m almost sure) that I had also tried and (expectedly) failed to access the subdomain before I set it up. So maybe the failure response from some DNS had been cached somehow. I certainly had (successfully) accessed the root domain before.

Steps to reproduce

see Summary
Should be something like this:

  • try to ping a subdomain that isn’t reachable, whose root domain is reachable
  • also ping the root domain which will succeed
  • try opening both in a browser (should succeed with the root domain and fail with the subdomain)
  • set up the server so that the subdomain is now reachable
  • make sure the DNS information has propagated, i.e. that the subdomain is indeed reachable from any other existing machine
  • make sure your local network is set up to use a DNS server that does know about the subdomain
  • disconnect and reconnect physically to the local network
  • try again to reach the subdomain via ping and a browser (make sure to restart the browser before)

Actual result

  • the subdomain is still unreachable until reboot

Expected result

  • the subdomain should be reachable without needing a reboot.

Note: I create new domains all the time almost on a daily basis, and don’t remember having this issue. MAYBE this is specific to the situation where a subdomain becomes reachable, which belongs to a root domain that was already previously reachable. But I’m just speculating based on the fact that this is a use case that I don’t hit nearly as often.

What are you using for resolve ?
DHCP, router, systemd-resolved, etc ?
(and how is that configured or cached etc?)

What are you using for resolve ?
DHCP, router, systemd-resolved, etc ?
(and how is that configured or cached etc?)

I don’t know, whatever the default is. I never touched any such configuration and I don’t remember being asked to choose any of that when I installed Manjaro. I’d be happy to double check but I don’t know where or how.

The only thing I configured is the network connections (wired and WiFi) where DHCP is enabled in “addresses only” mode and the DNSes are 8.8.8.8 and 8.8.4.4

This should mean (as far as I understand) that my system should never ask the router nor my ISP to resolve a domain, but rather it should only ask Google. But what the system does locally and whether or where it caches stuff I have no idea, that’s basically what I’d like to figure out

We can check resolver with

pacman -Qs resolv

I think at least some of the ISOs serve dnsmasq now. So we can check that too

pacman -Qs dns
systemctl status dnsmasq
$ systemctl status dnsmasq
○ dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
     Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; disabled; preset: disabled)
     Active: inactive (dead)
       Docs: man:dnsmasq(8)
$ pacman -Qs resolv
local/libmicrodns 0.2.0-1
    Minimal mDNS resolver library
local/openresolv 3.13.2-2
    resolv.conf management framework (resolvconf)