2 puan yazan GN⁺ 2025-11-29 | 1 yorum | WhatsApp'ta paylaş
  • Imgur'un Birleşik Krallık kullanıcı erişimini engellemesi nedeniyle Reddit, forum, doküman gibi yerlerdeki görüntü bağlantıları tümüyle “unavailable” olarak göründü
  • Kişisel VPN yerine, tüm cihazlarda Imgur erişimini mümkün kılmak için ağ düzeyi otomatik geçiş mimarisi kuruldu
  • Pi-hole, Traefik, Gluetun, Nginx, NixOS kullanılarak DNS engelini aşan ve trafiği VPN üzerinden ileten bir yapı tasarlandı
  • TLS pass-through ve Docker ağ paylaşımı ile şifreli trafiği bozmayıp hız kaybını en aza indirmek için doğrudan iletim sağlandı
  • Sonuç olarak tüm cihazlarda ek ayar gerekmeden Imgur görsellerine erişim mümkün oldu, hız kaybı olmadan şeffaf bir ağ düzeyi bölgesel engel kaldırma mimarisi hayata geçirildi

Imgur engellemesi ve erişim sorunları

  • Imgur'un Birleşik Krallık kullanıcı erişimini engellemesiyle, Reddit·forum·doküman gibi çeşitli web sayfalarındaki görsel bağlantıların gösterilemediği bir durum oluştu
    • Minecraft shader önizleme görselleri tamamen kayboldu, hangi shader olduğu belirlenemedi
    • Eski gönderilerde veya README dosyalarında bile Imgur bağlantıları kalmış olması nedeniyle erişim engeli sürdü

VPN yerine ağ düzeyi çözüme geçiş

  • Genel çözüm VPN kullanmak olsa da, 2.5 Gbps yüksek hızlı internette tüm trafiği VPN ile geçirdiğinizde hız düşer
  • Her cihaza VPN kurulup bağlanması gereken yönetim karmaşıklığı da mevcut
  • Tüm cihazlarda otomatik çalışan, istemci tarafında yapılandırma gerektirmeyen bir ağ düzeyi çözüm hedeflendi

Ağ düzeyi yapı tasarımı

  • Mevcut home lab ortamında zaten Traefik (ters proxy) , Pi-hole (DNS) , NixOS (bildirimsel yapılandırma) kullanılıyordu
  • DNS katmanında i.imgur.com istekleri yakalanıp VPN bağlantılı konteynere (Gluetun) iletilir
    • Pi-hole, Traefik'in IP adresini döndürür
    • Traefik, SNI host adını doğrulayarak Gluetun'a yönlendirir
    • Gluetun, isteği VPN üzerinden iletir
    • Gluetun içindeki Nginx gerçek Imgur sunucusuna proxy yapar
    • Görsel, tünel üzerinden geri döner

Nginx ve Gluetun yapılandırması

  • Gluetun yalnızca VPN bağlantısı sunduğu için, VPN ağı içinde proxy görevi görecek bir Nginx gereklidir
  • Nginx, TCP stream modu ile ayarlandı; SNI başlığını okuyup trafiği i.imgur.com:443'e iletir
    • TLS handshake uçtan uca gerçekleştiğinden Nginx, şifrelenmemiş veri görmez
  • Docker Compose'da iki konteyner (Gluetun ve Nginx) çalıştırılır
    • network_mode: "service:gluetun" ayarıyla Nginx, Gluetun'ın ağ yığınıyla paylaşım yapar
    • Tüm Nginx trafiği otomatik olarak VPN tünelini geçer

Traefik ve NixOS entegrasyonu

  • Traefik, i.imgur.com isteklerini Gluetun'a iletmek için TCP yönlendirme ve TLS pass-through kullanır
    • TLS sonlandırılmadan yalnızca SNI başlığı doğrulanır
  • NixOS'ta systemd servisi ile Docker Compose yığını çalıştırılır
    • Agenix ile VPN kimlik bilgileri şifreli saklanır
    • Tüm dotfiles deposu herkese açık kalırken bile gizli bilgiler korunur

Sonuç ve performans

  • Ağ içindeki tüm cihazlar (telefon, dizüstü bilgisayar, misafir cihazlar dahil) ekstra ayar olmadan Imgur görsellerine erişebilir
  • Pi-hole DNS'i yakalar, Traefik yönlendirir, Gluetun VPN tünelleme yapar
  • Görsel yükleme gecikmesi neredeyse yoktur; yalnızca Imgur trafiği VPN'den geçerken normal trafik hızı korunur
  • Bakımı kolay ve home lab ortamında otomatikleştirilmiş bir coğrafi engel kaldırma yapısı tamamlanmış oldu
  • Minecraft shader gibi Imgur tabanlı içerikler tekrar normal şekilde görüntülenebilir

1 yorum

 
GN⁺ 2025-11-29
Hacker News yorumu
  • Ben kendi ağımda yalnızca bir router'ın VPN'i tanımasını sağlayacak şekilde ayarladım
    Linux yüklü ucuz, fansız bir kutuda birden fazla port var ve systemd-networkd ile WireGuard arayüzünü sadece bir kez yapılandırdım
    Bu sayede yalnızca belirli trafiği VPN üzerinden yönlendirebiliyor ya da VPN'e özel ayrı bir SSID/VLAN tutabiliyorum
    Yalnız alan adı tabanlı yönlendirme zor olabiliyor; gerekirse router'a yerel DNS override yapabilen bir proxy eklemeyi düşünüyorum
    • Ayrı bir tarayıcı açmadan, FoxyProxy eklentisiyle URL desenine göre proxy atarsan bu iş kolayca çözülür
    • Ben de RPi üzerinde x-ray/singbox tabanlı merkezi bir VPN splitter kurdum; buna Tailscale ekleyince her yerden erişilebilir oldu
      Kural tabanlı coğrafi bölünmüş yönlendirme de desteklediği için kullanışlı
    • O fansız Linux kutusunun ürün adını merak ettim
  • “Geo-Unblocked” başlığını görünce Birleşik Krallık dışı IP bloklarını doğrudan yapılandıran bir şey sanmıştım, ama aslında sadece trafiğin bir kısmını VPN'e yönlendirmekten bahsediyormuş
    • Doğrudan ISP gibi davranırsan istediğin her yerde olabilirsin
      İlgili yazı da şu blogda: bu blog
    • Ama WAN adresini değiştirmek, ağ içindeki IP şemasını değiştirmeye benziyor; bu yüzden pratikte çalışmayacak gibi görünüyor
  • “Bazen sadece Imgur görsellerine bakmak için gerçekten bu kadar uğraşmaya değer mi?” diye düşündüm, ama son dönemde bir şeyler araştırırken Imgur bağımlılığının epey yüksek olduğunu fark ettim
    Ekran görüntüleri görünmeyince sinir bozucu oluyordu; sanırım bu yazı son itici güç olacak
    • Şu anda abartılı görünebilir, ama hükümetler giderek daha fazla içeriğe erişimi kısıtlamaya çalışıyor; bu yüzden önceden hazırlanmanın akıllıca olduğunu düşünüyorum
    • Imgur beklediğimden çok daha fazla yerde kullanılıyor. Örneğin Core Devices'ın (Pebble'ın devamı olan ekip) sitesindeki görseller de Imgur'da barınıyor
      Bu tür engeller kolay aşılabiliyor, ama Imgur ortadan kalkarsa birçok site bozulur
    • Sansür Imgur'da durmayacak
      İnsanlar sansürü aşsa bile trafik kaybı büyük değilse, yurt dışındaki sunucuların otoriter düzenlemelere boyun eğmek zorunda olmaması önemli
      AB de benzer bir yöne gidiyor gibi görünüyor; bu yüzden sansürü reddedebilen araçların yaygınlaşması gerekiyor
    • Benim için de aşması beklediğimden daha zordu; ama Veepn ücretsiz sürümünü Singapur'a ayarlayınca yavaş da olsa bir ölçüde çalıştı
  • Bu yöntem Netflix veya Spotify'ın “aynı hane” kısıtlamalarını aşmak için de kullanılabilir gibi görünüyor
    Raspberry Pi ya da mini PC üzerinde PiHole ile birlikte kurarsan, aile evinin trafiğini benim IP'm üzerinden tünelleyebilirsin
  • UniFi'da da policy-based routing (PBR) ile bunu kolayca yapmak mümkün
    Mobil uygulamada WireGuard yapılandırma dosyasını ekleyip, policy engine içinde yalnızca belirli alan adlarını VPN arayüzüne yönlendirecek şekilde ayarlaman yeterli
    • Dezavantajı, IPv6 etkinse VPN'i bypass etmesi
      Ben geçici çözüm olarak IPv6 aralıklarını engelleyen uzun firewall kuralları yazdım, ama Cloudflare tabanlı sitelerde sorun çıktı
      Keşke UniFi IPv6 WireGuard desteği verse
  • Imgur'un Birleşik Krallık bölge engeli çerezle kalıcı hale geldiği için, VPN'i kısa süre açmak tek başına çözüm olmuyor
    Reddit daha da kötü; NSFW gönderi paylaşmış kullanıcıların profillerine bile bakamıyorsun
  • Yalnızca belirli alan adlarını VPN'e gönderip geri kalanını normal trafik olarak bırakmanın bir yolu var mı diye merak etmiştim
    Böylece her seferinde VPN'i açıp kapatma zahmeti olmadan iş otomatik yürür
    Örneğin yaş doğrulaması isteyen sosyal ağlar, ülkeye göre engellenen uygulamalar (Spotify vb.) ya da haber sitesi sansürü gibi durumlarda faydalı olur
    • Buna alan adı tabanlı split tunneling deniyor
      Genelde yalnızca HTTP/S isteklerine uygulanır, ama ZScaler gibi satıcılar bunu başka protokollere de genişletiyor
      Tailscale tarafında App Connector özelliği bu işi görüyor
    • Aslında o yazıda zaten tam olarak böyle bir kurulum yapılmış
  • Ben de benzer şekilde OpenWRT router'daki PBR özelliğiyle ayarladım
    Yaklaşık 15 dakikada yalnızca belirli alan adlarını VPN'e gönderecek şekilde kurabiliyorsun ve gayet iyi çalışıyor
  • Ben bu tür sorunları genelde proxy PAC dosyasıyla çözüyorum
    Uçak Wi‑Fi'ı gibi VPN'in engellendiği ortamlarda bile SSH açık olduğundan, dynamic forwarding ile PAC dosyasını birleştirip uçak içi eğlence ya da takip sitelerinin doğrudan bağlanmasını sağlayacak şekilde ayarladım
    Oldukça iyi çalışıyor