Iroh 1.0 - IP yerine anahtarla bağlanma - rastgele cihazları bağlamak için ağ kütüphanesi
(iroh.computer)- Iroh 1.0, ilk kararlı sürüm ve wire protocol ile dil API kararlılığını garanti ederek iroh v1 endpoint'lerinin minor sürüm ya da dilden bağımsız olarak birbiriyle iletişim kurabilmesini sağlıyor
- Rust crate'e ek olarak Python, Node.js, Swift, Kotlin resmi olarak destekleniyor; böylece Swift iOS uygulamalarına ve Kotlin Android uygulamalarına iroh gömülebiliyor
- Wire kararlılığını etkileyen değişiklikler her zaman major release ile birlikte yapılacak; gelecekte dil API sürümü ile wire uyumluluğu birbirinden bağımsız şekilde sürümlendirilebilir
- 1.0 sonrasında major ve minor sürümler destek takvimi doğrultusunda desteklenecek ve 0.35 minor sürümü ek sürüm almayacak
- Public relay desteği v1.0 için End of Life'a kadar, v0.35x için 31 Aralık 2026'ya kadar, v0.9x ve v1.0.0-rcX için ise 30 Eylül 2026'ya kadar sürdürülecek
- Public relay genellikle her sürümün hemen ardından 24 saat içinde en güncel sürüme yükseltiliyor; wire-breaking relay değişikliklerinde mevcut istemcilerin çalışmaya devam etmesi için yeni bir URL kullanılıyor
- Bağlantı özellikleri arasında QUIC multipath, QUIC NAT traversal, local-first yapılandırma, WASM ve tarayıcıda çalışma, bağlantı kontrol hook'ları ve custom transport desteği yer alıyor
- Bağlantılarda verinin %95'inin cihazlar arasında doğrudan aktarılması yaygın; bu da doğrudan bağlantının bulut üzerinden ek hop'ları ve egress maliyetlerini azalttığı anlamına geliyor {p:95}
- Public relay üzerinden geçen trafikte rate limit uygulanıyor ve bu sınırlar herhangi bir zamanda değişebilir
2 yorum
Hacker News yorumları
Iroh’yu ilk kez görüyorsanız, kabaca ağ katmanı değil uygulama katmanı için bir Tailscale gibi düşünebilirsiniz
“Neden doğrudan Tailscale kullanmıyoruz?” sorusu, uygulama geliştiricisinin bakış açısından farklı. Uygulama örneklerinin birbirine kolayca bağlanmasını istiyorsanız, teoride Tailscale işlevlerini uygulamanın içine gömebilirsiniz; ama o zaman kullanıcının bir Tailscale hesabına ihtiyacı olur ve uygulama da Tailscale’e bağımlı hale gelir
Iroh ise bu işlevi doğrudan gömebilmenizi sağlıyor ve herkese açık yedek relay’ler de sunuyor. Uygulama, açık relay’lerin kaldıramayacağı kadar büyürse kendi relay’inize geçmek de neredeyse tek bir anahtar çevirmek kadar kolay
Özellikle de Iroh bunu doğru şekilde yapmayı bu kadar kolay ve iyi hale getiriyorsa
Kullanıcıların yerel bir instance’a erişmesi gereken ortamlarda Iroh’nun oyun değiştirici olabileceğini düşünüyorum. Bizim kullanımımızda, telefondan ya da başka cihazlardan yazılımı kolayca kontrol etmeyi sağlıyor
Eskiden aynı LAN’da olup olmadığını kontrol etmeniz gerekebilirdi, ama Iroh ile her ortamda çalışıyor
Iroh ve OpenZiti’nin ikisi de uygulamaya gömülebilir ve hizmete gömmek isteyen uygulama geliştiricileri için ikisi de iyi kullanım örnekleri sunar
OpenZiti, ölçek ve güvenliğin kritik olduğu hizmetlerde kullanılırken, Iroh önceden ilişkisi olmayan katılımcıların da birlikte çalışmasına izin verdiği için çok kullanışlı olabilir
Iroh geliştiricilerinden biriyim
Sık gelen sorulardan biri, Iroh’nun ne zaman WebRTC, BLE, LoRa vb. destekleyeceği
Şu anda Iroh varsayılan olarak yalnızca IPv4, IPv6 ve relay taşımasını destekliyor. İlginç taşıma yöntemi çok fazla olduğu için hepsini desteklemeye kalkarsanız kod tabanı, bakımı imkânsız bir özellik bayrağı labirentine dönüşür
Bunun yerine özel taşıma katmanları uygulayabilmenizi sağladık ve taşıma implementasyonu tamamen ayrı bir crate içinde durabiliyor
Mevcut deneysel özel taşımalara Tor, Nym ve BLE dahil. https://github.com/mcginty/iroh-ble-transport
İçeride nasıl çalıştığını burada görebilirsiniz: https://www.iroh.computer/blog/iroh-0-97-0-custom-transports...
Bununla bir P2P istemci/sunucu yapısı ya da iki eş makine kurarsam, iki uygulama arasında bağlantı kurmak için ek olarak ne ayarlamam gerektiğinin sınırlarını merak ediyorum
Örneğin telefonda çalışan bir uygulama ile dizüstünde çalışan bir uygulama yaparsam, ikisi arasında gerçekten doğrudan ve güvenli bir bağlantı elde edebilir miyim, yoksa bu başka bir problemi mi çözüyor, bunu anlamak istiyorum
-[0]: sıfırdan Rust ile p2p chat: https://www.youtube.com/watch?v=ogN_mBkWu7o
Geçen yıl ikisinden birini seçerken alışık olduğum tarafa yöneldim, ama şimdi Iroh tarafında belirgin bir ivme varmış gibi geliyor
Burada Tor daemon kullanılıyor. Tor’un bir Rust implementasyonu var ve Rust içinde kullanıldığında stream nesneleri gibi şeyler olarak kullanılabiliyor
Kullanım örneğini https://gitlab.torproject.org/tpo/core/oniux içinde görebilirsiniz
Strateji deseni ve merkezi özellik yönetimi iyi olur
Videoda “Dial keys” geçiyor muydu bilmiyorum ama ilk paragrafta bunun ne tür bir anahtar olduğu ve neden gerekli olduğu bence açıkça belirtilmeli
Bunun kriptografik bir anahtar mı, asimetrik bir anahtar mı olduğu, en temel düzeyde bile nasıl çalıştığı açıklanmıyor. Doğrudan soyut üstünlük iddialarına ve kullanım istatistiklerine geçiliyor
Rölelerin işin içinde olduğu anlaşılıyor gibi ama bunu HN tartışmasında aratmak yerine en baştan söylemeleri daha iyi olurdu
Önce https://docs.iroh.computer/what-is-iroh var, ardından da nasıl çalıştığı bölümü geliyor. Şu ana kadarki izlenimime göre dokümantasyon gerçekten iyi ve ortaya çıkan soruları da oldukça hızlı yanıtlıyor gibi görünüyor
Dağıtık olabilir, ücretsiz olabilir ve tek parça bir yapı olmayabilir ama geniş açıdan bakınca aynı kategoriye giriyor
.ssh/configiçindeki adlandırılmış host’lar gibi, bir anahtarla erişilen bir “isim” sandımAma daha fazla dinleyince QUIC üzerinde ağ kurmanın yeni bir yolu gibi geliyor
Uzman değilim ve projeyi bugün ilk kez gördüm ama Lobste.rs özeti şu: Bu, istemcilere kalıcı kimlik atayan, güçlü görüşlere sahip bir WebRTC kurulumuna daha yakın. Sinyal sunucusu kurma işi halledilmiş ve çözüm yeterince genel ve ucuz olduğu için topluluk tarafından barındırılan sunucular da kullanılabiliyor. Steam’in kapalı P2P gamenetworkingsocket altyapısından elde edilene biraz benziyor
https://lobste.rs/s/cslljn/iroh_1_0_dial_keys_not_ips#c_s3na...
En başta hangi problemi çözmeye çalıştığını anlamıyorum. IP ve DNS gayet iyi çalışıyor
Zaten IPv6 ve QUIC var ve bu alanda anlamlı bir ivme kazanmak için satıcıların ve büyük yazılımların desteği gerekir
Örneğin, evdeki WLAN’ında NAT arkasında bulunan bir cihaz ile 4G ağında ya da şirkette başka bir NAT’ın arkasındaki başka bir cihaz olduğunu düşün
Çoğu durumda hole punching ile bu iki cihaz arasında çok hızlı bir doğrudan bağlantı kurabilir ve mümkün olan en yüksek bant genişliği ile en düşük gecikmeyi elde edebilirsin
Bu, şimdiye kadar çözülmüş bir problem değildi
TCP/IP’de gerçek bir oturum katmanı olmadığı için vMotion genelde yalnızca tek bir broadcast domain içinde mümkün oluyor. Bu durumda adresleme fiilen yalnızca MAC adresleriyle yapılıyor ve vMotion sonrasında MAC adresi değişse bile IP’yi kalıcı tanımlayıcı olarak kullanabiliyorsun. Eşleme işini switch’in MAC adresi tablosu hallediyor
Ağ iletişiminin geleceği merkeziyetsizlik. Yggdrasil ve I2P’yi çok seviyorum
24 saat çalışacak bir mini PC alıp ihtiyacım olan şeyleri barındırabilmeli ve diğer insanlarla sorunsuz biçimde bağlanabilmeliyim. Birçok teknik insanın zaten köşede tozlanan eski yedek makineleri var ve bunlar sunucuya dönüştürülebilir
Uzun vadede bu, alan adı ve sunucu barındırma işleriyle uğraşmaktan çok daha ucuz ve bakımı da daha kolay. Iroh ekibinin yaptığı işi gerçekten çok takdir ediyorum
Iroh ile çalışmak gerçekten çok keyifliydi ve Discord kanalındaki mühendisler de son derece yardımseverdi
P2P’yi sadece çalışır hâle getiren pratik yaklaşım anlaşılması kolaydı, YouTube kanalındaki içerikler de harika. v1 çıkışını kutlarım
https://youtube.com/@n0computer
IP adreslerine benzer bir işlev üstlenmeye çalışan bir protokolün üzerinde fiyat etiketi olması garip görünmüyor mu? Belki bir şeyi yanlış anlıyorumdur
Ama geliştirme maliyetlerini karşılamak için, özellikle daha büyük ya da özel kullanım senaryolarında dağıtımı ve işletimi kolaylaştıran ek hizmetler de sunuyorlar
“İnsanlar için altyapı, uzmanlar için iş” olmak isteme hâli
“Bunu işletmek için para gerekiyor” ile “kamusal altyapı sistemi olmak istiyoruz” arasında sıkışıyorlar ve kâr amaçlı şirket olmanın olumsuz yanları “ama sonuçta açık kaynak” denilerek geçiştiriliyor
“Açık kaynak” notu tamamen aşırı özelleştirilmiş ve anlaşılmaz bir kod tabanıyla birlikte gelmediği sürece, bu iş modelini bir ölçüde makul buluyorum
Bir ISP ya da AS işletmenin ciddi miktarda paraya mal olduğu kesin
Şirketimizde Iroh’yu prodüksiyonda kullanıyoruz ve gerçekten çok seviyoruz
Bunu esasen Rust crate’i olarak sunulan Tailscale tarzı hole punching diye tarif ederdim ama elbette temel QUIC bağlantısının üstüne birçok hoş P2P özelliği de ekleyebiliyorsunuz
Şirketimiz, prodüksiyon ortamındaki dağıtık makine öğrenimi eğitim sistemi için Iroh kullandı ve çok memnun kaldık
Kurumsal destek sözleşmesi imzalamadan önce bile ekip inanılmaz hızlı yanıt veriyordu, bilgi düzeyleri çok derindi ve kütüphanenin kendisi de şaşırtıcı derecede iyi çalıştı. libp2p yerine bu kütüphaneyi her zaman yeniden tercih ederim
Çıkışı kutluyorum
tailscale/netbird/netmaker/zerotier/twingate/openziti ile karşılaştıran bir versus sayfasına acilen ihtiyaç var
kullanım senaryolarına bakınca şu an Tailscale ile yapılamayan bir şey görünmüyor
Lobste.rs yorumları
Görünüşe göre hem burada hem de HN’de insanlar Iroh’nun, VPN üzerine kurulan mesh ağlardan (Tailscale, ZeroTier, Netbird vb.) nasıl farklı olduğunu karıştırıyor. Benim yorumuma göre Iroh, kendi uygulamasını çalıştıran cihazlar arasında P2P iletişim kurmak isteyen uygulama geliştiricileri için; mesh ağlar ise sahip oldukları ya da yönettikleri makineleri birbirine bağlamak isteyen ağ yöneticileri için.
Örneğin bir P2P mesajlaşma uygulaması yaptığınızı düşünün; bir kullanıcı WiFi ile mobil veri arasında sürekli geçiş yapan bir mobil cihazda olabilir ve bu yüzden kararlı bir adresi yoktur, diğer tarafta ise NAT ve CGNAT arkasında bir dizüstü bilgisayar olabilir. IP adresleri değişse bile bu ikisinin iletişim kurabilmesi için bunu yönetecek bir mekanizma gerekir.
Eskiden bu genellikle uygulama geliştiricisinin işlettiği bir aracı sunucuya iki uç noktanın bağlanıp durum paylaşmasıyla çözülürdü; Iroh ise bunu standartlaştırıp bir hizmet olarak sunmaya çalışan tarafa daha yakın görünüyor.
Biraz da Steam’in özel P2P
gamenetworkingsocketaltyapısından elde ettiklerinize benziyor.Bir şeyi kaçırmış olabilirim ama her şeyi tek bir anahtara bağlamak kulağa çok riskli geliyor. O anahtar kaybolursa ya da ele geçirilirse ne olacağını merak ediyorum.
Iroh belgelerinde hızlıca “key rotation” aradım ama bulamadım.
Iroh kullanan bazı uygulamalar anahtarları kalıcı olarak saklarken bazıları her oturum için yeniden üretiyor.
Özel anahtar sızarsa, bir saldırgan bağlantı başlatırken ya da kabul ederken benim kimliğime bürünebilir. Anahtarı kaybedersem eşlere kimliğimi kanıtlayamam. Anladığım kadarıyla bu, sıradan bir parola ya da özel anahtarın kaybolması veya ele geçirilmesiyle benzer bir risk.
Benzer alternatifler neler olabilir? Host Identity Protocol? https://mkomu.kapsi.fi/hipl/index.php?index=how
Projeyi anlamaya çalışıyorum ama anahtar ile IP arasındaki fark tam oturmuyor. Sonuçta bir noktada IP yönlendirmesi kullanmak için anahtarın bir IP adresine eşlenmesi gerekmiyor mu?
Anahtar, IP adresine eklenmiş uzun ömürlü bir tanımlayıcı gibi davranarak URL ya da DNS’in yerini mi alıyor?
Bir düğümü başka bir düğüme anahtarla bağlamaya çalıştığınızda, relay sunucularından birinde o anahtar sorgulanıyor; ardından doğrudan IP bağlantısından hole punching’e ve en son relay sunucusu üzerinden aktarılan bağlantıya kadar çeşitli yöntemler deneniyor.
Ayrıca anahtarlar, QUIC üzerinden uçtan uca şifreleme için de kullanılıyor.
Belirli bir uygulama için kendi relay sunucusunu barındırmanın bir yolu var mı? Mümkün görünüyor. Ama özel relay için ayrı bir fiyat sayfası olması biraz garip geldi.
Barındırılan relay ise, sunucuları kendiniz yönetme zahmetine girmeden bunu sağlamak ve ağ üzerinde daha fazla görünürlük sunmak amacıyla var.
Bu, Yggdrasil ya da Netbird’den çok Reticulum’a daha yakın gibi hissettiriyor.
Bunun ne olduğunu anlamak zor. Bana Yggdrasil’i hatırlatıyor ama ikisini nasıl karşılaştıracağımı pek bilmiyorum.