WrtNova – browser config generator that builds pre-configured images via OpenWrt's ASU

Here is the diagram of wrtnova.sh default DNS path:

 client (vpn.lan)
    |  plain DNS :53  (firewall-redirected, can't escape)
    v
 dnsmasq  (per-interface vpn_lan instance)
    |  forwards to 192.168.15.1#5354
    v
 AdGuard Home  (filtering + cache)
    |  DoH / DoQ  --- ENCRYPTED ---
    v
 Quad9 / Cloudflare / Google     <- what your leak test sees

DNS path with ADGUARD_MAIN_DNS=1 (AdGuard as primary resolver):

 client (vpn.lan)
    |  plain DNS :53  (firewall-redirected)
    v
 AdGuard Home  (192.168.15.1:53, primary + filtering + cache)
    |                                  \
    |  *.lan / *.vpn.lan                \  everything else
    v                                    v
 dnsmasq :54  (local names + DHCP)   DoH / DoQ  --- ENCRYPTED ---
                                        |
                                        v
                                     Quad9 / Cloudflare / Google   <- what your leak test sees
  1. The "leak". A leak test shows whoever answers your query, and AdGuard answers via encrypted DoH/DoQ to Quad9/Cloudflare/Google. Seeing them is correct. The queries are encrypted, so neither your ISP nor Mullvad can read them. A genuine leak is plaintext port 53 reaching your ISP outside the tunnel, and that can't happen here: every client is forced through its own dnsmasq and port 53 is firewall-redirected. If you'd rather use Mullvad's own DNS, swap AdGuard's upstreams.

  2. "vpn_lan forwards to lan and lan forwards to vpn_lan". That's split-horizon DNS, not traffic routing. It only lets a VPN client resolve something.lan and a LAN client resolve something.vpn.lan. Where your packets go is separate: traffic is forwarded lan -> WG zone with a kill switch.

  3. "AdGuard intercepts vpn.lan requests". The VPN network is part of the LAN firewall zone, so it inherits the same DNS interception and sends queries to AdGuard. Expected.

  4. Blank pages / slow first load. MTU. WireGuard defaults to 1420 and large packets black-hole if your path is smaller. Lower the WireGuard interface MTU and test 1400, 1360, 1320, 1280 until it's stable. The Mullvad app does this automatically; on the router it's manual.

One more note on the design intent: sending DNS through AdGuard over DoH/DoQ is deliberate. Even a no-logs VPN could see every domain if you use their plain DNS - you're just trusting them not to. WrtNova encrypts queries to Quad9/Cloudflare/Google instead. The leak test showing those resolvers is the model working, not failing.

1 Like