ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ NAT Traversal для соСдинСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² пассивном Ρ€Π΅ΠΆΠΈΠΌΠ΅

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ прСдставляСт собой Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· записСй Π² Π±Π»ΠΎΠ³Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‡ΠΈΠΊΠΎΠ² DC++.

Π‘ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π°Π²Ρ‚ΠΎΡ€Π° (Π° Ρ‚Π°ΠΊΠΆΠ΅ для наглядности ΠΈ интСрСса Ρ€Π°Π΄ΠΈ) я расцвСтил Π΅Ρ‘ ссылками ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΠ» Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ изысканиями.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π’ настоящСС врСмя ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈΠ· ΠΏΠ°Ρ€Ρ‹ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰ΠΈΡ…ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Β«ΠΎΠ±Ρ…ΠΎΠ΄Π°Β» NAT Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π² случаС, ΠΊΠΎΠ³Π΄Π° Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ Π½Π΅ настроСн Π½ΠΈ Ρƒ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· сторон. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это происходит ΠΏΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ входящих соСдинСний брандмауэром ΠΈΠ»ΠΈ устройством 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 находятся Π² пассивном Ρ€Π΅ΠΆΠΈΠΌΠ΅.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com