Docs GitHub
-- --
Theme:
Language:
EN فا

DNS Tunneling#

bgscan tests whether DNS resolvers can carry a tunnel connection. Six protocols are supported, each with its own configuration format stored as a separate TOML file under assets/dns-tunneling/.

Navigate to Main Menu → DNS Tunneling to manage tunnel configurations.

Protocols#

ProtocolDescriptionRequires
DNSTTDNS tunnel using the vaydns library with DNSTT-compatible framingDomain, public key
VayDNSNative vaydns protocol with tunable QNAME, MTU, and record typeDomain, public key
SlipstreamExternal slipstream-client binary based tunnelDomain, binary on PATH
MasterDNSIn-process tunnel with configurable encryption and MTU discoveryDomain, encryption key
StormDNSIn-process tunnel with configurable encryption, MTU discovery, and query type selectionDomain, encryption key
TheFeedEncrypted feed tunnel over UDP, TCP, or DNS-over-TLSDomain, passphrase

DNSTT, VayDNS, MasterDNS, StormDNS, and TheFeed run the tunnel in-process using vendored libraries. Slipstream shells out to an external binary and communicates through a local SOCKS5 port.

DNSTT, VayDNS, and Slipstream support optional SOCKS5 or SSH proxy routing with password or key authentication. MasterDNS, StormDNS, and TheFeed configs carry no proxy settings.

The scan flow runs all six configurations. Pick any saved tunnel config and the matching stage is built automatically, with an optional resolver pre-scan ahead of it.

How It Works#

A DNS tunnel scan proceeds in two stages when check_dns_resolver is enabled:

  1. Resolver pre-scan — each target IP is tested as a DNS resolver. Only resolvers that pass basic DNS queries (and the DPI check when enabled) proceed to the tunnel stage.
  2. Tunnel probe — each surviving resolver is tested for its ability to carry a tunnel connection. The probe brings up the tunnel through the selected protocol and validates that traffic passes.

When adaptive_resolver is enabled, the resolver pre-scan automatically uses the same transport, port, and domain as the tunnel configuration, ensuring the resolver test matches the tunnel’s actual path.

Reported latency measures the tunnel after it is up, excluding startup cost.

Managing Configurations#

The DNS Tunneling table at Main Menu → DNS Tunneling lists all saved tunnel configurations:

ColumnDescription
NameConfiguration name
ProtocolDNSTT, VayDNS, Slipstream, MasterDNS, StormDNS, or TheFeed
AuthAuthentication method (none, password, key)
Created TimeFile creation timestamp
KeyAction
aAdd a new configuration (opens protocol selector)
rRename the selected configuration
xDelete the selected configuration
EnterEdit or start a scan with the selected configuration

Configuration Storage#

Tunnel configs are stored as TOML files:

assets/dns-tunneling/
├── dnstt/
│   └── <config-name>.toml
├── vaydns/
│   └── <config-name>.toml
├── slipstream/
│   └── <config-name>.toml
├── masterdns/
│   └── <config-name>.toml
├── stormdns/
│   └── <config-name>.toml
└── thefeed/
    └── <config-name>.toml

Platform Defaults#

Worker counts and timeouts are automatically adjusted based on the detected platform and resource tier:

SettingDesktop LowDesktop MidDesktop High
DNS Tunnel Workers81632
DNS Tunnel Timeout10s10s10s
DNS Resolver Workers30150300
SettingAndroid LowAndroid MidAndroid High
DNS Tunnel Workers3612
DNS Tunnel Timeout10s10s10s
DNS Resolver Workers1560100
SettingServer LowServer MidServer High
DNS Tunnel Workers122464
DNS Tunnel Timeout10s10s8s
DNS Resolver Workers1004001000