# softether-go documentation Standalone SoftEther VPN client written in Go. Connects to SoftEther VPN servers using the native protocol over TLS, with built-in DHCP, automatic reconnection, and route management. ## Features - Native SoftEther protocol (TLS + HTTP handshake + TCP block framing) - Built-in DHCP client (raw Ethernet frame construction through the VPN tunnel) - Automatic reconnection with fresh DHCP on each reconnect - Host route to VPN server via existing default gateway (prevents routing loops) - Classless static routes (DHCP option 121/249, RFC 3442) - DNS configuration from DHCP lease (backup/restore of `/etc/resolv.conf`) - Hashed password (SHA-0) and plaintext password (RADIUS/external) authentication - Single static binary, Linux only ## Contents - [Usage & CLI reference](usage.md) — flags, examples, Docker usage - [Architecture](architecture.md) — connection flow, DHCP, reconnection, routing - [Building](building.md) — Go, Nix, static builds - [Project structure](structure.md) — source layout and package descriptions ## Requirements - Linux (uses `/dev/net/tun` for TAP devices) - `CAP_NET_ADMIN` or root (TAP device creation, route management) - `ip` command (iproute2) on `$PATH`