feat(dist): add standalone Linux client release package
New client-only distribution: ostp-client-linux-x64.tar.gz (0.92 MB) Contents: - ostp-client-linux (2.0 MB) - Universal musl static binary - README.md (8.3 KB) - Complete user guide with examples - client.json.example - Configuration template - SHA256SUMS - Integrity verification Documentation includes: - Quick start guide (install, setup, connect) - All CLI commands with examples - Profile management workflow - Configuration options - Troubleshooting guide - Security features overview - Systemd service template - Advanced usage (scripting, multiple profiles) Commands: - ostp-client-linux setup # Interactive wizard - ostp-client-linux connect --profile default - ostp-client-linux status # Show stats - ostp-client-linux disconnect - ostp-client-linux profiles list # Manage profiles Features: - Profile storage: ~/.config/ostp/profiles.json - TUN interface: ostp0 (10.X.Y.Z/16) - TLS mimicry with geo-specific SNI - Anti-VM detection (production only) - Root privilege check (libc::geteuid) Distribution strategy: - Server package: ostp-server-linux-x64.tar.gz (6.86 MB) - server + client + master - Client package: ostp-client-linux-x64.tar.gz (0.92 MB) - client only - Windows package: ostp-client-windows-x64.zip (1.29 MB) - GUI + daemon + installer
This commit is contained in:
BIN
dist/ostp-client-linux-x64.tar.gz
vendored
Normal file
BIN
dist/ostp-client-linux-x64.tar.gz
vendored
Normal file
Binary file not shown.
397
dist/ostp-client-linux/README.md
vendored
Normal file
397
dist/ostp-client-linux/README.md
vendored
Normal file
@@ -0,0 +1,397 @@
|
||||
# OSTP Client - Linux x64 CLI
|
||||
|
||||
Universal Linux VPN client with TUN interface support (statically linked with musl).
|
||||
|
||||
## 📦 Contents
|
||||
|
||||
- **ostp-client-linux** (2.0 MB) - CLI VPN client with profile management
|
||||
- **SHA256SUMS** - Integrity verification checksum
|
||||
- **client.json.example** - Configuration file template
|
||||
|
||||
## 🚀 Quick Start
|
||||
|
||||
### 1. Verify Integrity
|
||||
|
||||
```bash
|
||||
sha256sum -c SHA256SUMS
|
||||
```
|
||||
|
||||
### 2. Install
|
||||
|
||||
```bash
|
||||
chmod +x ostp-client-linux
|
||||
sudo cp ostp-client-linux /usr/local/bin/
|
||||
```
|
||||
|
||||
### 3. Setup Profile (Interactive)
|
||||
|
||||
```bash
|
||||
ostp-client-linux setup
|
||||
```
|
||||
|
||||
The wizard will prompt for:
|
||||
- **Server address** (e.g., `vpn.example.com:443`)
|
||||
- **Pre-shared key** (64 hex characters - get from admin)
|
||||
- **Country code** for SNI mimicry (US, RU, DE, NO, CN, etc.)
|
||||
- **Profile name** (e.g., "US-West", "RU-Moscow")
|
||||
|
||||
### 4. Connect
|
||||
|
||||
```bash
|
||||
# Using saved profile
|
||||
sudo ostp-client-linux connect --profile default
|
||||
|
||||
# Or with explicit parameters
|
||||
sudo ostp-client-linux connect \
|
||||
--server 1.2.3.4:443 \
|
||||
--psk YOUR_64_CHAR_HEX_PSK \
|
||||
--country US
|
||||
```
|
||||
|
||||
### 5. Check Status
|
||||
|
||||
```bash
|
||||
ostp-client-linux status
|
||||
```
|
||||
|
||||
Output:
|
||||
```
|
||||
🌍 VPN Connection Status
|
||||
|
||||
Status: Connected
|
||||
Interface: ostp0
|
||||
RX Bytes: 123 MB
|
||||
TX Bytes: 456 MB
|
||||
RX Packets: 98765
|
||||
TX Packets: 54321
|
||||
```
|
||||
|
||||
### 6. Disconnect
|
||||
|
||||
```bash
|
||||
sudo ostp-client-linux disconnect
|
||||
```
|
||||
|
||||
## 🛠️ Commands
|
||||
|
||||
### Connection Management
|
||||
|
||||
```bash
|
||||
# Connect with profile
|
||||
sudo ostp-client-linux connect --profile <name>
|
||||
|
||||
# Connect with parameters
|
||||
sudo ostp-client-linux connect \
|
||||
--server <ip:port> \
|
||||
--psk <hex_key> \
|
||||
--country <code>
|
||||
|
||||
# Run in background (daemon mode)
|
||||
sudo ostp-client-linux connect --profile default --daemon
|
||||
|
||||
# Disconnect
|
||||
sudo ostp-client-linux disconnect
|
||||
|
||||
# Show status
|
||||
ostp-client-linux status
|
||||
```
|
||||
|
||||
### Profile Management
|
||||
|
||||
```bash
|
||||
# List all profiles
|
||||
ostp-client-linux profiles list
|
||||
|
||||
# Add new profile
|
||||
ostp-client-linux profiles add \
|
||||
--name "US-West" \
|
||||
--server 1.2.3.4:443 \
|
||||
--psk YOUR_PSK \
|
||||
--country US
|
||||
|
||||
# Remove profile
|
||||
ostp-client-linux profiles remove "US-West"
|
||||
|
||||
# Set default profile
|
||||
ostp-client-linux profiles set-default "US-West"
|
||||
```
|
||||
|
||||
### Testing
|
||||
|
||||
```bash
|
||||
# Test connection (handshake only, no tunnel)
|
||||
ostp-client-linux test \
|
||||
--server 1.2.3.4:443 \
|
||||
--psk YOUR_PSK
|
||||
```
|
||||
|
||||
## 📂 Configuration
|
||||
|
||||
### Profile Storage
|
||||
|
||||
Profiles are stored at: `~/.config/ostp/profiles.json`
|
||||
|
||||
```json
|
||||
{
|
||||
"profiles": [
|
||||
{
|
||||
"name": "US-West",
|
||||
"server": "1.2.3.4:443",
|
||||
"psk": "64_character_hex_key",
|
||||
"country": "US"
|
||||
},
|
||||
{
|
||||
"name": "RU-Moscow",
|
||||
"server": "5.6.7.8:443",
|
||||
"psk": "another_64_char_hex_key",
|
||||
"country": "RU"
|
||||
}
|
||||
],
|
||||
"default_profile": "US-West"
|
||||
}
|
||||
```
|
||||
|
||||
### Manual Configuration
|
||||
|
||||
You can also edit `client.json` for advanced settings:
|
||||
|
||||
```json
|
||||
{
|
||||
"server": "vpn.example.com:443",
|
||||
"psk": "your_64_character_hex_psk_key",
|
||||
"country": "US",
|
||||
"auto_connect": false,
|
||||
"kill_switch": true,
|
||||
"dns_servers": ["1.1.1.1", "8.8.8.8"]
|
||||
}
|
||||
```
|
||||
|
||||
## 🔐 Security Features
|
||||
|
||||
### Stealth Mode
|
||||
- **TLS 1.3 Mimicry** - Looks like HTTPS traffic to DPI systems
|
||||
- **Geo-specific SNI** - Uses country-appropriate domains (cloudflare.com, google.com, etc.)
|
||||
- **UDP-over-TCP Framing** - Random padding to avoid pattern detection
|
||||
- **No Protocol Signatures** - Unidentifiable traffic
|
||||
|
||||
### Anti-Analysis (Production Build)
|
||||
- **VM Detection** - Refuses to run in analysis sandboxes
|
||||
- **Debugger Detection** - Exits if debugger attached
|
||||
- **Tool Detection** - Checks for IDA, Ghidra, GDB, strace, etc.
|
||||
- **Weighted Scoring** - Smart heuristics to avoid false positives on VPS
|
||||
|
||||
### Encryption
|
||||
- **AEAD Cipher**: ChaCha20-Poly1305
|
||||
- **Key Exchange**: X25519 ECDH
|
||||
- **PSK Validation**: HMAC-SHA256 with silent drop
|
||||
|
||||
## 🌐 Network Configuration
|
||||
|
||||
After successful connection:
|
||||
- **Interface**: `ostp0` (TUN device)
|
||||
- **Client IP**: Assigned by Master Node (10.X.Y.Z/16)
|
||||
- **Gateway**: Master Node (10.X.0.1)
|
||||
- **DNS**: Configurable (default: 1.1.1.1, 8.8.8.8)
|
||||
- **MTU**: 1420 (optimized for tunneling)
|
||||
|
||||
## 🖥️ System Requirements
|
||||
|
||||
- **OS**: Any Linux distribution (kernel 3.10+)
|
||||
- **Architecture**: x86_64 (AMD64)
|
||||
- **RAM**: 64 MB minimum
|
||||
- **Privileges**: Root required for TUN interface
|
||||
- **Dependencies**: None (static binary with musl)
|
||||
|
||||
## 🔧 Troubleshooting
|
||||
|
||||
### Permission Denied
|
||||
|
||||
```bash
|
||||
# Solution: Run with sudo
|
||||
sudo ostp-client-linux connect --profile default
|
||||
```
|
||||
|
||||
### No TUN Interface
|
||||
|
||||
```bash
|
||||
# Check if TUN module is loaded
|
||||
lsmod | grep tun
|
||||
|
||||
# Load TUN module
|
||||
sudo modprobe tun
|
||||
|
||||
# Make persistent (add to /etc/modules)
|
||||
echo "tun" | sudo tee -a /etc/modules
|
||||
```
|
||||
|
||||
### Connection Fails
|
||||
|
||||
```bash
|
||||
# Test handshake only
|
||||
ostp-client-linux test --server 1.2.3.4:443 --psk YOUR_PSK
|
||||
|
||||
# Check if server is reachable
|
||||
ping 1.2.3.4
|
||||
telnet 1.2.3.4 443
|
||||
|
||||
# Check logs (if running in daemon mode)
|
||||
sudo journalctl -f | grep ostp
|
||||
```
|
||||
|
||||
### Profile Not Found
|
||||
|
||||
```bash
|
||||
# List available profiles
|
||||
ostp-client-linux profiles list
|
||||
|
||||
# Create new profile
|
||||
ostp-client-linux setup
|
||||
```
|
||||
|
||||
### DNS Not Working
|
||||
|
||||
```bash
|
||||
# Check DNS configuration
|
||||
cat /etc/resolv.conf
|
||||
|
||||
# Manually set DNS
|
||||
echo "nameserver 1.1.1.1" | sudo tee /etc/resolv.conf
|
||||
|
||||
# Or use systemd-resolved
|
||||
sudo systemctl restart systemd-resolved
|
||||
```
|
||||
|
||||
## 📊 Performance Tips
|
||||
|
||||
### Optimize MTU
|
||||
|
||||
```bash
|
||||
# Find optimal MTU
|
||||
ping -M do -s 1472 1.1.1.1
|
||||
|
||||
# Set custom MTU (after connection)
|
||||
sudo ip link set ostp0 mtu 1400
|
||||
```
|
||||
|
||||
### Background Mode
|
||||
|
||||
```bash
|
||||
# Run in background
|
||||
sudo ostp-client-linux connect --profile default --daemon
|
||||
|
||||
# Check if running
|
||||
ostp-client-linux status
|
||||
```
|
||||
|
||||
### Kill Switch (TODO)
|
||||
|
||||
Automatically block all traffic when VPN disconnects:
|
||||
|
||||
```bash
|
||||
# Configure in client.json
|
||||
"kill_switch": true
|
||||
```
|
||||
|
||||
## 🔄 Updates
|
||||
|
||||
Check for updates:
|
||||
```bash
|
||||
ostp-client-linux --version
|
||||
```
|
||||
|
||||
Download latest release from:
|
||||
- GitHub: https://github.com/ospab/ospab.network/releases
|
||||
- Gitea: http://localhost:4000/ospab/ospab.network/releases
|
||||
|
||||
## 📚 Advanced Usage
|
||||
|
||||
### Multiple Profiles
|
||||
|
||||
```bash
|
||||
# Add multiple profiles for different regions
|
||||
ostp-client-linux profiles add --name US --server us.vpn.com:443 --psk KEY1 --country US
|
||||
ostp-client-linux profiles add --name RU --server ru.vpn.com:443 --psk KEY2 --country RU
|
||||
ostp-client-linux profiles add --name DE --server de.vpn.com:443 --psk KEY3 --country DE
|
||||
|
||||
# Switch between profiles
|
||||
sudo ostp-client-linux disconnect
|
||||
sudo ostp-client-linux connect --profile RU
|
||||
```
|
||||
|
||||
### Scripting
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# Auto-connect script
|
||||
|
||||
if ! ostp-client-linux status | grep -q "Connected"; then
|
||||
echo "Connecting to VPN..."
|
||||
sudo ostp-client-linux connect --profile default --daemon
|
||||
sleep 3
|
||||
|
||||
if ostp-client-linux status | grep -q "Connected"; then
|
||||
echo "✓ Connected successfully"
|
||||
else
|
||||
echo "✗ Connection failed"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
```
|
||||
|
||||
### Systemd Service
|
||||
|
||||
Create `/etc/systemd/system/ostp-client.service`:
|
||||
|
||||
```ini
|
||||
[Unit]
|
||||
Description=OSTP VPN Client
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
ExecStart=/usr/local/bin/ostp-client-linux connect --profile default
|
||||
Restart=on-failure
|
||||
RestartSec=10s
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
Enable and start:
|
||||
```bash
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable ostp-client
|
||||
sudo systemctl start ostp-client
|
||||
```
|
||||
|
||||
## ⚠️ Important Notes
|
||||
|
||||
- **Root Required**: TUN interface creation requires root privileges
|
||||
- **PSK Security**: Never share your PSK publicly or commit to git
|
||||
- **Production Mode**: Anti-analysis checks only run in release builds
|
||||
- **Single Instance**: Only one client can run at a time
|
||||
- **Network Changes**: Route tables are modified during connection
|
||||
|
||||
## 🆘 Support
|
||||
|
||||
For issues and questions:
|
||||
- **GitHub Issues**: https://github.com/ospab/ospab.network/issues
|
||||
- **Documentation**: See project README.md
|
||||
- **Email**: support@ospab.network
|
||||
|
||||
## 📝 Version History
|
||||
|
||||
- **0.1.0** (January 2, 2026)
|
||||
- Initial release
|
||||
- Profile management system
|
||||
- TLS mimicry with geo-SNI
|
||||
- Anti-VM/debugger detection
|
||||
- Interactive setup wizard
|
||||
|
||||
---
|
||||
|
||||
**Version:** 0.1.0
|
||||
**Build Date:** January 2, 2026
|
||||
**License:** Proprietary
|
||||
**Copyright:** © 2026 Ospab Network
|
||||
1
dist/ostp-client-linux/SHA256SUMS
vendored
Normal file
1
dist/ostp-client-linux/SHA256SUMS
vendored
Normal file
@@ -0,0 +1 @@
|
||||
cf3996eac77ed62d184452b3032e3bffc60c120e77cee57899a33893322b0cc4 ostp-client-linux
|
||||
12
dist/ostp-client-linux/client.json.example
vendored
Normal file
12
dist/ostp-client-linux/client.json.example
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"server": "vpn.example.com:443",
|
||||
"psk": "YOUR_64_CHARACTER_HEX_PSK_KEY_FROM_ADMIN_HERE_CHANGE_THIS",
|
||||
"country": "US",
|
||||
"auto_connect": false,
|
||||
"kill_switch": false,
|
||||
"dns_servers": [
|
||||
"1.1.1.1",
|
||||
"8.8.8.8"
|
||||
],
|
||||
"log_level": "info"
|
||||
}
|
||||
BIN
dist/ostp-client-linux/ostp-client-linux
vendored
Normal file
BIN
dist/ostp-client-linux/ostp-client-linux
vendored
Normal file
Binary file not shown.
Reference in New Issue
Block a user