Skip to content

Instantly share code, notes, and snippets.

@the-abra
Last active July 11, 2026 22:39
Show Gist options
  • Select an option

  • Save the-abra/4887d5d17aec54997c2248cadf17f6c9 to your computer and use it in GitHub Desktop.

Select an option

Save the-abra/4887d5d17aec54997c2248cadf17f6c9 to your computer and use it in GitHub Desktop.
ISP vs ME: Arch Linux DPI Bypass & Secure DNS (TR 2026 Edition)

ISP vs ME: İnternet Sansürünü ve Takibini Aşma Rehberi (Arch Linux Güncellenmiş Sürüm)

Bu rehber, Arch Linux üzerinde internet servis sağlayıcılarının (ISP) uyguladığı Derin Paket İnceleme (DPI), DNS Zehirlenmesi ve IPv6 sızıntısı gibi gelişmiş sansür yöntemlerini aşarken; Discord ses kanalları (RTC), video akışları ve dinamik bağlantı protokollerinin kesintisiz çalışmasını sağlamak amacıyla optimize edilmiştir.

Temel Kavramlar: Ne İle Savaşıyoruz?

İnternette bir siteye girmeye çalıştığınızda ISP'niz sizi üç farklı noktadan engelleyebilir:

  1. DNS Zehirlenmesi (Sahte Telefon Rehberi): Bilgisayarınız bir sitenin IP adresini bulmak için DNS'e başvurur. ISP'niz araya girerek size sitenin gerçek adresini değil, kendi "Bu site engellenmiştir" sayfasının adresini (örneğin 195.175.254.2) verir. Bunu çözmek için DNS sorgularımızı şifreleyeceğiz (DNSCrypt).

  2. DPI - Derin Paket İnceleme (Zarfı Okuma): DNS'i şifreleseniz bile, siteye bağlanırken gönderdiğiniz verinin (TLS SNI) üzerinde nereye gittiğiniz yazar. ISP bunu okur ve bağlantıyı keser (Connection Reset). Bunu çözmek için veriyi ISP'nin okuyamayacağı kadar küçük ve karmaşık parçalara böleceğiz (ByeDPI).

  3. IPv6 Arka Kapısı: Siz sisteminizi ne kadar kilitlerseniz kilitleyin, modeminiz bilgisayarınıza zorla bir IPv6 DNS adresi atayarak trafiğinizi yine sansürlü kanallara çekebilir. Bunu çözmek için IPv6'yı sistem düzeyinde kapatacağız.

  4. WebRTC ve UDP Engelleri (Ses & Video Sorunları): Discord gibi uygulamalar ses iletişimi için UDP protokolünü ve WebRTC teknolojisini kullanır. Sadece web sayfalarını açmaya odaklanan standart bypass yöntemleri WebRTC bağlantılarını (RTC Connecting) bozabilir. Bu rehberde bu sızıntı ve engelleri de aşacağız.

1. Gerekli Araçların Kurulumu

Sistemimize şifreli DNS motorumuzu ve paket parçalama aracımızı kuruyoruz. Terminali açın ve aşağıdaki komutları girin:

# DNS sorgularını şifrelemek için:
sudo pacman -S dnscrypt-proxy

# DPI duvarını aşmak (Paketleri parçalamak) için:
yay -S byedpi-git

2. IPv6 Arka Kapısını Kapatmak

Türkiye'deki bazı internet sağlayıcıları, kilitlediğiniz DNS ayarlarını aşmak için IPv6 üzerinden sahte DNS basar. Sistemdeki sızıntıları önlemek için IPv6'yı kapatıyoruz.

Aşağıdaki komutla yeni bir ayar dosyası oluşturun:

sudo nano /etc/sysctl.d/99-disable-ipv6.conf

İçerisine şu iki satırı ekleyin:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

Kaydedip çıkın (Nano için: Ctrl+O, Enter, Ctrl+X). Ayarların bilgisayarı yeniden başlatmadan hemen geçerli olması için:

sudo sysctl --system

3. DNSCrypt Ayarları (Hız, Güvenlik ve Önbellek Optimizasyonu)

DNSCrypt'i sadece en hızlı sansürsüz sunucuları kullanması ve çözülen IP'leri hafızada uzun süre tutarak bağlantı gecikmelerini (Discord'un ilk saniyede sesten düşmesini) engellemesi için yapılandıracağız.

Ayar dosyasını açın:

sudo nano /etc/dnscrypt-proxy/dnscrypt-proxy.toml

Dosya içinde aşağıdaki ayarları bulup şu şekilde değiştirin (Başlarında '#' varsa silin):

  1. Sunucu Seçimi: Sadece güvenilir sunucuları kullanması için: server_names = ['cloudflare', 'google']

  2. TCP Zorlaması: ISP'nin DNS paketlerini manipüle etmesini zorlaştırmak için: force_tcp = true

  3. Önbellek (Cache) Ayarları: Sık kullanılan sitelerin ve Discord ses kanallarının anında açılması için TTL sürelerini uzatıyoruz:

cache = true
cache_size = 4096
cache_min_ttl = 2400
cache_max_ttl = 86400

Kaydedip çıkın.

4. İşletim Sistemini Dizginlemek

Arch Linux ve ağ yöneticileri, sürekli olarak sizin yaptığınız DNS ayarlarını ezip ISP'nin ayarlarını geri getirmeye çalışır. Şimdi sistemin kontrolünü tamamen ele alacağız.

4.1. NetworkManager'ı Susturmak

Ağ yöneticisine DNS ayarlarına dokunmamasını söylüyoruz:

sudo bash -c 'echo -e "[main]\ndns=none" > /etc/NetworkManager/conf.d/dns.conf'
sudo systemctl restart NetworkManager

4.2. systemd-resolved Servisini Kapatmak

Bu servis arka planda çalışarak kendi sahte DNS önbelleğini sisteme dayatır. Fişini çekiyoruz:

sudo systemctl disable --now systemd-resolved

4.3. NSSwitch Yönlendirmesini Düzeltmek

Sistem isim çözerken önce eski servislere (systemd-resolved) bakmak isteyecektir. Bu zinciri kırıyoruz.

sudo nano /etc/nsswitch.conf

hosts: ile başlayan satırı bulun, tamamen silin ve yerine tam olarak şunu yazın:

hosts: files mymachines myhostname dns

Kaydedip çıkın.

4.4. Resolv.conf Dosyasına Kilit Vurmak

Tüm internet trafiğine "Sadece bizim kurduğumuz şifreli DNSCrypt'e (127.0.0.1) sor" talimatını vereceğiz ve dosyayı kimsenin değiştiremeyeceği şekilde kilitleyeceğiz.

# 1. Eski kilitleri ve dosyaları temizle
sudo chattr -i /etc/resolv.conf 2>/dev/null
sudo rm -f /etc/resolv.conf

# 2. Temiz dosyayı oluştur
echo -e "nameserver 127.0.0.1\noptions edns0" | sudo tee /etc/resolv.conf

# 3. Dosyayı kilitle (Değiştirilemez yap)
sudo chattr +i /etc/resolv.conf

5. ByeDPI'ı Agresif ve Hedef Odaklı Yapılandırmak

Tüm paketleri parçalarsak bankacılık sistemleri, ProtonMail veya v0.app gibi yüksek güvenlikli siteler (WAF) bu parçalanmış paketleri "güvenlik tehdidi" sanıp reddeder (Secure connection failed hatası).

Bu yüzden ByeDPI'a "Sadece yasaklı sitelerde paketleri parçala, diğerlerine normal bağlan" talimatını vereceğiz ve tüm Discord ses/altyapı sunucularını bu kapsama dahil edeceğiz.

5.1. Yasaklı Siteler Listesi Oluşturmak

Terminalde şu komutla bir metin belgesi oluşturun:

sudo nano /etc/banned-hosts.txt

İçerisine sansürlü siteleri ve Discord'un ses kanalları için kullandığı dinamik alt alan adlarını (wildcard) alt alta ekleyin:

discord.com
discord.gg
discordapp.com
discordapp.net
discord.media
gateway.discord.gg
youtube.com
googlevideo.com
youtu.be

(Başına nokta . koymak, o adrese ait tüm dinamik alt sunucuları —örneğin ses kanalı gateway adreslerini— kapsar). Kaydedip çıkın.

5.2. Servis Dosyasını Güncellemek

ByeDPI servis dosyasını açın:

sudo nano /usr/lib/systemd/system/byedpi.service

İçindeki ExecStart= ile başlayan satırı tamamen silin ve hazırladığımız listeyi de ( -H parametresi ile) ekleyerek şu şekilde yapıştırın:

ExecStart=/usr/bin/ciadpi -i 127.0.0.1 -p 1080 -H /etc/banned-hosts.txt --tlsrec 1+s --disorder 1

Not: Eğer ses kanallarına bağlanırken hala nadiren gecikme yaşıyorsanız, --tlsrec 1+s --disorder 1 parametreleri yerine daha hafif ve stabil olan --split 2 parametresini deneyebilirsiniz.

Kaydedip çıkın.

6. Servisleri Başlatmak

sudo systemctl daemon-reload
sudo systemctl enable --now dnscrypt-proxy
sudo systemctl enable --now byedpi

7. Tarayıcı (Firefox) Entegrasyonu ve Sızıntı Önleme

Tarayıcımızın bu güvenli tüneli sızıntı yapmadan ve ses servislerini (WebRTC) bozmadan kullanabilmesi için optimize edilmesi gerekir.

7.1. Proxy Ayarları

  1. Firefox'ta Ayarlar > Ağ Ayarları (Network Settings) menüsüne girin.

  2. Vekil sunucuyu elle ayarla (Manual proxy configuration) seçeneğini işaretleyin.

  3. SOCKS Sunucusu: kısmına 127.0.0.1, Port: kısmına 1080 yazın.

  4. SOCKS v5 seçeneğini işaretleyin.

  5. Alt kısımdaki "SOCKS v5 kullanırken DNS'i vekil sunucu üzerinden gönder" kutucuğunu kesinlikle İŞARETLEYİN.

  6. En alttaki "DNS üzerinden HTTPS (DoH)" seçeneğini KAPATIN.

7.2. Gelişmiş Gizlilik, Zaman Aşımı ve WebRTC Ayarları

Discord ses kanallarının çalışması için WebRTC açık olmalıdır ancak güvenliğimizi korumak için IP sızıntı önlemlerini esnetmeliyiz. Ayrıca proxy gecikmelerine karşı zaman aşımı sürelerini iyileştiriyoruz:

  1. Firefox adres çubuğuna about:config yazın ve uyarıyı kabul edin.

  2. media.peerconnection.enabled değerini aratıp true yapın. (Bu ayar false olursa Discord ses kanallarına asla bağlanamazsınız).

  3. media.peerconnection.ice.default_address_only değerini aratıp true yapın. (Bu sayede WebRTC açık kalır ancak gerçek yerel IP adresinizin sızması önlenir).

  4. network.dns.disableIPv6 değerini aratıp true yapın.

  5. network.dns.timeout değerini aratıp 5 yapın. (Yavaş DNS çözümlerinde tarayıcının erkenden pes etmesini önler).

  6. network.proxy.failover_timeout değerini aratıp 5 yapın.

8. Discord Uygulama İçi Ayarları (Kritik)

Discord, ses paketlerini ağda öncelikli kılmak için paketlerin üzerine "QoS (Hizmet Kalitesi)" etiketleri basar. Yerel SOCKS5 proxy (ByeDPI) bu etiketlenmiş paketleri bazen yönlendiremez ve ilk bağlantı denemelerinde paket kaybı (RTC Disconnect) yaşanır.

  1. Tarayıcıda Discord'u açın.

  2. Kullanıcı Ayarları (Dişli çark) > Ses ve Görüntü (Voice & Video) menüsüne gidin.

  3. Aşağı kaydırarak Hizmet Kalitesi (Quality of Service) başlığını bulun.

  4. "Yüksek Paket Önceliği Hizmet Kalitesini Etkinleştir" seçeneğini KAPATIN.

9. Sistemin Doğrulanması (Test)

9.1. DNS Testi:

ping -c 2 discord.com

Bu komut sonucunda 195.175.254.2 gibi sahte bir sansür adresi DEĞİL, 162.159... veya 104.16... ile başlayan gerçek adresleri görmelisiniz.

9.2. DPI Testi:

curl -x socks5h://127.0.0.1:1080 -I [https://discord.com](https://discord.com)

Bu komutun sonucunda üst sıralarda HTTP/2 200 çıktısını görüyorsanız, paketleriniz başarılı bir şekilde parçalanıp hedefe ulaşıyor demektir. Tarayıcınızı kapatıp açtıktan sonra artık ses kanallarına ilk denemede sorunsuzca bağlanabilirsiniz.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment