Tento článek je volným překladem jednoho z příspěvků na .
Se souhlasem autora (a také pro názornost a zajímavost) jsem jej obohatil odkazy a některými osobními poznatky.
Úvod
V současnosti musí být alespoň jeden uživatel z páru připojených ve aktivním režimu. Mechanismus „obejití“ NAT bude užitečný, pokud není aktivní režim nastaven na žádné ze stran. K tomu obvykle dochází kvůli blokování příchozích připojení firewallem nebo zařízením NAT.
Pokud jsou oba klienti v aktivním režimu
Klient-initiátor posílá obsahující jeho vlastní IP adresu a port příkaz druhé straně. Pomocí těchto údajů se klient, který příkaz obdržel, připojuje k iniciátorovi.
Pokud je jeden z klientů v pasivním režimu
Pasivní klient prostřednictvím hubu A odesílá příkaz aktivnímu klientovi B, který následně odpovídá příkazem $ConnectToMe.

Jako server S slouží v tomto případě DC hub
Pokud jsou oba klienti v pasivním režimu na
Klienti nacházející se za různými NAT se A a B připojili k hubu S.

Takto vypadá připojení k hubu z pohledu klienta A
Hub přijímá připojení na portu 1511. Klient A provádí odchozí spojení ze své soukromé sítě přes port 50758. Hub, na druhé straně, vidí adresu zařízení NAT, pracuje s ní a přenáší ji klientům podle jejich identifikátorů.
Zákazník A odesílá serveru S zprávu s žádostí o pomoc při spojení s klientem B.
Hub: [Outgoing][178.79.159.147:1511] DRCM AAAA BBBB ADCS/0.10 1649612991
Být také v pasivním režimu, klient B, po obdržení tohoto příkazu, musí sdělit svůj privátní port, který se používá pro spojení s hubem prostřednictvím NAT.
Hub: [Incoming][178.79.159.147:1511] DNAT BBBB AAAA ADCS/0.10 59566 1649612991
Po obdržení těchto informací se klient A ihned pokusí navázat spojení s klientem B a sdělí svůj vlastní privátní port.
Hub: [Outgoing][178.79.159.147:1511] D<b>RNT</b> AAAA BBBB ADCS/0.10 <b>50758</b> 1649612991V čem je zajímavost? Zajímavost spočívá ve posunu koncového bodu stejného spojení prostřednictvím vytvoření nového připojení na veřejnou adresu přes již používaný privátní port.

Bingo!
Bezpochyby má přitom NAT klienta B plné právo odmítnout první žádost o připojení od klienta A, ale jeho vlastní žádost spěje do "díry", kterou vytvořilo toto spojení, a spojení se přesto vztyčí.

Ilustrace, která se hodí k celému procesu, s upozorněním, že nevyužívá veřejné porty otevřené relací NAT‒S, jakož i soukromé adresy.
Epilog
V době psaní (původního) článku přibližně polovina klientů DC pracuje v pasivním režimu. To znamená, že čtvrtina všech možných spojení nemůže být realizována.
Dále , využívajíc existující spojení A‒S a B‒S pro navázání přímého spojení klient‒klient, i když A a B jsou v pasivním režimu.
Zdroj: habr.com
