Troubleshooting
Common issues and solutions for MESH deployments.
Connection issues
Can't Connect to Control plane
Symptoms:
- meshcli up fails with connection error
- "Unable to reach control plane" message
- Timeout errors
Solutions:
-
Verify control plane URL
-
Check DNS resolution
-
Check firewall
-
Verify control plane is running
-
Check reverse proxy
-
Try different network
- Switch from WiFi to mobile data (or vice versa)
- Some networks block VPN traffic
Daemon Won't Start
Symptoms:
- tailscaled-amnezia fails to start
- Socket errors
- Permission denied errors
Solutions:
-
Check if already running
-
Check socket permissions
-
Check state directory
-
Run with verbose logging
-
Check systemd service (if using)
Authentication Fails
Symptoms: - "Invalid auth key" error - "Auth key expired" error - Login prompt doesn't appear
Solutions:
-
Verify pre-auth key
-
Generate new key
-
Check key expiration
- Pre-auth keys expire after the specified time
-
Generate a new key if expired
-
Try interactive authentication
No Mesh IP Assigned
Symptoms:
- meshcli status doesn't show a mesh IP address
- Node appears offline
- Can't communicate with other nodes
Solutions:
-
Verify pre-auth key is valid
-
Check control plane logs
-
Ensure user exists
-
Try reconnecting
-
Check node registration
Connectivity issues
No Peer-to-Peer Connection (Using DERP Relay)
Symptoms:
- meshcli status shows DERP address in CurAddr
- Slow connection speeds
- High latency
Solutions:
-
Check NAT type
-
Check UDP connectivity
-
Check firewall rules
-
Enable UPnP/NAT-PMP on router
- Check router settings
-
Enable UPnP or NAT-PMP for automatic port forwarding
-
Try different network
- Some networks (corporate, public WiFi) block UDP
-
Try mobile data or different WiFi network
-
Force direct connection
Peers Not Visible
Symptoms:
- meshcli status --peers shows no peers
- Devices don't appear in mesh
- Can't ping peers
Solutions:
-
Verify both devices are connected
-
Check ACLs
-
Verify same control plane
-
Ensure all devices connect to the same control plane URL
-
Check user assignment
-
Restart daemon
Connection Drops Frequently
Symptoms: - Intermittent connectivity - Frequent reconnections - "Peer offline" messages
Solutions:
-
Check network stability
-
Disable power saving (mobile)
- Android: Settings > Battery > Optimize battery usage > MESH > Don't optimize
-
Disable "Adaptive battery" for MESH app
-
Increase keepalive
-
Check DERP relay stability
-
Monitor logs
ADB Issues
ADB Connection Fails
Symptoms:
- adb connect fails
- "Connection refused" error
- "Unable to connect" error
Solutions:
-
Verify device is online
-
Check ADB port
-
Enable ADB-over-WiFi
-
Restart ADB
-
Check firewall on Android
- Some security apps block ADB
-
Temporarily disable and test
-
Verify ADB is enabled in MESH app
- Open MESH app
- Settings > ADB-over-WiFi > Enabled
ADB Disconnects Frequently
Symptoms: - ADB connection drops during operations - "device offline" errors - Need to reconnect frequently
Solutions:
- Disable power saving
-
Settings > Battery > MESH > Don't optimize
-
Keep MESH app in foreground
-
Don't minimize the app during ADB operations
-
Use persistent connection
-
Check network stability
- Ensure stable WiFi/mobile connection
- Avoid switching networks during operation
Performance issues
Slow Transfer Speeds
Symptoms: - Slow file transfers - High latency - Timeouts during large operations
Solutions:
-
Check connection type
-
Disable AmneziaWG obfuscation
-
Use lighter obfuscation
- Switch from Heavy to Balanced or Light preset
-
Check network bandwidth
-
Compress data
High CPU Usage
Symptoms: - High CPU usage by tailscaled-amnezia - Device heating up - Battery drain (mobile)
Solutions:
- Disable obfuscation
- AmneziaWG adds CPU overhead
-
Disable if not needed
-
Reduce connection checks
-
Limit peer count
- Use ACLs to limit visible peers
-
Only connect to necessary devices
-
Check for loops
Control plane Issues
Headscale Won't Start
Symptoms: - Docker container exits immediately - "Address already in use" errors - Database errors
Solutions:
-
Check logs
-
Check port conflicts
-
Verify config syntax
-
Check database
-
Reset database (WARNING: deletes all data)
Nodes Not Registering
Symptoms:
- Nodes don't appear in headscale nodes list
- Authentication succeeds but node not visible
- "Node not found" errors
Solutions:
-
Check node list
-
Check user exists
-
Create user if missing
-
Check ACLs
-
Register manually
DERP Relay Not Working
Symptoms: - Peers can't connect even via relay - "No DERP home" errors - All connections fail
Solutions:
-
Check STUN port
-
Test STUN
-
Check DERP config
-
Verify DERP is enabled
-
Check firewall
Android App Issues
App Crashes
Symptoms: - App closes unexpectedly - "MESH has stopped" error - Can't open app
Solutions:
- Clear app data
- Settings > Apps > MESH > Storage > Clear Data
-
Reconnect to mesh
-
Reinstall app
-
Check logs
-
Check Android version
- MESH requires Android 8.0+
- Update Android if possible
VPN Permission Denied
Symptoms: - "VPN permission required" error - Can't connect to mesh - Permission dialogue doesn't appear
Solutions:
- Grant permission manually
- Settings > Apps > MESH > Permissions
-
Enable VPN permission
-
Check for conflicting VPN
- Disconnect other VPN apps
-
Only one VPN can be active at a time
-
Reinstall app
- Uninstall and reinstall to reset permissions
Diagnostic commands
Collect Logs
# Analyst client logs
sudo journalctl -u mesh --since "1 hour ago" > mesh-logs.txt
# Control plane logs
docker logs headscale > headscale-logs.txt
# Android logs
adb logcat -d > android-logs.txt
Generate Bug Report
# Analyst client
sudo meshcli bugreport --diagnose > mesh-bugreport.txt
# Android
adb bugreport bugreport.zip
Network Diagnostics
# Check NAT type and DERP latencies
sudo meshcli netcheck
# Trace route to peer
sudo meshcli ping 100.64.X.X --verbose
# Check WireGuard interface
ip addr show tun0
sudo wg show
Connection Diagnostics
# Detailed status
sudo meshcli status --json | jq
# Check peer connectivity
for peer in $(sudo meshcli status --json | jq -r '.Peer[].TailscaleIPs[0]'); do
echo "Pinging $peer..."
sudo meshcli ping $peer --c 3
done
# Monitor connection changes
watch -n 1 'sudo meshcli status --peers'
Getting Help
If you can't resolve your issue:
- Check GitHub Issues: github.com/BARGHEST-ngo/mesh/issues
- Create Bug Report: Include logs, config, and steps to reproduce
- Contact BARGHEST: barghest.asia
Next steps
- User guide - Learn forensic workflows
- CLI reference - Complete command documentation
- Architecture - Understand how MESH works