Օգտագործելով NAT Traversal-ը՝ օգտվողներին պասիվ ռեժիմով միացնելու համար

Այս հոդվածը մուտքերից մեկի անվճար թարգմանությունն է DC++ մշակողների բլոգ.

Հեղինակի թույլտվությամբ (ինչպես նաև պարզության և հետաքրքրության համար) ես այն գունավորեցի հղումներով և լրացրեցի որոշ անձնական հետազոտություններով։

Ներածություն

Միացնող զույգի առնվազն մեկ օգտատեր այս պահին պետք է ակտիվ ռեժիմում լինի: NAT անցման մեխանիզմը օգտակար կլինի, երբ ակտիվ ռեժիմը կազմաձևված չէ որևէ կողմում: Սա սովորաբար պայմանավորված է մուտքային կապերը արգելափակող firewall-ով կամ NAT սարքով:

Եթե ​​երկու հաճախորդներն էլ ակտիվ ռեժիմում են

Նախաձեռնող հաճախորդը ուղարկում է հրաման, որը պարունակում է իր սեփական IP հասցեն և պորտը $ConnectToMe մեկ այլ հաճախորդի: Օգտագործելով այս տվյալները, պատվիրատուն, որը ստացել է հրամանը, կապ է հաստատում նախաձեռնողի հետ:

Եթե ​​հաճախորդներից մեկը գտնվում է պասիվ ռեժիմում

Հաբի միջոցով՝ պասիվ հաճախորդ A հրաման է ուղարկում $RevConnectToMe ակտիվ հաճախորդ Bորն այնուհետև պատասխանում է $ConnectToMe հրամանով:

Օգտագործելով NAT Traversal-ը՝ օգտվողներին պասիվ ռեժիմով միացնելու համար
Որպես սերվեր S վերը նշված դեպքում կա DC հանգույց

Եթե ​​երկու հաճախորդներն էլ պասիվ ռեժիմում են միացված ADC հանգույց

Հաճախորդներ տարբեր NAT-ների հետևում A и B միացել է հանգույցին S.

Օգտագործելով NAT Traversal-ը՝ օգտվողներին պասիվ ռեժիմով միացնելու համար
Այսպես է նայվում կապի հանգույցին հաճախորդի կողմից A

Հաբը ընդունում է միացումներ 1511 նավահանգստով: Հաճախորդ A 50758 պորտի միջոցով կատարում է ելքային կապեր իր մասնավոր ցանցից: Հաբը, իր հերթին, տեսնում է NAT սարքի հասցեն, աշխատում է դրա հետ և հեռարձակում այն ​​հաճախորդներին՝ ըստ նրանց նույնացուցիչների:

Հաճախորդը A ուղարկում է սերվեր S հաղորդագրություն՝ խնդրելով օգնել հաճախորդի հետ կապ հաստատելու համար B.

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

Նաև պասիվ ռեժիմում՝ հաճախորդը B, ստանալով այս հրամանը, պետք է զեկուցի իր մասնավոր պորտը, որն օգտագործվում է NAT-ի միջոցով հանգույցին միանալու համար:

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

Այս տեղեկությունը ստանալուց հետո հաճախորդը A անմիջապես փորձում է կապ հաստատել հաճախորդի հետ B և հայտնում է սեփական մասնավոր նավահանգիստը:

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

Ո՞րն է հետաքրքրությունը: Հետաքրքրությունը նույն կապի վերջնակետը տեղափոխելու մեջ է՝ արդեն իսկ օգտագործված մասնավոր պորտի միջոցով հանրային հասցեի նոր կապ ստեղծելու միջոցով:

Օգտագործելով NAT Traversal-ը՝ օգտվողներին պասիվ ռեժիմով միացնելու համար
Բինգո

Իհարկե, այս դեպքում հաճախորդը NAT B ունի բոլոր իրավունքներն՝ մերժելու հաճախորդի միացման առաջին հարցումը A, բայց իր իսկ խնդրանքը խուժում է հենց այս կապի ստեղծած «փոսը», և կապը հաստատվում է։

Օգտագործելով NAT Traversal-ը՝ օգտվողներին պասիվ ռեժիմով միացնելու համար
Նկարազարդումը հարմար է ողջ գործընթացի համար այն նախազգուշացման հետ արձանագրությունը չի օգտագործում նիստի կողմից բացված հանրային նավահանգիստները NAT-S, ինչպես նաև անձնական հասցեներ։

Վերջաբան

(բնօրինակ) հոդվածը գրելու պահին DC հաճախորդների մոտավորապես կեսն աշխատում է պասիվ ռեժիմով։ Սա նշանակում է, որ բոլոր հնարավոր կապերի քառորդը չի կարող իրականացվել։

Ապագայում DC++-ը կկարողանա շրջանցել NAT-ըօգտագործելով գոյություն ունեցող կապերը A-S и B-S հաստատել հաճախորդ-հաճախորդ ուղղակի կապ, նույնիսկ եթե A и B գտնվում են պասիվ ռեժիմում.

Source: www.habr.com

Добавить комментарий