WireGuard peer sends packets but transfer received stays at 0 B
Hey everyone,
Quick update after another full day debugging this WireGuard/VPS relay setup.
Current topology:
Kali VM
↕
WireGuard
↕
Ubuntu VPS relay (public IP hidden)
↕
Remote UniFi LAN (10.x.x.x/24)
What works now:
- wg0 comes UP correctly on both Kali and VPS
- VPS ↔ UniFi peer has stable handshakes
- Rebuilt all WireGuard private/public keys + PSKs from scratch
- Fixed several mismatched peer configs
- Corrected AllowedIPs and routes
- Enabled IPv4 forwarding
- Added NAT + FORWARD iptables rules
- tcpdump confirms UDP packets from Kali ARE reaching the VPS on port 51820
Relevant commands already tested:
bash sudo iptables -t nat -A POSTROUTING -s 10.x.x.x/24 -o eth0 -j MASQUERADE sudo iptables -A FORWARD -i wg0 -j ACCEPT sudo iptables -A FORWARD -o wg0 -j ACCEPT sudo systemctl restart wg-quick@wg0
Current issue:
Kali still shows:
bash transfer: 0 B received
And on the VPS:
- the Kali peer NEVER establishes a handshake
- only the UniFi peer handshakes correctly
Important detail:
tcpdump on the VPS clearly shows UDP packets arriving from the Kali side, so packets ARE reaching the server physically.
At this point I feel like I’m missing something fundamental in the WireGuard handshake/routing flow itself.
What would you inspect next?
Could this still be:
- routing?
- conntrack/NAT?
- VMware networking weirdness?
- MTU?
- asymmetric return path?
- wrong peer matching on the VPS?
Would really appreciate ideas from people who debugged similar one-way WireGuard behavior.
Thanks!