Kullanıcıları pasif modda bağlamak için NAT Geçişini kullanma

Bu makale, girişlerden birinin ücretsiz çevirisidir. DC++ geliştirici blogu.

Yazarın izniyle (aynı zamanda açıklık ve ilgi açısından), onu bağlantılarla renklendirdim ve bazı kişisel araştırmalarla destekledim.

Giriş

Bağlantı çiftinin en az bir kullanıcısının şu anda aktif modda olması gerekir. NAT geçiş mekanizması, her iki tarafta da aktif mod yapılandırılmadığında faydalı olacaktır. Bunun nedeni genellikle bir güvenlik duvarı veya NAT cihazının gelen bağlantıları engellemesidir.

Her iki istemci de aktif moddaysa

Başlatan istemci, kendi IP adresini ve bağlantı noktasını içeren bir komut gönderir. $ConnectToMe başka bir müşteriye. Komutu alan istemci, bu verileri kullanarak başlatıcıyla bağlantı kurar.

İstemcilerden biri pasif moddaysa

Hub aracılığıyla pasif bir istemci A bir komut gönderir $RevConnectToMe aktif müşteri Bbu daha sonra $ConnectToMe komutuyla yanıt verir.

Kullanıcıları pasif modda bağlamak için NAT Geçişini kullanma
Sunucu olarak S yukarıdaki durumda bir DC hub vardır

Her iki istemci de pasif moddaysa ADC merkezi

Farklı NAT'ların arkasındaki istemciler A и B merkeze katıldı S.

Kullanıcıları pasif modda bağlamak için NAT Geçişini kullanma
Hub'a olan bağlantı istemci tarafından bu şekilde görünüyor A

Hub, 1511 numaralı bağlantı noktasındaki bağlantıları kabul eder. İstemci A özel ağından 50758 numaralı bağlantı noktası üzerinden giden bağlantılar yapar. Hub ise NAT cihazının adresini görür, onunla çalışır ve bunu istemcilere tanımlayıcılarına göre yayınlar.

Müşteri A sunucuya gönderir S bir müşteriyle bağlantı kurma konusunda yardım isteyen mesaj B.

Hub: [Outgoing][178.79.159.147:1511] DRCM AAAA BBBB ADCS/0.10 1649612991

Ayrıca pasif modda istemci BBu komutu aldıktan sonra, hub'a NAT aracılığıyla bağlanmak için kullanılan özel bağlantı noktasını bildirmelidir.

Hub: [Incoming][178.79.159.147:1511] DNAT BBBB AAAA ADCS/0.10 59566 1649612991

Bu bilgiyi aldıktan sonra müşteri A hemen müşteriyle bağlantı kurmaya çalışır B ve kendi özel limanını rapor ediyor.

Hub:		[Outgoing][178.79.159.147:1511]	 	D<b>RNT</b> AAAA BBBB ADCS/0.10 <b>50758</b> 1649612991

İlgi ne? İlgi, halihazırda kullanılmış bir özel bağlantı noktası üzerinden genel bir adrese yeni bir bağlantı oluşturarak aynı bağlantının uç noktasını değiştirmektir.

Kullanıcıları pasif modda bağlamak için NAT Geçişini kullanma
Tombala!

Elbette bu durumda istemci NAT B istemciden gelen ilk bağlantı isteğini reddetme hakkına sahiptir Aancak kendi isteği bu bağlantının yarattığı "deliğe" hücum eder ve bağlantı kurulur.

Kullanıcıları pasif modda bağlamak için NAT Geçişini kullanma
Şu uyarıyla birlikte tüm süreç için uygun çizim: protokol oturum tarafından açılan genel bağlantı noktalarını kullanmaz NAT-Sve ayrıca özel adresler.

Sonuç bölümü

(Orijinal) makalenin yazıldığı sırada DC istemcilerinin yaklaşık yarısı pasif modda çalışıyor. Bu, olası tüm bağlantıların dörtte birinin yapılamayacağı anlamına gelir.

Gelecekte DC++ NAT'ı atlayabilecekmevcut bağlantıları kullanma A-S и B-S doğrudan istemci-istemci bağlantısı kurmak için A и B pasif moddadır.

Kaynak: habr.com

Yorum ekle