Bu sayfa son olarak 2019-11 tarihinde güncellendi ve 0.9.44 yöneltici sürümü için geçerli.

Özet

Bu sayfa, tüm I2P yöneltici binary dosyasını uygulamanızla birlikte paketlemekle ilgilidir. Bu konu, I2P ile çalışmak için bir uygulama yazmakla ilgili değildir (paketlenmiş ya da dış).

Pek çok proje paketleniyor ya da I2P paketlemesi hakkında konuşuluyor. Doğru yapılırsa harika. Yanlış yapılırsa, ağımıza gerçekten zarar verebilir. I2P yönelticisi karmaşıktır ve tüm bu karmaşıklığı kullanıcılarınızdan uzak tutmak zor olabiliyor. Bu sayfada bazı genel yönergeler anlatılmaktadır.

Bizimle görüşün

Bir görüşme başlatın. Yardım etmek için buradayız. I2P kullanan uygulamalar, ağı büyütmek ve herkes için anonimliği sağlamak bizim için umut ve heyecan verici fırsatlardır.

Yönelticinizi akıllıca seçin

Uygulamanız Java veya Scala üzerindeyse, bu seçim kolaydır - Java yönelticisini kullanın. C/C++ kullanıyorsanız, i2pd kullanmanızı öneririz. i2pcpp geliştirme çalışmaları durdu. Diğer dillerdeki uygulamalar için en iyisi SAM ya da BOB ya da SOCKS kullanmak ve Java yönelticisini ayrı bir işlem olarak paketlemektir. Aşağıdakilerden bazıları yalnızca Java yönelticisi için geçerlidir.

Lisanslama

Paketlediğiniz yazılımın lisans gereksinimlerini karşıladığınızdan emin olun.

Varsayılan yapılandırmayı doğrulayın

Doğru bir varsayılan yapılandırma çok önemlidir. Çoğu kullanıcı varsayılanları değiştirmez. Uygulamanızın varsayılanlarının, paketlediğiniz yönelticinin varsayılanlarından farklı olması gerekebilir. Gerekirse yöneltici varsayılanlarını değiştirin.

İncelenecek bazı önemli varsayılanlar: En fazla bant genişliği, tünel miktarı ve uzunluğu, en fazla katkıda bulunulan tünel. Bunların çoğu, uygulamanızın beklenen bant genişliğine ve kullanım kalıplarına bağlıdır.

Kullanıcılarınızın ağa katkıda bulunmasını sağlamak için yeterli bant genişliği ve tünel yapılandırın. Büyük olasılıkla gerek duymayacağınızdan ve çalışan diğer tüm I2P kopyaları ile çakışacağından, dış I2CP kullanımını devre dışı bırakmayı değerlendirin. Ayrıca örneğin çıkarken JVM sonlandırılmasını engellemek için de yapılandırmalara bakın.

Trafiğe Katkıda Bulunma Değerlendirmeleri

Katkıda bulunulan trafiği devre dışı bırakmak sizin için cazip gelebilir. Bunu yapmanın birkaç yolu vardır (gizli kip, en fazla tünel sayısını 0 yapmak, paylaşılan bant genişliğini 12 KBytes/sn değerinin altına ayarlamak). Katkıda bulunulan trafik olmadan, normal kapatma konusunda endişelenmeniz gerekmez, kullanıcılarınız kendileri tarafından üretilmeyen bant genişliği kullanımını görmez, vb. Ancak, katkı tünellerine izin vermeniz için birçok neden var.

Her şeyden önce, ağ ile "bütünleşme" şansı yoksa yöneltici o kadar iyi çalışmaz, Buna, sizin aracılığınızla tüneller oluşturan başkaları tarafından muazzam bir şekilde yardımcı olur.

İkincisi, geçerli ağdaki yönelticiler yüzde 90% oranında katkıda bulunulan trafiğe izin verir. Java yönelticisinde varsayılandır. Başvurunuz başkaları için yönlendirilme yapmıyorsa ve gerçekten sık kullanılmaya başlıyorsa, o zaman ağda bir sülüğe dönüşür ve şu anda sahip olduğumuz dengeyi bozar. Gerçekten büyürse, Tor haline geliriz ve zamanımızı insanlara aktarmayı etkinleştirmeleri için yalvararak geçiririz.

Üçüncüsü, katkıda bulunulan trafik, kullanıcılarınızın anonimliğine yardımcı olan örtü trafiğidir.

Katkıda bulunulan trafiği varsayılan olarak devre dışı bırakmanızı kesinlikle önermiyoruz. Bunu yaparsanız ve uygulamanız çok kullanılmaya başlanırsa, ağı bozabilir.

Kalıcılık

Yönelticinin çalıştırmaları arasında yöneltici verilerini (Ağ Veritabanı (netDB), yapılandırma vb.) kaydetmelisiniz. Her başlatmada yeniden tohumlamanız gerekiyorsa I2P iyi çalışmaz. Bu durum, yeniden tohumlama sunucularımız için çok büyük bir yük oluşturur ve anonimlik için pek iyi değildir. Yöneltici bilgilerini bir araya getirseniz bile, en iyi I2P başarımı için kaydedilmiş profil verilerine gerek vardır.

Yapılandırılabilirlik

Kullanıcılarınıza önemli ayarların yapılandırmasını değiştirmeleri olanağı sağlayın. I2P karmaşıklığının çoğunu gizlemek isteyebileceğinizi anlıyoruz, ancak bazı temel ayarları görüntülemek önemlidir. Yukarıdaki varsayılanlara ek olarak, UPnP, IP/port gibi bazı ağ ayarları yardımcı olabilir.

Otomatik Doldurma Değerlendirmeleri

Belirli bir bant genişliği ayarının üzerinde ve diğer sağlık ölçütlerini karşılayan yönelticiniz, bağlantılarda ve bellek kullanımında (en azından Java yöneltici ile) büyük bir artışa neden olabilecek otomatik doldurma yapar. Bunun uygun olup olmadığını değerlendirin. Otomatik doldurmayı devre dışı bırakabilirsiniz, ancak bu durumda en hızlı kullanıcılarınız yapabilecekleri katkıda bulunmazlar. Ayrıca, uygulamanızın tipik çalışma süresi de etkilidir.

Yeniden Tohumlama

Yöneltici bilgilerini paketlemeyi ya da yeniden tohumlanmış sunucularımızı kullanmayı seçin. Java yeniden tohumlama sunucu listesi kaynak kodundadır. Yani kaynağınızı güncel tutarsanız sunucu listesi de güncel olur. Karşıt hükümetlerin yapabileceği engellemeleri de hesaba katın.

Ağ Kaynağı Kullanımını Azaltmak

Uygulama tünellerinizi gecikmeli açmayı, boştayken azaltmayı ve/veya kapatmayı değerlendirin. i2ptunnel kullanıyorsanız bunu kolayca yapabilirsiniz. Ancak doğrudan I2CP kullanıyorsanız, bir kısmını siz eklemelisiniz. Bazı arka plan DHT etkinliklerinin varlığında bile tünel sayısını azaltan ve ardından tüneli kapatan kod örneği için i2psnark uygulamasına bakabilirsiniz.

Güncellenebilirlik

Yapabiliyorsanız otomatik güncelleme özelliği ekleyin ya da en azından yeni sürümleri otomatik olarak bildirin. En büyük korkumuz, çok sayıda yönelticinin güncellenmeden kalmasıdır. Java yöneltici yılda yaklaşık 6-8 sürüm yayınlar ve bu güncellemeler kullanıcıların izlediği ağın sağlığı için çok önemlidir. Genellikle bir sürümün yayınlandıktan 6 hafta sonra ağda 80% oranında kullanıldığını görüyoruz ve bu şekilde kalmasını istiyoruz. Yöneltici içindeki otomatik güncelleme işlevini devre dışı bırakma konusunda endişelenmenize gerek yok. Bu kod yöneltici panosunda bulunuyor ve muhtemelen paketinize katmıyorsunuz.

Dağıtım

Kademeli bir kullanıma sunma planınız olsun. Ağı bir anda boğmayın. Şu anda günde yaklaşık 25 bin tekil kullanıcımız ve ayda 40 bin tekil kullanıcımız oluyor. Büyük olasılıkla yılda 2-3 kat büyümeyi çok fazla sorun yaşamadan halledebiliriz. Bundan daha hızlı bir artış öngörüyorsanız YA DA kullanıcı tabanınızın bant genişliği dağılımı (ya da çalışma süresi dağılımı ya da herhangi bir önemli özelliği) var olan kullanıcı tabanımızdan önemli ölçüde farklıysa, gerçekten bunu görüşmemiz gerekir. Büyüme planlarınız ne kadar büyükse, bu kontrol listesindeki her şey o kadar önem kazanır.

Uzun Süreki Çalışma İçin Tasarlayın ve Destekleyin

Kullanıcılarınıza, I2P uygulamasının çalıştıkça iyileştiğini söyleyin. İyi çalışması için başlatmadan sonra birkaç dakika beklemek gerekir. Bu süre ilk kurulumdan sonra daha da fazla olabilir. Ortalama çalışma süreniz bir saatten azsa, I2P çözümü büyük olasılıkla size uygun değildir.

Durumu Görüntüleyin

Kullanıcılara uygulama tünellerinin hazır olduğu hakkında bazı göstergeler sağlayın. Sabırlı olmalarını hatırlatın.

Uygun Şekilde Kapatın

Yapabiliyorsanız, katılımcı tünellerinizin süresi dolana kadar kapatmayı erteleyin. Kullanıcılarınızın tünelleri kolayca kapatmasına izin vermeyin ya da en azından onaylamalarını isteyin.

Eğitim ve Bağış

Kullanıcılarınıza I2P hakkında daha fazla bilgi edinmek ve bağış yapmak için bağlantılar sunarsanız iyi olur.

Dış Yöneltici Seçeneği

Kullanıcı tabanınıza ve uygulamanıza bağlı olarak, bir dış yöneltici kullanma seçeneği ya da ayrı bir paket seçeneği sunmak yararlı olabilir.

Diğer Ortak Hizmetlerin Kullanımı

Diğer yaygın I2P hizmetlerini (haber akışları, hosts.txt abonelikleri, izleyiciler, dış vekil sunucular gibi) kullanmayı ya da bunlara bağlantı vermeyi planlıyorsanız, bu hizmetleri aşırı yüklemediğinizden emin olun. Sorun çıkmayacağından emin olmak için bu hizmetleri işleten kişilerle görüşün.

Zaman / NTP Sorunları

I2P içinde bir SNTP istemcisi bulunur. I2P uygulamasının çalışması için doğru zaman gerekir. Hatalı bir sistem saatini dengeler ancak bu, başlatmayı geciktirebilir. I2P uygulamasının SNTP sorgularını devre dışı bırakabilirsiniz. Ancak uygulamanız sistem saatinin doğru olduğundan emin olmadıkça bu önerilmez.

Neyi Nasıl Paketleyeceğinizi Seçin

En azından i2p.jar, router.jar, stream.jar ve mstreaming.jar dosyalarına gerek duyacaksınız. Yalnızca veri şeması uygulaması için iki akış jar dosyasını atlayabilirsiniz. Bazı uygulamalar daha fazlasına gerek duyabilir, i2ptunnel.jar veya addressbook.jar gibi. Şifrelemeyi çok daha hızlandırmak için jbigi.jar veya desteklediğiniz platformlar için bir alt kümesini unutmayın. Oluşturmak için Java 7 veya üstü gereklidir. Debian / Ubuntu paketleri oluşturuyorsanız, I2P paketini derlemek yerine PPA üzerinden isteyin. Örneğin susimail, susidns, yöneltici panosu ve i2psnark uygulamalarına neredeyse hiç gerek duymazsınız.

Aşağıdaki dosyalar "i2p.dir.base" özelliği ile belirtilen I2P kurulum klasörüne eklenmelidir. Yeniden tohumlama için gerekli olan sertifikaları / klasörü ve IP doğrulaması için blocklist.txt dosyasını unutmayın. Geoip klasörü isteğe bağlıdır, ancak yönelticinin konuma göre kararlar alabilmesi için önerilir. Geoip bulunuyorsa, GeoLite2-Country.mmdb dosyasını bu klasöre eklediğinizden emin olun (installer/resources/GeoLite2-Country.mmdb.gz dosyasından ayıklayın). hosts.txt dosyası gerekli olabilir. Uygulamanızın kullandığı tüm sunucuları içerecek şekilde değiştirebilirsiniz. Başlangıç varsayılanlarını değiştirmek için temel klasöre bir router.config dosyası ekleyebilirsiniz. Client.config ve i2ptunnel.config dosyalarını gözden geçirin ve düzenleyin ya da kaldırın.

Lisans gereksinimleri, LICENSES.txt dosyasını ve licenses klasörünü eklemenizi gerektirebilir.

  • Ayrıca bir hosts.txt dosyasını eklemek isteyebilirsiniz.
  • Java 8 ile derliyorsanız, bir Java 7 önyükleme sınıfı yolu belirttiğinizden emin olun.

Android değerlendirmeleri

Android yöneltici uygulamamız birden fazla istemci tarafından paylaşılabilir. Kurulu değilse, kullanıcı bir istemci uygulamasını başlattığında kullanıcıya sorulur.

Bazı geliştiriciler, bunun kötü bir kullanıcı deneyimi olduğu konusundaki endişelerini dile getirdiler ve yönelticiyi uygulamalarına yerleştirmek istiyorlar. Yol haritamızda, yerleştirmeyi kolaylaştırabilecek bir Android yöneltici hizmet kitaplığımız var. Daha fazla bilgi gerekli.

Yardıma gerek duyarsanız lütfen bizimle görüşün.

Maven jar dosyaları

We have a limited number of our jars on Maven Central. There are numerous trac tickets for us to address that will improve and expand the released jars on Maven Central.

Yardıma gerek duyarsanız lütfen bizimle görüşün.

Veri şeması (DHT) değerlendirmeleri

Uygulamanız bir DHT için olduğu gibi I2P veri şemaları kullanıyorsa, ek yükü azaltmak ve güvenilirliği artırmak için birçok gelişmiş seçenek vardır. Bunun, iyi çalışmaya başlaması için biraz zaman ve deneme gerekebilir. Boyut / güvenilirlik denkliklerinin farkında olun. Yardım almak için bizimle görüşün. Aynı hedefte veri şemaları ve akış kullanılabilir ve yapılması önerilir. Bunun için ayrı hedefler oluşturmayın. İlgisiz verilerinizi var olan ağ DHT ögelerinde (iMule, bote, bittorrent ve yöneltici) depolamayın. Kendi ögenizi oluşturun. Çekirdek düğümleri sabit kodluyorsanız, birkaç tane olmasını öneririz.

Pazarlama desteği

Birlikte çalışalım. Projenizi tamamlayana kadar beklemeyin. Bize Twitter kullanıcı adınızı verin ve projenizle ilgili tweet atmaya başlayın, iyiliğin karşılığını vereceğiz.

Zararlı yazılım

Lütfen I2P ağını kötü niyetler için kullanmayın. Hem ağımıza hem de itibarımıza büyük zarar verebilir.

Bize Katılın

Bu açık olabilir, ancak topluluğa katılın. I2P uygulamasını 7/24 çalıştırın. Projeniz için bir I2P aitesi açın. IRC #i2p-dev kanalında takılın. Forumlara yazın. Duyulmasına yardımcı olun. Kullanıcılar, test edenler, çevirmenler ve hatta kodlayıcılar edinmenize yardımcı olabiliriz.

Uygulama Örnekleri

Yönelticiyi paketleyen bir uygulama örneği için I2P Android uygulamasını kurup kurcalamak ve koduna bakmak isteyebilirsiniz. Kullanıcıya neyi gösterdiğimizi ve neyi gizlediğimizi görün. Yönelticiyi başlatmak ve durdurmak için kullandığımız durum makinesine bakın. Bazı örnekler: Vuze, Nightweb Android uygulaması, iMule, TAILS, iCloak ve Monero.

Kod Örneği

Yukarıdakilerin hiçbiri size Java yönelticiyi paketlemek için kodunuzu nasıl yazacağınızı söylemez. Bu nedenle aşağıda kısa bir örnek verilmiştir.

import java.util.Properties;
import net.i2p.router.Router;

	Properties p = new Properties();
        // add your configuration settings, directories, etc.
        // where to find the I2P installation files
	p.addProperty("i2p.dir.base", baseDir);
        // where to find the I2P data files
	p.addProperty("i2p.dir.config", configDir);
        // bandwidth limits in K bytes per second
	p.addProperty("i2np.inboundKBytesPerSecond", "50");
	p.addProperty("i2np.outboundKBytesPerSecond", "50");
	p.addProperty("router.sharePercentage", "80");
	p.addProperty("foo", "bar");
	Router r = new Router(p);
        // don't call exit() when the router stops
	r.setKillVMOnEnd(false);
	r.runRouter();

	...

	r.shutdownGracefully();
	// will shutdown in 11 minutes or less

Bu kod, Android uygulamamızda olduğu gibi uygulamanızın yönelticiyi başlattığı durum içindir. Yönelticinin, Java paketlerimizde olduğu gibi, Jetty webapps ile birlikte client.config ve i2ptunnel.config dosyaları aracılığıyla uygulamayı başlatmasını da sağlayabilirsiniz. Her zaman olduğu gibi, durum yönetimi zor olan kısımdır.

See also: the Router javadocs.