English | فارسی
Slipstream DNS tunnel setup with automatic DNS server scanning via dnscan.
bash <(curl -Ls https://raw.githubusercontent.com/nightowlnerd/slipstream-tunnel/main/install.sh) serverFollow the prompts to configure Cloudflare DNS.
bash <(curl -Ls https://raw.githubusercontent.com/nightowlnerd/slipstream-tunnel/main/install.sh) clientAfter install, slipstream-tunnel command is available globally.
If network is blocked, download binaries first then provide paths:
slipstream-tunnel client --dnscan ./dnscan.tar.gz --slipstream ./slipstream-client- VPS with root access
- Domain with Cloudflare DNS
- 3x-ui panel installed (or any V2ray panel)
- Linux machine with root access
- For offline:
Uses a fork of slipstream-rust with fixes for CPU spin and connection stall bugs. The upstream repo is no longer actively maintained.
slipstream-tunnel server # Setup server
slipstream-tunnel client # Setup client
slipstream-tunnel status # Show current status
slipstream-tunnel logs # View logs (add -f to follow)
slipstream-tunnel health # Check DNS and switch if slow
slipstream-tunnel remove # Remove everything| Option | Description |
|---|---|
--domain |
Tunnel domain (e.g., t.example.com) |
--port |
Server: target port / Client: listen port |
--dns-file |
Custom DNS server list (skips subnet scan) |
--dnscan |
Path to dnscan tarball (offline mode) |
--slipstream |
Path to slipstream binary (offline mode) |
- Guides Cloudflare DNS configuration (A + NS records)
- Verifies DNS with
dig - Generates self-signed certificate
- Downloads and installs slipstream-server binary
- Creates and starts systemd service
- Downloads dnscan and slipstream binaries (cached for reuse)
- Prompts for scan settings (country, mode, workers, timeout)
- Scans and verifies DNS servers with actual tunnel connection
- Picks fastest verified server and starts slipstream-client
- Sets up hourly health check
- Runs every hour via systemd timer
- Tests current DNS server latency
- If latency > 1000ms, switches to better server
- Logs to
~/.tunnel/health.log
~/.tunnel/
├── config # Current configuration
├── servers.txt # Working DNS servers from scan
├── health.log # Health check history
└── dnscan/ # dnscan binary and data
After running the script on both server and client:
-
Open x-ui panel on your server (3x-ui, x-ui, etc.)
-
Create inbound listening on slipstream server port
- Port:
2053(or your--portvalue) - Protocol: VLESS/VMess/etc.
- Port:
-
Add external proxy to the inbound
- Host: IP address of your Iran client machine
- Port:
7000(or your client--portvalue)
-
Export config and use in your V2Ray app
Server: "DNS not configured"
- Check Cloudflare DNS records
- Wait 5 minutes for DNS propagation
- Verify with:
dig NS t.example.com
Client: "No DNS servers passed verification"
- Is the server running?
systemctl status slipstream-server - Is port 53 open on server?
- Check server logs:
journalctl -u slipstream-server -f
Client: "Cannot download"
- Network is blocked
- Use offline mode with
--dnscanand--slipstreamoptions - Get binaries from: