How soyunomas/taltun works
Taltun is an encrypted VPN engine with both a Go/Linux runtime and an Android client. The main workflow is to configure peer identities and routes, establish authenticated sessions, then encrypt and route IPv4 traffic through the tunnel or a user-space relay. The README also documents Lighthouse endpoint discovery, direct P2P promotion and relay fallback. The Android service excerpts show its tunnel and UDP processing; Go excerpts show engine setup and dataplane work. Some Go subsystem links rely on the SOURCE INDEX or README rather than sampled call sites.
Main entry points: engine.go VPN engine · MainActivity.kt VPN controls · TaltunVpnService.kt VPN service · TaltunConfig.kt Profile validation
Components 30
Android client
- VPN controls
android/app/src/main/java/com/soyunomas/taltun/android/MainActivity.kt - Profile editor
android/app/src/main/java/com/soyunomas/taltun/android/ProfileEditorActivity.kt - Profile storage
android/app/src/main/java/com/soyunomas/taltun/android/config/ConfigStore.kt - Profile validation
android/app/src/main/java/com/soyunomas/taltun/android/config/TaltunConfig.kt - VPN service
android/app/src/main/java/com/soyunomas/taltun/android/TaltunVpnService.kt - Connection status
android/app/src/main/java/com/soyunomas/taltun/android/VpnRuntimeState.kt
Go runtime
- VPN entry point
cmd/vpn/main.go - Runtime configuration
internal/config/config.go - VPN engine
internal/engine/engine.go
Identity and sessions
- Android sessions
android/app/src/main/java/com/soyunomas/taltun/android/core/TaltunSession.kt - Android cryptography
android/app/src/main/java/com/soyunomas/taltun/android/core/TaltunCrypto.kt - Android wire protocol
android/app/src/main/java/com/soyunomas/taltun/android/core/TaltunProtocol.kt - Key encoding
android/app/src/main/java/com/soyunomas/taltun/android/core/Hex.kt - Android replay window
android/app/src/main/java/com/soyunomas/taltun/android/core/ReplayWindow.kt - Handshake v2
internal/engine/handshake_v2.go - Control messages
internal/engine/control_v2.go - Peer sessions
internal/session/peer.go - Key and AEAD
pkg/crypto/keypair.go - Cookie protection
pkg/cookie/protector.go - Wire protocol
pkg/protocol/handshake.go - Replay filtering
pkg/replay/filter.go - Key generation
cmd/keygen/main.go
Routing and transport
- IPv4 utilities
android/app/src/main/java/com/soyunomas/taltun/android/core/Ipv4.kt - Peer route lookup
pkg/router/trie.go - Network utilities
pkg/netutil/interface_linux.go - Packet buffers
pkg/pool/buffer.go
Other components
- VPN user
- VPN command
- TUN interface
- Remote VPN peers
Connections 41
- VPN user → VPN controls: manages VPN
android/app/src/main/java/com/soyunomas/taltun/android/MainActivity.kt - VPN controls → Profile editor: opens editor
android/app/src/main/java/com/soyunomas/taltun/android/MainActivity.kt - VPN controls → Profile storage: loads profiles
android/app/src/main/java/com/soyunomas/taltun/android/MainActivity.kt - Profile editor → Profile storage: saves profiles
android/app/src/main/java/com/soyunomas/taltun/android/ProfileEditorActivity.kt - Profile editor → Profile validation: validates profile
android/app/src/main/java/com/soyunomas/taltun/android/ProfileEditorActivity.kt - VPN controls → VPN service: starts or stops
android/app/src/main/java/com/soyunomas/taltun/android/MainActivity.kt - VPN controls → Connection status: reads status
android/app/src/main/java/com/soyunomas/taltun/android/MainActivity.kt - VPN service → Profile storage: loads profile
android/app/src/main/java/com/soyunomas/taltun/android/TaltunVpnService.kt - VPN service → Android sessions: handles sessions
android/app/src/main/java/com/soyunomas/taltun/android/TaltunVpnService.kt - VPN service → Android wire protocol: parses packets
android/app/src/main/java/com/soyunomas/taltun/android/TaltunVpnService.kt - VPN service → Connection status: updates counters
android/app/src/main/java/com/soyunomas/taltun/android/TaltunVpnService.kt - Profile validation → Key encoding: decodes keys
android/app/src/main/java/com/soyunomas/taltun/android/config/TaltunConfig.kt - Profile validation → IPv4 utilities: validates addresses
android/app/src/main/java/com/soyunomas/taltun/android/config/TaltunConfig.kt - Profile validation → Android cryptography: checks key size
android/app/src/main/java/com/soyunomas/taltun/android/config/TaltunConfig.kt - Android sessions → Android cryptography: derives session keys
android/app/src/main/java/com/soyunomas/taltun/android/core/TaltunSession.kt - Android sessions → Android wire protocol: handles messages
android/app/src/main/java/com/soyunomas/taltun/android/core/TaltunSession.kt - Android sessions → Android replay window: checks replay
android/app/src/main/java/com/soyunomas/taltun/android/core/TaltunSession.kt - VPN command → VPN entry point: runs VPN
cmd/vpn/main.go - VPN entry point → Runtime configuration: loads settings
cmd/vpn/main.go - VPN entry point → VPN engine: creates and runs
cmd/vpn/main.go - VPN entry point → Peer sessions: configures peers
cmd/vpn/main.go - VPN engine → Runtime configuration: uses settings
internal/engine/engine.go - VPN engine → Peer sessions: manages peers
internal/engine/engine.go - VPN engine → Peer route lookup: routes packets
internal/engine/engine.go - VPN engine → Cookie protection: protects handshakes
internal/engine/engine.go - VPN engine → Key and AEAD: uses key operations
internal/engine/engine.go - VPN engine → Network utilities: sets up networking
internal/engine/engine.go - VPN engine → Packet buffers: gets packet buffers
internal/engine/engine.go - VPN engine → Wire protocol: encodes packets
internal/engine/engine.go - VPN engine → TUN interface: creates TUN
internal/engine/engine.go - TUN interface → VPN engine: supplies packets
README.md - VPN engine → Remote VPN peers: exchanges encrypted UDP
README.md - Handshake v2 → Key and AEAD: derives keys
internal/engine/handshake_v2.go - Handshake v2 → Wire protocol: uses handshake format
internal/engine/handshake_v2.go - Control messages → Wire protocol: uses control format
internal/engine/control_v2.go - Peer sessions → Key and AEAD: installs sessions
internal/session/peer.go - Peer sessions → Replay filtering: checks replay
internal/session/peer.go - VPN engine → Handshake v2: dispatches handshakes
- VPN engine → Control messages: handles peer updates
- Key generation → Key and AEAD: generates keys
cmd/keygen/main.go - VPN engine → Remote VPN peers: relays and discovers routes
README.md