Netrix, Android üzerinde DPI/SNI tabanlı filtreleme davranışlarını incelemek ve farklı paket işleme stratejilerinin ağ davranışını nasıl etkilediğini gözlemlemek için geliştirdiğim açık kaynaklı bir ağ aracıdır.
Projeyi bir “tek tıkla çözüm” anlatımı olarak değil, Android ağ katmanı, TLS bağlantı süreci, paket parçalama fikri ve kullanıcı dostu sistem aracı tasarımı üzerinden bir öğrenme alanı olarak konumlandırıyorum.
Kısa Özet
- Platform: Android 7.0+
- Dil: Kotlin
- Arayüz: Jetpack Compose, Material Design 3
- Native taraf: C, NFQUEUE yaklaşımı
- Modlar: VPN modu ve root/NFQUEUE modu
- Lisans: GPL-3.0
- Kaynak kod: GitHub
Neden Yaptım?
Netrix’i geliştirirken amacım, DPI sistemlerinin ağ trafiğini nasıl yorumladığını daha iyi anlamaktı. Özellikle HTTPS bağlantılarında SNI alanının neden önemli olduğunu, Android tarafında VpnService ile ağ trafiğinin nasıl ele alınabildiğini ve root gerektiren daha düşük seviyeli yaklaşımların ne gibi farklar getirdiğini deneysel olarak görmek istedim.
Teknik Notlar
Uygulama tarafında Kotlin ve Jetpack Compose kullandım. Arayüzde ayarlar, loglar ve mod seçimleri gibi parçaları sade tutmaya çalıştım. Ağ tarafında ise VPN tabanlı root gerektirmeyen yaklaşım ile root/NFQUEUE tabanlı daha düşük seviyeli yaklaşımı ayrı ayrı düşündüm.
Bu proje bana Android’de sistem izinleri, VpnService, TCP/TLS davranışları, native kod entegrasyonu ve kullanıcıya karmaşık bir teknik konuyu okunabilir bir arayüzle sunma konusunda iyi bir pratik alanı verdi.
Blog Yazısı
Bu proje hakkında daha detaylı teknik notları şu yazıda topluyorum:
Netrix: Android Üzerinde DPI ve SNI Filtrelemeyi Anlamak
Sonraki Adımlar
- Ekran görüntülerini proje sayfasına eklemek
- Release notlarını daha okunur hale getirmek
- Teknik mimari diyagramını blog yazısına taşımak
- VPN modu ve root modu farklarını daha sade bir tabloyla anlatmak