Izmantojot NAT Traversal, lai savienotu lietotājus pasīvā režīmā

Šis raksts ir bezmaksas tulkojums vienam no ierakstiem DC++ izstrādātāju emuārs.

Ar autora atļauju (kā arī skaidrības un intereses labad) to izkrāsoju ar saitēm un papildināju ar kādu personisku pētījumu.

Ievads

Vismaz vienam savienojošā pāra lietotājam šobrīd ir jābūt aktīvajā režīmā. NAT šķērsošanas mehānisms būs noderīgs, ja aktīvais režīms nav konfigurēts nevienā pusē. Parasti tas notiek tāpēc, ka ugunsmūris vai NAT ierīce bloķē ienākošos savienojumus.

Ja abi klienti ir aktīvajā režīmā

Iniciējošais klients nosūta komandu, kas satur savu IP adresi un portu $ConnectToMe citam klientam. Izmantojot šos datus, klients, kurš saņēma komandu, izveido savienojumu ar iniciatoru.

Ja kāds no klientiem ir pasīvā režīmā

Caur centrmezglu, pasīvs klients A nosūta komandu $RevConnectToMe aktīvs klients Bkas pēc tam atbild ar komandu $ConnectToMe.

Izmantojot NAT Traversal, lai savienotu lietotājus pasīvā režīmā
Kā serveris S iepriekš minētajā gadījumā ir līdzstrāvas centrmezgls

Ja abi klienti ir ieslēgti pasīvajā režīmā ADC centrmezgls

Klienti aiz dažādiem NAT A и B pievienojās centrmezglam S.

Izmantojot NAT Traversal, lai savienotu lietotājus pasīvā režīmā
Šādi izskatās savienojums ar centrmezglu no klienta puses A

Centrmezgls pieņem savienojumus ar portu 1511. Klients A veic izejošos savienojumus no sava privātā tīkla caur portu 50758. Hubs savukārt redz NAT ierīces adresi, strādā ar to un pārraida to klientiem atbilstoši to identifikatoriem.

Klients A nosūta uz serveri S ziņojums, kurā tiek lūgta palīdzība, lai izveidotu savienojumu ar klientu B.

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

Arī pasīvajā režīmā klients B, saņemot šo komandu, ir jāziņo par savu privāto portu, ko izmanto, lai izveidotu savienojumu ar centrmezglu, izmantojot NAT.

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

Pēc šīs informācijas saņemšanas klients A nekavējoties mēģina izveidot saikni ar klientu B un ziņo par savu privāto ostu.

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

Kāda ir interese? Interese ir novirzīt viena un tā paša savienojuma gala punktu, izveidojot jaunu savienojumu uz publisko adresi, izmantojot jau izmantotu privāto portu.

Izmantojot NAT Traversal, lai savienotu lietotājus pasīvā režīmā
Bingo!

Protams, šajā gadījumā klienta NAT B ir visas tiesības noraidīt pirmo savienojuma pieprasījumu no klienta A, bet viņa paša lūgums steidzas tieši šī savienojuma radītajā “bedrē”, un savienojums tiek izveidots.

Izmantojot NAT Traversal, lai savienotu lietotājus pasīvā režīmā
Ilustrācija ir piemērota visam procesam ar brīdinājumu protokols neizmanto sesijas atvērtos publiskos portus NAT-S, kā arī privātās adreses.

Epilogs

Raksta (sākotnējā) rakstīšanas laikā aptuveni puse DC klientu strādā pasīvā režīmā. Tas nozīmē, ka ceturto daļu no visiem iespējamiem savienojumiem nevar izveidot.

Nākotnē DC++ varēs apiet NATizmantojot esošos savienojumus A-S и B-S lai izveidotu tiešu klienta-klienta savienojumu, pat ja A и B ir pasīvā režīmā.

Avots: www.habr.com

Pievieno komentāru