TunD

Release v3.0

A small virtual LAN for LAN-party games.

TunD creates a self-hosted virtual IPv4 LAN for games like Artemis and direct-IP multiplayer. Use the desktop GUI when you want a launcher, or the CLI when you want one binary and a terminal.

TunD desktop GUI preview
Desktop GUI launcher

Start a LAN without teaching everyone the CLI.

Generate a shared key, host the virtual LAN, and copy a client command friends can paste into a terminal.

Downloads

Use the GUI bundle for the easiest start, or the standalone CLI for terminals, scripts, and headless hosts.

Compatibility: v3.0 uses protocol 5 and cannot connect to 2.x. Update the server and every client together.

Windows

Includes the GUI, CLI, Flutter runtime files, and wintun.dll. Keep every extracted file in the same folder.

Download bundle

macOS

Universal Apple Silicon and Intel builds. For the GUI, extract the zip and run ./tund-gui.command next to tund-gui.app.

Do not run sudo tund-gui.app: the .app is a bundle directory, not the executable.

Download GUI Download CLI

Quick start

Run one reachable machine as the host, then connect each player with the same shared network key when prompted.

Host
# on the machine that should host the virtual LAN
sudo ./tund-cli server --key-stdin
Join
# on every machine that should join
sudo ./tund-cli client -s <server_ip> --key-stdin

No accounts

There is no registration service or hosted backend. You only need a reachable host IP, UDP port, and shared key.

LAN-style games

Built for direct-IP IPv4 games and LAN-party workflows. It transports IPv4 packets, including subnet broadcast.

C core, GUI launcher

The tunnel is implemented in C. The Flutter GUI starts the existing CLI instead of reimplementing networking.

Encrypted in transit, not end-to-end.

TunD encrypts traffic between each endpoint and the server. The server still decrypts packets to route them, so use a trusted host.

Platform notes

The tunnel needs administrator/root privileges because it creates and configures a virtual network interface.

Windows firewall

If this machine is the host, allow inbound UDP 9909. ICMP ping can still be blocked without affecting game traffic.

netsh
netsh advfirewall firewall add rule name="TunD" dir=in action=allow protocol=udp localport=9909

macOS first run

If macOS blocks the unsigned app or binary, clear the quarantine flag once after extracting the release. Then start the GUI with ./tund-gui.command.

quarantine
xattr -dr com.apple.quarantine ./tund-gui-darwin-universal
xattr -d com.apple.quarantine ./tund-cli-darwin-universal
launch GUI
cd tund-gui-darwin-universal
./tund-gui.command

Linux host firewall

Clients usually only need outbound UDP. Hosts must allow inbound UDP on the selected port.

  1. 1Ubuntu/Debian: sudo ufw allow 9909/udp
  2. 2Fedora/RHEL: sudo firewall-cmd --add-port=9909/udp --permanent
  3. 3Then test with direct game traffic or nc if ping is blocked.