softether-go/docs/main.md
Git Sagar 17c1063e1f refactor: extract session/netcfg/tunnel, add mac/dhcp/policy-route flags
- Split cmd/softether-go into main.go (flags, reconnect loop) and
  session.go (session lifecycle, DHCP orchestration)
- Extract network config to pkg/netcfg (TAP config, routing, DNS, policy routes)
- Move frame bridging to pkg/client/tunnel.go as Bridge() method
- Add -mac, -dhcp, -policy-route-table CLI flags
- Add SetMAC() to pkg/tap for deterministic DHCP assignments
- Update all docs to reflect new structure and flags

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-06 16:43:12 +05:30

1.3 KiB

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)
  • Policy routing for asymmetric return paths (VPN port forwards)
  • DNS configuration from DHCP lease (backup/restore of /etc/resolv.conf)
  • Deterministic MAC address support for stable DHCP assignments
  • Hashed password (SHA-0) and plaintext password (RADIUS/external) authentication
  • Single static binary, Linux only

Contents

Requirements

  • Linux (uses /dev/net/tun for TAP devices)
  • CAP_NET_ADMIN or root (TAP device creation, route management)
  • ip command (iproute2) on $PATH