Skip Navigation

Setup a DNS server on a dynamic public ip

Hello! I want to set up a pi-hole on my home and connect from my parent's. Both setups have a dynamic IP assigned by my isp and are different networks.

I have a couple of questions:

  1. I can get a domain that updates automatically. But how would I resolve it on the client side?
  2. Is there any way to authenticate on the server? By Mac maybe? That can be spoofed right?

Edit: my bad, thanks for correcting me, Mac is another layer completely

  1. Can setting up a VPN solve both (1) and (2)?
  2. Is there any other way?

Thanks!

16 comments
  • You can't configure DNS server by name on anything, so you'd need some kind of script/automation to query current IP address of your pihole from google/your ddns provider/someone and update that on your parents router which can be a bit tricky or straight impossible depending on the hardware.

    VPN would solve both 1 and 2 from your list as your pihole would be available with static address on both locations. You can't authenticate on DNS server by MAC as you don't receive originating MAC at all. Other solution would be to get a static IP address from some provider and tunnel traffic so that your pihole could be reached trough that static address.

  • If both routers support it: S2S VPN. Also has the advantage of being able to access the stuff from each others side.
    Disadvantage: Viruses can traverse the tunnel.

  • A lot of people are suggesting VPNs

    But there's some beauty in DoH/DoT/Quic ports opened

    You should check adguard-home for the dns stuff For your questions:

    1. I don't quite get what you mean. But if you say "my domain's dns updates regularly, how would one of the clients of the dns get the new IP", then I would say upstream dns, and maybe pi-hole/adguard have something up their sleeve
    2. In adguard you can have client ids, it can be different things I forgot, but mainly it can be the domain you're using as dns, so john.dns.mysite.com, and you can give 0.0.0.0 response to every client that is not a client. Maybe there are more clever ways to do this
    3. Yes, but for 1 is not so straightforward, you have many options, you either need to update your dns in some way anyway to connect to VPN, or rent a cloud to host(or port forward) the entry point there (or the theoretical option, some selfhosted vpns allow you to do everything without any ports opened)
    4. Adguard-home, using a public dns, route through tor, cloudflare's tunnels, host on a cloud, forward ports to a cloud, and many more

    And for dynamic IP, I personally use cloudflare(although I don't trust them) (he-he, I didn't expect previous point to be so long, I wrote this at the beginning)

    Ah, and for the VPN I personally use headscale

16 comments