Here is the clear, direct breakdown of my setup and the troubleshooting steps in standard homelab terms. The Architecture Setup - Edge Router: Asus RT-BE88U acting as the WireGuard VPN server. - DNS Cluster: Two Technitium DNS servers running in Proxmox LXC containers. - High Availability (HA): keepalived managing a Virtual IP (VIP) at 192.168.11.53 for DNS failover. - Upstream Resolution: Pure recursive root server resolution (no upstream forwarders like Cloudflare/Google configured). - Ad-Blocking Action: Configured to drop blocked domains using the NXDOMAIN resolution method. - Reverse Proxy & Auth: Nginx Proxy Manager (NPM) handles local SSL/domains, protected by 2FA/OTP for the dashboards. Step 1: Configuring the WireGuard Server (Asus) When spinning up the WireGuard server on the Asus RT-BE88U, the interface was assigned a dedicated tunnel subnet: - Tunnel Subnet: 10.6.0.1/32 - Max Clients: 10 (allocating tunnel IPs from 10.6.0.2 to 10.6.0.11 to connecting peers). - Peer DNS Injected: Handed out the keepalived VIP (192.168.11.53) to all VPN clients. Step 2: Fixing the "No Internet / No Loading" Issue Once the Android client connected over 5G, the tunnel established successfully but data stopped loading. This was a classic Network Access Control List (ACL) block. By default, Technitium only allows recursion requests coming from the immediate subnet it sits on. When the phone tried to query the VIP from its WireGuard IP (10.6.0.X), Technitium dropped the packets. The Fix: 1. Navigated to both Technitium LXC instances -> Settings > Recursion. 2. Located the Network Access Control List (ACL). 3. Added the WireGuard subnet 10.6.0.0/24 to the allowed list (or used the wide-open 0.0.0.0/0 flag, which is perfectly safe since port 53 isn't forwarded to the WAN). 4. Saved settings on both nodes. This immediately fixed the recursion block, allowing the 5G client to resolve names and block ads natively via NXDOMAIN. Step 3: Automating the Client (WG Tunnel App)