Kendi Tünelleme Platformumu İnşa Ettim

Dizüstü bilgisayarımda bir web uygulamasını cilalamak için üç gün harcadım. Mükemmel görünüyordu. Sonra telefonumda test etmeyi denedim. Her şey bozuldu.

İkinci bir cihaza ihtiyaç duyduğunuzda yerel geliştirme süreci karmaşıklaşır. Güvenlik duvarları ve HTTPS sertifika sorunları nedeniyle yerel bir IP'yi paylaşmak başarısız olur.

Ngrok'u denedim. Çalışıyor ancak ücretsiz katman bağlantıları koparıyor. URL'ler de berbat görünüyor. a1b2-34-56.ngrok-free.app gibi rastgele dizeler, müşterilerle veya ekiplerle paylaşmak için uygun değil.

Temiz ve okunabilir URL'lere sahip bir tünel istiyordum. Bu yüzden kendiminkini inşa ettim.

Özel bir tüneli bir URL kısaltıcı ile birleştirdim. Akıllı slug'lar oluşturmak için yapay zeka ekledim ve yerleşik güvenlik korumaları inşa ettim.

Teknoloji yığını: • Tünel / Proxy: Django Channels, Daphne, WebSockets, Python & Node.js CLI • Frontend: Next.js, TailwindCSS, Shadcn/UI • Backend: Django 5, Graphene GraphQL • Veritabanı: PostgreSQL (Neon) • Kimlik Doğrulama: JWT, bcrypt • Yapay Zeka: Google Gemini • Güvenlik: MaxMind GeoLite2, Google Safe Browsing API

Nasıl çalışır:

  • Çift yönlü WebSocket tünelleme. Yerel bir CLI ajanı, HTTP isteklerini iletmek için bir Django sunucusuna bağlanır.
  • Race-condition (yarış durumu) koruması. Analitiklerin doğru kalmasını sağlamak için atomik güncellemeler amacıyla Django F() ifadelerini kullanıyorum.
  • Bloklamayan telemetri. Gecikmeyi düşük tutmak için konum ve işletim sistemi sorguları arka plan iş parçacıklarında (background threads) çalışır.
  • Yapay zeka slug'ları. Gemini, rastgele metin yerine anlamlı bir slug oluşturmak için hedef URL'yi okur.
  • Proaktif güvenlik. Herhangi bir bağlantıyı kaydetmeden önce özel IP aralıklarını engelliyor ve Google Safe Browsing kontrollerini çalıştırıyorum.

Backend ve tünelleme mantığı kararlı. Frontend hala geliştirme aşamasında.

Şu anda IITM'de sınavlara hazırlanıyorum. Çalışmalarıma odaklanmak için yeni özellikleri duraklatıyorum. Kodun öylece durmasına izin vermek yerine, inceleme için açıyorum.

Birkaç konuda geri bildiriminize ihtiyacım var:

  • Gecikme (Latency): Yüksek ölçekte yönlendirmeleri 10ms'nin altında nasıl tutabilirim?
  • Güvenlik: SSRF hafifletmesini (mitigation) güçlendirmenin en iyi yolu nedir?
  • Ölçeklenebilirlik: Uzun süreli tüneller için WebSockets mi yoksa TCP mi kullanmalıyım?
  • Gözlemlenebilirlik (Observability): Tünel sağlığı için hangi metrikleri takip etmeliyim?

Proxy worker'lar veya sistem tasarımı konusunda deneyiminiz varsa lütfen düşüncelerinizi paylaşın.

Tam sistem tasarımı dökümü: [Link] Kod tabanı: [Link]

Yerel geliştirme sırasında mobil izinlerini test etmeyi nasıl hallediyorsunuz? Üçüncü taraf tüneller mi yoksa özel araçlar mı kullanıyorsunuz?

Kaynak: https://dev.to/zallu/my-ngrok-urls-got-so-ugly-i-built-my-own-tunneling-platform-instead-59d