linux dpi discord cachyos archlinux

Linux'ta Discord Engelini Aşmak: Sorunlu Yöntemlerden Kendi DPI Çözümüme Giden Yol

· 3 min read
Linux'ta Discord Engelini Aşmak: Sorunlu Yöntemlerden Kendi DPI Çözümüme Giden Yol

Linux’ta Discord Engelini Aşmak: Sorunlu Yöntemlerden Kendi DPI Çözümüme Giden Yol

Türkiye’de Discord’a getirilen erişim engeli sonrası, oyuncular ve geliştiriciler olarak kendimizi VPN’lerin yüksek ping değerlerine ve yavaş bağlantılara mahkum edilmiş halde bulduk. Windows tarafında GoodByeDPI gibi araçlar hızlıca yaygınlaşsa da, iş Linux (özellikle Arch/CachyOS) tarafına gelince durum pek de iç açıcı değildi.

Mevcut GitHub scriptlerini, ByeDPI türevlerini ve karmaşık iptables kurallarını denedim. Ancak çoğu ya tüm sistem trafiğini yönlendirip interneti yavaşlatıyor, ya bilgisayarı her yeniden başlattığımda bozuluyor ya da güncellemelerle birlikte sessizce çöküyordu.

“Neden sadece Discord’u etkileyen, arka planda kendi kendine çalışan ve asla çökmeyen bir sistem kurmuyorum?” diyerek kolları sıvadım. İşte sıfırdan geliştirdiğim Python tabanlı DPI Bypass aracımın geliştirme günlüğü.

DPI ve DNS Zehirlenmesi: Düşmanı Tanımak

Kodlamaya geçmeden önce engelin nasıl çalıştığını analiz etmem gerekiyordu. İSS’ler (İnternet Servis Sağlayıcıları) temelde iki silah kullanıyordu:

  1. DNS Zehirlenmesi: Discord’un IP adresini sorduğunuzda size sahte veya boş bir yanıt dönülmesi.
  2. Derin Paket İnceleme (DPI): Tıpkı bir kargocunun paketin içine bakması gibi, İSS’lerin giden veri paketinin içindeki “SNI” (Sunucu Adı Göstergesi) kısmında discord.com yazısını görüp bağlantıyı koparması.

Çözüm belliydi: DNS sorgularını şifrelemek ve giden paketleri İSS’nin okuyamayacağı kadar küçük parçalara bölmek. Bunun için motor olarak SpoofDPI’ı seçtim ve Python ile bunu tam otomatik bir sisteme entegre etmeye başladım.


Geliştirme Aşamaları ve Karşılaşılan Sorunlar

Aşama 1: Go Parametreleri ve Çöken Servisler

İlk etapta SpoofDPI’ı bir systemd servisi olarak arka plana gömdüm. Ancak servis sürekli çöküyordu. Logları (Journalctl) incelediğimde karşılaştığım hata şuydu: flag provided but not defined: -port.

Çözüm: Sorunun, SpoofDPI’ın yeni versiyonlarında (v0.10+) parametre yapısının tamamen değişmesinden kaynaklandığını fark ettim. Eski -port mantığı yerine --listen-addr yapısına geçilmişti. Scriptin içine, çalıştırılabilir dosyayı indirirken doğrudan en modern parametreleri zorlayan katı bir yapı kurdum.

Aşama 2: “Connection Refused” (DNS Duvarına Çarpış)

Parametreleri düzelttikten sonra proxy çalıştı ama bu sefer de loglara failed to resolve 'discord.com' ... connection refused hatası düşmeye başladı. İSS’ler UDP 53 portu üzerinden yapılan standart DNS sorgularını doğrudan engelliyordu.

Çözüm: DNS sorgularını standart yoldan çıkarmam gerekiyordu. Sisteme DoH (DNS-over-HTTPS) desteğini ekledim (--dns-mode=https). Artık DNS sorgularım normal bir web trafiği gibi şifreli gidiyor ve İSS engeline takılmıyordu.

Aşama 3: “Request Blocked” Gizemi ve Doğru Parçalama Modu

DNS’i aştık, bağlantıyı kurduk ama bu sefer de Discord’un kendi koruma sistemi (veya Cloudflare) bizi engelledi. Loglarda sürekli error="request blocked" uyarısı görüyordum. Fazla agresif bir paket parçalama yöntemi (chunk-size=1 veya disorder) kullandığım için Discord bizi bir saldırgan sanıyordu.

Çözüm: Birçok parçalama stratejisini denedim. SNI paketlerini böldüm, işe yaramadı. Sonunda en ideal yöntemi buldum: --https-split-mode=random. Bu mod, paketleri DPI cihazlarını şaşırtacak ama Cloudflare’i sinirlendirmeyecek kadar dengeli bir rastgelelikle böldü. Ve bingo! Discord sorunsuzca açıldı.


Nihai Çözüm Nasıl Çalışıyor?

Geliştirdiğim bu Python scripti artık bir tıkla çalışan, “tak-çalıştır” bir otomasyona dönüştü. Araç şu an tam olarak şunları yapıyor:

  1. Akıllı Bağımlılık Kontrolü: Script ilk açıldığında curl, tk, psmisc gibi gerekli Linux paketlerini tarar, eksik varsa sizden şifre isteyip kendi kurar. Format sonrası bile uğraştırmaz.
  2. İzole Yönlendirme: Tüm sistemi VPN gibi tünellemez. Sistemin içindeki Discord kısayol dosyalarını (.desktop) bulur ve sadece Discord’un bu proxy üzerinden çıkmasını sağlar.
  3. Kalıcılık: Kurulum bittiğinde arka planda bir systemd servisi bırakır. Bilgisayarı her açtığınızda arka planda sessizce başlar.

Sonuç

Eğer Linux (özellikle CachyOS veya Arch tabanlı) kullanıyorsanız ve Discord için çalışan stabil bir yöntem bulamadıysanız, tekerleği yeniden icat etmenize gerek yok. Yaşadığım tüm bu “deneme-yanılma” süreçlerinin sonunda en stabil ayarları buldum.

Eğer denemek isterseniz aşağıdaki link üzerinden deneyebilirsiniz; github.com/frkntlr/discord-dpi-bypass-linux