TUN-based SOCKS5 proxy agent for Linux.
Mutiauk creates a virtual network interface (TUN) and routes selected TCP/UDP traffic through a SOCKS5 proxy using Google's gVisor userspace TCP/IP stack.
- Route specific CIDRs through SOCKS5 proxy
- TCP and UDP forwarding support
- WebSocket transport for firewall bypass
- Hot reload configuration via SIGHUP
- Userspace networking (no kernel modifications)
- Automatic route fetching from Muti Metroo API
- Unix socket API for CLI-daemon communication
- Route persistence with
--persistflag
- Linux with TUN support
- Root privileges (CAP_NET_ADMIN)
- SOCKS5 proxy server
Download the latest release from the Releases page.
# Download
curl -L -o mutiauk https://github.com/postalsys/Mutiauk/releases/latest/download/mutiauk-linux-amd64
chmod +x mutiauk
sudo mv mutiauk /usr/local/bin/# Start daemon with config file
sudo mutiauk daemon -c /etc/mutiauk/config.yaml
# Check status (shows daemon info, config path, uptime)
mutiauk status
# Manage routes
mutiauk route list
mutiauk route add 10.0.0.0/8
mutiauk route add 10.0.0.0/8 --persist # Save to config file
mutiauk route remove 10.0.0.0/8
# Analyze routing for a destination
mutiauk route trace 10.10.5.100
mutiauk route trace internal.corp.local --jsonSee configs/mutiauk.example.yaml for a complete example configuration.
tun:
name: tun0
mtu: 1500
address: 10.200.200.1/24
socks5:
server: proxy.example.com:1080
# username/password for SOCKS5 auth and WebSocket HTTP Basic Auth
# username: user
# password: secret
# WebSocket transport (for firewall bypass)
# Option 1: Use wss:// URL
# server: wss://relay.example.com:8443/socks5
# Option 2: Explicit transport
# transport: websocket # "tcp" (default) or "websocket"
# ws_path: /socks5
routes:
- destination: 192.168.0.0/16
enabled: true
- destination: 10.0.0.0/8
enabled: true
# Optional: automatic route fetching from Muti Metroo
autoroutes:
enabled: true
url: "http://localhost:8080"
poll_interval: 30sFull documentation: https://mutimetroo.com/mutiauk/
Performance benchmarks running through a Muti Metroo SOCKS5 tunnel:
| Protocol | Throughput | Duration | Notes |
|---|---|---|---|
| TCP | 1.42 Gbits/sec | 60s | 10 concurrent streams via iperf3 |
| UDP | 100 Mbits/sec | 60s | 0.09% packet loss, 0.2ms jitter |
Test environment: All components (TUN client, SOCKS5 ingress, exit node, echo server) running on the same machine in Docker containers. Real-world performance over network links will vary based on latency and bandwidth.
Data path:
Client -> TUN -> Mutiauk -> SOCKS5 -> Muti Metroo (QUIC) -> Exit -> Target
See test/loadtest/ for the benchmark code and instructions.
# Build for Linux
make build-linux
# Build for ARM64
make build-linux-arm64
# Run tests
make test
# Run load tests
make loadtest-up # Start test environment
make loadtest-shell # Get shell in test container
make loadtest-run # Run full test suite
make loadtest-down # Stop test environmentMIT License - see LICENSE for details.