# MeshVPN Client The MeshVPN Client creates a secure, peer-to-peer overlay network on your machine. It uses WireGuard encryption and UDP hole punching to connect you to other peers without needing manual port forwarding. ## Features - **Zero-Config Connection**: Connect using a simple Network Key. - **Cross-Platform**: Supports Windows, macOS, and Linux. - **Secure E2EE**: End-to-end encryption powered by the Noise Protocol. - **Automatic NAT Traversal**: Bypasses firewalls using STUN and UDP hole punching. ## Installation ### Prerequisites - [Rust](https://rustup.rs/) (Stable channel) - **Administrator/Root Privileges**: Required to create the virtual TUN interface. ### Setup 1. **Clone the repository** 2. **Build the client**: ```bash cargo build --release ``` 3. **Install TUN Driver**: - **Windows**: Install `Wintun` (bundled with the installer). - **macOS**: Grant permissions for the Network Extension. - **Linux**: Ensure the `tun` module is loaded (`modprobe tun`). ## Usage 1. **Start the Client**: ```bash ./target/release/meshvpn-client ``` 2. **Configure Your Node**: - **Network Key**: Enter the shared key provided by your network administrator. - **User Name**: Enter your preferred display name (e.g., "My-Laptop"). 3. **Connect**: The client will automatically discover the coordinator, register your node, and start discovering peers. ## Troubleshooting - **Permission Denied**: Ensure you are running the client as Administrator (Windows) or using `sudo` (Linux/macOS). - **Cannot Connect**: Check if UDP port 3478 (STUN) and 50051 (Coordinator) are reachable from your network.