Fly.io'nun WireGuard iyileştirmeleri
- Fly.io, container'ları VM'lere dönüştürerek bunları dünya genelinde donanım üzerinde Firecracker'ın gücüyle çalıştırır.
- WireGuard'ı yoğun biçimde kullanır ve artık bu, müşteri API'sinin bir parçasıdır.
flyctl CLI her çalıştığında bir TCP/IP stack oluşturur ve benzersiz bir IPv6 adresi kullanarak Fly Machines ile doğrudan iletişim kurar.
- Bu yaklaşımın artıları ve eksileri vardır ve bazı iyileştirmeler yapılmıştır.
Önceki durum
- Dünya genelindeki "gateway" sunucuları WireGuard bağlantılarını kabul eder ve bunları uygun özel ağa bağlama görevini üstlenirdi.
flyctl her çalıştığında bir arka plan agent süreci oluşturur ya da buna bağlanırdı.
- Agent, GraphQL API'de yeni bir WireGuard peer yapılandırması oluştururdu.
- API, uygun gateway'e peer yapılandırmasını NATS mesajlaşma sistemi üzerinden gönderirdi.
- Gateway tarafındaki
wggwd servisi yapılandırmayı alır, SQLite veritabanına kaydeder ve çekirdeğe eklerdi.
- API, GraphQL isteğine yanıt vererek yapılandırmayı iletir ve
flyctl WireGuard peer'ine bağlanırdı.
- NATS hızlıdır, ancak teslimatı garanti etmez ve gateway'lerde kalan eski peer'leri temizlemez.
Daha iyi bir yöntem
- WireGuard peer'lerini saklamak için karmaşık bir veritabanı gerekmez.
- Sistem, gateway'lerin ihtiyaç duyduklarında yapılandırmayı API'den alacağı şekilde değiştirildi.
- İstemci yalnızca bağlantı istediğinde peer çekirdeğe eklenebilir, gerekmiyorsa kaldırılabilir.
JIT WireGuard peer'leri mümkün
- Linux çekirdeğindeki WireGuard yapılandırma arayüzü Netlink kullanır.
- WireGuard bağlantı isteği paketleri BPF filtreleri ve packet socket ile tanımlanıp yakalanabilir.
- WireGuard'da "client" ve "server" kavramları yoktur; bu, point-to-point bir protokoldür.
flyctl gateway'e bir UDP paketi gönderdiğinde bu bir handshake initiation olur.
- Gelen bağlantılar BPF filtresi kullanılarak yakalanabilir.
- Noise protocol framework temel alındığından, isteği tanımlamak için şifre çözme gerekir.
- Gateway'e bağlanmayı deneyen tüm kullanıcıların açık anahtarlarını almak için bir event feed oluşturulabilir.
- Her yeni peer görüldüğünde, dahili bir HTTP API isteği üzerinden ilgili peer bilgisi alınıp kurulabilir.
Uygulamaları dakikalar içinde yayına almak
- Fly.io'da uygulamaları hızlıca deploy edip kendi JIT WireGuard peer'inizi elde edebilirsiniz.
Grafiğe göz atmak
- Bu sistem birkaç hafta boyunca çalıştırıldı ve gateway'lerde kalan eski WireGuard peer sayısı belirgin biçimde azaltıldı.
- Gateway'ler daha az state tutuyor ve peer yapılandırmaları daha hızlı hale geliyor.
- Geçiş günündeki başarılı sonuçlar bir Grafana grafiğiyle paylaşılıyor.
GN⁺'un görüşü
- Fly.io'nun WireGuard iyileştirmeleri, ağ performansı ve güvenilirliğini önemli ölçüde artıran iyi bir örnek.
- Bu yaklaşım, özellikle bulut tabanlı hizmetlerde ağ trafiği yönetimini ve güvenliği güçlendirmeye yardımcı olabilir.
- Benzer işlevler sunan diğer projeler arasında Tailscale ve ZeroTier bulunuyor; bunlar da bireysel ve kurumsal kullanıcılara VPN alternatifleri sunuyor.
- WireGuard'ı devreye alırken ağ yapılandırması, güvenlik politikaları ve uyumluluk gibi konular dikkate alınmalı.
- Bu teknolojiyi seçmenin avantajları yüksek performans ve basit yapılandırma olsa da, mevcut altyapıyla entegrasyon ve yönetim açısından zorluklar yaratabilir.
1 yorum
Hacker News görüşleri
dbürününde tutarsız bağlantı kopmaları yaşandığından bahsediyor.