Skip to main content

Overview

TurkeyDPI includes four pre-configured presets optimized for different Turkish ISPs. Each preset uses specific fragmentation strategies and timing parameters to bypass DPI inspection.
Quick recommendation: Start with the aggressive preset. It works for most ISPs and situations.

Available Presets

The most comprehensive bypass configuration. Works with all Turkish ISPs.
turkeydpi bypass --preset aggressive
Technical Details:
ParameterValueDescription
fragment_snitrueFragment TLS ClientHello SNI extension
tls_split_pos0Split at SNI midpoint (dynamic)
fragment_http_hosttrueFragment HTTP Host header
http_split_pos1Split 1 byte into Host header
send_fake_packetsfalseDon’t send decoy packets
fake_packet_ttl3TTL for decoy packets (if enabled)
fragment_delay_us1000010ms delay between fragments
use_tcp_segmentationtrueForce TCP segmentation
min_segment_size1Minimum TCP segment size
max_segment_size5Maximum 5 bytes per segment
When to use:
  • First time using TurkeyDPI
  • Multiple ISPs or unknown ISP
  • Maximum compatibility needed
  • Other presets don’t work
Trade-offs:
  • Adds 10ms latency per fragment
  • More CPU usage due to small segments
  • Higher packet overhead

How Presets Work

TLS Fragmentation

All presets fragment TLS ClientHello packets. The key difference is where the split occurs:
Original: [TLS_Header][ClientHello][SNI:"discord.com"][Extensions]

Fragmented:
  [TLS_Hea]
  [der][Cli]
  [entHell]
  [o][SNI:]
  ["discor]
  [d.com"]
  [Extensi]
  [ons]

HTTP Fragmentation

Similarly, HTTP Host headers are fragmented:
GET / HTTP/1.1
Host: d|iscord.com
      ↑ split here

Choosing the Right Preset

1

Check your ISP

Find out which ISP you’re using:
  • Türk Telekom → use turk-telekom
  • Vodafone Turkey → use vodafone
  • Superonline → use superonline
  • Other/Unknown → use aggressive
2

Test the preset

Start TurkeyDPI with your chosen preset:
turkeydpi bypass --preset <your-isp>
3

Verify it works

Try accessing a blocked site. If it doesn’t work:
  1. Try the aggressive preset
  2. Enable verbose logging: turkeydpi bypass --preset aggressive -v
  3. Check the troubleshooting section below

Preset Comparison

PresetLatencyCPU UsageCompatibilityBest For
AggressiveHigh (10ms)HighUniversalUnknown ISP, maximum compatibility
Turk TelekomNoneLowTT-specificTürk Telekom users
VodafoneVery Low (0.1ms)MediumVF-specificVodafone Turkey users
SuperonlineNoneLowSO-specificSuperonline users
Performance tip: ISP-specific presets are faster than aggressive. If you know your ISP, use its preset for better performance.

Advanced: Creating Custom Presets

If the built-in presets don’t work, you can create custom configurations. See the Configuration guide for details. Example custom config for testing:
[global]
enabled = true
enable_fragmentation = true

[[rules]]
name = "custom-https"
enabled = true
priority = 100
transforms = ["fragment"]

[rules.match_criteria]
dst_ports = [443]
protocols = ["tcp"]

[transforms.fragment]
min_size = 1
max_size = 15  # Adjust this value
randomize = true
Then run:
turkeydpi run --proxy --config custom.toml

Troubleshooting Presets

Preset not working

  1. Verify the preset name:
    # Valid presets:
    turkeydpi bypass --preset aggressive
    turkeydpi bypass --preset turk-telekom
    turkeydpi bypass --preset vodafone
    turkeydpi bypass --preset superonline
    
  2. Try aggressive preset:
    turkeydpi bypass --preset aggressive
    
  3. Enable verbose logging:
    turkeydpi bypass --preset aggressive -v
    
    Look for errors in the output.

Different ISP than expected

Some users are on virtual ISPs that use another ISP’s infrastructure:
  • TTNet, TTNET → Use turk-telekom
  • Vodafone Red → Use vodafone
  • Superbox → Use superonline
If unsure, use aggressive.

Preset causes high latency

The aggressive preset adds 10ms of artificial delay. To reduce latency:
  1. Switch to ISP-specific preset:
    turkeydpi bypass --preset turk-telekom  # 0ms delay
    
  2. Create custom config without delays: Edit config.toml and set:
    [transforms.jitter]
    min_ms = 0
    max_ms = 0
    

Next Steps

Configuration

Learn how to create custom bypass configurations

Basic Usage

Return to basic CLI usage guide

Build docs developers (and LLMs) love