deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (native)

Tailscale'ın Tailcat'ı, WireGuard data plane'ini netcat tarzı bir tünel aracına dönüştürüyor

Tailscale, control plane yerine değiştirilen token'lar kullanarak iki makine arasında şifreli WireGuard tünelleri kuran açık kaynaklı bir CLI ve Go kütüphanesi olan Tailcat'ı yayınladı.

Tailscale'ın Tailcat'ı, WireGuard data plane'ini netcat tarzı bir tünel aracına dönüştürüyor

Tailcat ne yapıyor

Tailscale, mevcut açık kaynak yığınının parçalarını netcat benzeri bir yardımcı programa dönüştüren, açık kaynaklı bir komut satırı aracı ve içe aktarılabilir Go kütüphanesi olan Tailcat'ı yayınladı. Hacker News'in ana sayfasına ulaşan projenin GitHub deposuna göre Tailcat, iki makine arasında noktadan noktaya WireGuard ile şifrelenmiş tüneller kurarken Tailscale'ın control plane'ini tamamen atlıyor — fiilen Tailscale servisleri olmadan Tailscale ağ iletişimi.

Araç, ana ürünün temelini oluşturan, şirketin magicsock adını verdiği bileşenle aynı data plane üzerine inşa edilmiştir; doğrudan peer-to-peer UDP bağlantıları kurma ve NAT geçişi başarısız olduğunda aktarılan taşıma yöntemine (relay) geri dönme yeteneğini yeniden kullanır. Tailscale normalde anahtarları ve bağlantı meta verilerini dağıtmak için koordinasyon sunucularına güvenirken, Tailcat bu alışverişi kullanıcıların tercih ettiği kanalla bant dışına taşıyor: bir taraf kısa bir bağlantı token'ı yazdıran bir dinleyici başlatıyor, diğer taraf da bu token'ı istemciye bağlanması için veriyor. Go kütüphanesi github.com/tailscale/tailcat olarak içe aktarılabilir ve CLI deponun cmd dizininde yer alıyor.

Hesap yok, root yok

Control plane olmadığı için Tailscale hesabı gerekmiyor ve araç tamamen kullanıcı alanında (userspace) çalışıyor. GitHub dokümantasyonu, aracın yönlendirme tablolarını veya DNS ayarlarını değiştirmediğini ve root ya da yönetici ayrıcalıkları gerektirmediğini belirtiyor. Bağlantılar Tailscale'ın DERP relay ağı üzerinden başlatılıyor, ardından magicsock doğrudan bir UDP yoluna yükseltmek için NAT geçişi deniyor; dokümantasyona göre bu genellikle başarılı oluyor. Tailcat, ücretsiz ve hız sınırlı DERP relay'lerinden oluşan varsayılan bir haritayla geliyor ve operatörler kendi relay'lerini çalıştırabilir.

Onunla neler yapabilirsiniz

Depodaki örnekler netcat benzeri bir kullanım yelpazesini kapsıyor:

  • İki makine arasında stdin ve stdout'u borulamak (pipe); sunucu geçici bir adres yazdırıyor, istemci de verileri bu adrese boruluyor.
  • --serve ile yerel TCP portlarını iletmek, localhost'a bağlı servisleri tünel üzerinden dışarı açmak.
  • --serve=no-auth-ssh ile Linux ve macOS'ta kimlik doğrulamasız bir SSH sunucusu çalıştırmak ya da kimlik bilgileri istendiğinde bunun yerine sistem SSH arka plan programına vekillik yapmak.
  • Her yanıtın relay üzerinden mi yoksa doğrudan bir yol üzerinden mi geldiğini bildiren bir ping modu, ayrıca doğrudan bir yol çalışana kadar (varsayılan olarak en fazla 10 saniyelik zaman aşımıyla) denemeye devam eden --until-direct bayrağı.
  • Komutları tünel üzerinden yönlendiren bir SOCKS5 modu; token'lar curl gibi araçlar için URL ana bilgisayar adları olarak da kullanılabilir, ancak ana bilgisayar adlarını küçük harfe çeviren ve büyük-küçük harfe duyarlı token'ları bozan tarayıcılar için kullanılamaz.
  • Bir istemcinin sunucunun daha geniş ağına erişmesini sağlayan bir exit-node modu.

Anahtarlar, token'lar ve DNS adları

Sunucunun token'ı WireGuard anahtarından türetilir. Geçici (ephemeral) anahtarlar varsayılandır: her çalıştırma bellekte yeni bir anahtar üretir ve süreç sona erdiğinde o adres kalıcı olarak ölür. Alternatif olarak tailcat genkey bir anahtarı diske kaydeder, böylece adres yeniden başlatmalar arasında sabit kalır — buna karşılık, adresi hiç alan herkes, istemciler --allow ile kısıtlanmadıkça o anahtardaki gelecekteki sunuculara bağlanabilir. README buradaki ince bir varsayılan konusunda uyarıyor: "default" adında kayıtlı bir anahtar bir kez var olduğunda, düz tailcat onu sessizce yeniden kullanır; dolayısıyla hangi modda olduğunuzu anlamanın yolu başlangıç satırıdır.

Token'lar ayrıca DNS TXT kayıtları olarak yayınlanabilir ve adla sorgulanabilir; bir DNS adı, CLI'nın token kabul ettiği her yerde geçerlidir. Dokümantasyon bunu, makinede gelen portlar açık olmadığı halde ana bilgisayar adıyla erişilebilen bir SSH sunucusu örneğiyle gösteriyor; burada WireGuard, istemciyi SSH katmanı hiçbir paket görmeden önce doğrular.\n

Neden önemli

Tailcat, ticari bir ürünün yeniden kullanılabilir parçalara ayrıştırılmasının önemli bir örneği. Tailscale'ın vaadi her zaman WireGuard üzerine katmanlanmış yönetilen control plane etrafında yoğunlaştı; Tailcat, data plane'in kendi başına yararlı bir yapı taşı olduğunu gösteriyor. Geliştiriciler için, hesap açma, port açma veya VPN yapılandırma gerektirmeyen geçici şifreli bağlantı imkânı sunuyor — tek seferlik aktarımlar, NAT arkasındaki makinelere hızlı erişim, geçici SSH açma. Tailscale için ise bu, açık kaynak bileşenlerinin kendi başlarına ayakta durduğunun bir kanıtı ve makul bir de giriş noktası: manuel token alışverişini büyüten kullanıcılar eninde sonunda koordinasyon, kimlik ve erişim kontrolü isteyecek — ki ücretli control plane'in sağladığı tam olarak bu. Bununla birlikte güvenlik modeli dikkatle izlenmeyi hak ediyor — token hem adres hem de yetki görevi gördüğünden, geçici ve kayıtlı anahtarlar arasındaki seçim gerçek sonuçlar taşıyor ve proje bu konuda açık sözlü.

  • #tailscale
  • #wireguard
  • #open-source
  • #networking
  • #cli

İlgili yazılar