WireGuard peer connects but cannot reach devices on remote LAN — TCP timeouts while ICMP sometimes passes
Environment
WireGuard server on Ubuntu 22.04 VPS (public IP), home gateway is Raspberry Pi 4 running WireGuard and hosting LAN 192.168.50.0/24; clients are laptops and phones. Server uses nftables for firewall, clients use wg-quick on Linux/macOS.
Symptoms
Peer status shows handshake and transfer bytes on both ends. From a laptop connected to WireGuard client, ping to VPS succeeds. Pinging devices on the remote LAN (192.168.50.10) intermittently works for short bursts of ICMP but prolonged pings often return 'Destination Host Unreachable' or TCP connections to e.g. HTTP 192.168.50.10:80 time out while traceroute shows packets reach server and then stop.
Observations
Server wg show shows AllowedIPs for client includes 192.168.50.0/24. Server's sysctl net.ipv4.ip_forward=1 is set. nftables rules include input/forward policy allow for wg0, but there is no explicit POSTROUTING NAT rule for traffic from wg0 going out to the internet or to the LAN interface. tcpdump on server shows incoming packets from client to target LAN hosts but no return packets arriving at the server interface when a TCP connection attempt is made. On the home gateway, there are no routes back to the client's virtual IP if traffic arrives from the VPS public IP (i.e., source IP is the client's WireGuard IP).
Already attempted
Verified AllowedIPs and peer keys, disabled firewalld/nftables temporarily on server to rule out blocking, added broad accept forwarding rules, confirmed ip_forward=1 on both sides, restarted WireGuard and network services. Attempted to add 0.0.0.0/0 to client AllowedIPs then revert — no change for LAN reachability. Rebooted home gateway and tested direct ping from VPS to LAN host (works when NAT/SNAT applied on server).
Question
What reversible changes allow WireGuard clients to access the remote LAN hosts reliably (both ICMP and TCP), and how to determine whether the server or home gateway must perform NAT or route updates?
Verified community troubleshooting
No answers yet..