WireGuard tunnel connects but large TCP transfers stall — small requests OK (likely PMTU / MSS black hole)
Environment
Ubuntu 22.04 server running WireGuard 1.0.202 as gateway (public IP from ISP), clients: macOS 13 laptop and Android 12 phone using WireGuard clients, server NATs client traffic to internet via home router/modem combo.
Symptoms
After establishing the WireGuard connection, interactive traffic (SSH, small web pages) works fine. Large TCP transfers (scp, git clone of multi-GB repo, HTTP downloads) start, transfer a portion, then stall indefinitely; connections eventually time out. ICMP pings and small UDP traffic are unaffected.
Observations
Lowering WireGuard MTU on the client to 1280 allows the large transfers to complete without stalling. Traceroute/mtr over the tunnel shows higher latency hops but no obvious route change. tcpdump on the server shows outgoing packets with DF (don't fragment) set and no 'Fragmentation needed' ICMP replies returning to the originating client. The home router/modem does not have a visible option to expose ICMP or to change packet handling. Disabling NAT on server (making client route direct) is not an option on current topology.
Already attempted
Tested different MTU values (1400, 1300, 1280); 1280 consistently resolves the issue. Disabled offloading (ethtool -K) on the server NIC with no change; added temporary iptables ACCEPT rules; restarted WireGuard. Captured packets on client and server during transfer to compare sizes and flags; saw that Path MTU Discovery (PMTUD) ICMP 'fragmentation needed' replies were not reaching the client.
Question
What is the safest way to fix these large-TCP-transfer stalls without forcing every client to use a low MTU? How do I identify which network hop is dropping PMTU-related ICMP messages and what configuration changes will resolve the stalls reliably?
Verified community troubleshooting
No answers yet..
Incident analysis
Most likely causes
Summary
Suggested Fixes
Continue troubleshooting
Related troubles
Matched from the title, description and tags
- Networking25% match
Site-to-site IPsec tunnel stalls large TCP transfers after disabling MSS clamp on edge firewall
Open0 answers - Networking21% match
WireGuard peer connects but cannot reach devices on remote LAN — TCP timeouts while ICMP sometimes passes
Open0 answers - Networking21% match
Dual‑WAN Edge Router Sends HTTPS Traffic Out Slower Link Despite Healthy Primary — Large TCP Transfers Stall
Open0 answers - Networking20% match
HTTP/HTTPS downloads stall ~65s over site-to-site GRE tunnel — TCP handshake OK then throughput drops to zero
Open0 answers