Oniux is a powerful network isolation tool that leverages Linux network namespaces and the Arti Tor implementation (written in Rust) to provide transparent Tor routing for any application. Unlike traditional Tor proxy setups, Oniux creates an isolated network environment where all traffic is automatically routed through the Tor network.
Oniux combines several technologies to achieve network-level isolation:
| Feature | Traditional Tor Proxy | Oniux |
|---|---|---|
| DNS Leak Protection | Manual configuration required | ✅ Automatic |
| IPv6 Leak Protection | Must be manually disabled | ✅ Completely isolated |
| Application Compatibility | Apps must support SOCKS proxy | ✅ Any application |
| Configuration Complexity | Per-application setup | ✅ Single command wrapper |
rustc and cargo 1.70+gitlab.torproject.org/tpo/core/oniux.
Beware of unofficial mirrors or forks that may contain malicious code.
Arch Linux provides up-to-date Rust packages in the official repository:
# Update system
sudo pacman -Syu
# Install Rust toolchain and dependencies
sudo pacman -S rust cargo git base-devel pkg-config
# Check if TUN device exists
ls -l /dev/net/tun
# Expected output:
# crw-rw-rw- 1 root root 10, 200 Feb 4 13:53 /dev/net/tun
/dev/net/tun doesn't exist, TUN support is
compiled into your kernel. This is normal for modern Arch installations.
Install directly from the official Tor Project GitLab repository:
cargo install --locked \
--git https://gitlab.torproject.org/tpo/core/oniux \
--tag v0.7.0 \
oniux
# Check binary exists and size
ls -lh ~/.cargo/bin/oniux
# Expected output:
# -rwxr-xr-x 1 user user 28M Feb 4 20:59 /home/user/.cargo/bin/oniux
# Add to PATH if not already (add to ~/.bashrc or ~/.zshrc)
export PATH="$HOME/.cargo/bin:$PATH"
Debian's Rust packages are often outdated. Install via rustup instead:
# Install prerequisites
sudo apt update
sudo apt install -y curl build-essential pkg-config git
# Install rustup (Rust installer)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Follow prompts, select default installation
# Activate Rust in current shell
source "$HOME/.cargo/env"
# Verify installation
rustc --version
cargo --version
# Check TUN device
ls -l /dev/net/tun
# If missing, load TUN module (usually not necessary)
sudo modprobe tun
Same command as Arch Linux:
cargo install --locked \
--git https://gitlab.torproject.org/tpo/core/oniux \
--tag v0.7.0 \
oniux
sudo apt install libssl-dev
# Add to ~/.bashrc
echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.bashrc
# Reload shell configuration
source ~/.bashrc
# Verify
which oniux
# Display help (instant, no Tor connection)
oniux --help
# Simple echo test (will take 1-2 minutes on first run)
oniux echo "Tor connection successful!"
# Test with curl to check IP
oniux curl -s https://check.torproject.org/api/ip
# Expected output (JSON):
# {"IsTor":true,"IP":"xxx.xxx.xxx.xxx"}
# Get your Tor exit node IP
oniux curl -s ifconfig.me
# Compare with your real IP (in separate terminal without oniux)
curl -s ifconfig.me
# IPs should be different!
curl -s https://check.torproject.org/api/ip
returns "IsTor":true, Oniux is working correctly!
Solution:
# Check if TUN device exists
ls -l /dev/net/tun
# If missing, create it (rare)
sudo mkdir -p /dev/net
sudo mknod /dev/net/tun c 10 200
sudo chmod 666 /dev/net/tun
# Or load TUN module
sudo modprobe tun
If Oniux takes more than 2 minutes to establish Tor connection, this may indicate network issues or Tor network congestion.
Diagnostic steps:
# Run with logging to see what's happening
oniux -l info curl -s ifconfig.me
# Check if system Tor is interfering (should not conflict, but verify)
systemctl status tor
# Clear Arti cache and try again
rm -rf ~/.cache/arti ~/.local/share/arti
oniux echo "test"
Possible causes:
Oniux creates network namespaces which require specific capabilities. Normally, this works for regular users, but some systems may require additional configuration.
# Check namespace limits
cat /proc/sys/user/max_user_namespaces
# Should output a number > 0 (e.g., 63218)
# If it's 0, namespaces are disabled
# Enable (temporary, requires root)
sudo sysctl -w user.max_user_namespaces=63218
# Enable permanently
echo "user.max_user_namespaces=63218" | sudo tee -a /etc/sysctl.conf
If compilation fails with cryptic Rust errors:
# Update Rust toolchain to latest stable
rustup update stable
# Clean cargo cache
cargo clean
# Retry installation
cargo install --locked \
--git https://gitlab.torproject.org/tpo/core/oniux \
--tag v0.7.0 \
oniux
# Launch Firefox through Tor
oniux firefox
# Or Chromium
oniux chromium
# Connect to SSH server through Tor
oniux ssh user@example.com
# Connect to .onion hidden service
oniux ssh user@examplexxx...onion
# Clone repository anonymously
oniux git clone https://github.com/user/repo.git
# Push to remote through Tor
cd repo
oniux git push origin main
# Launch NeoMutt with Tor isolation
oniux neomutt
# Send email to mail2news gateway over Tor
# (see my article on NeoMutt mail2news configuration)
# Update package database through Tor (Arch)
oniux sudo pacman -Sy
# Note: This is SLOW and not recommended for regular use
# Better to use Tor for specific downloads only
Check Tor network status before critical operations:
# Check Tor network status
oniux curl -s https://status.torproject.org/
Oniux v0.7.0 provides a robust, modern approach to network-level anonymization using Linux namespaces and the Arti Tor implementation. By creating fully isolated network environments, it eliminates many common pitfalls of traditional Tor proxy setups.