Este așa natură simetrică atât de teribilă

  • Full-con NAT;
  • Adresă con restricție NAT;
  • Port con-restricție NAT;
  • Simetric NAT

De fapt, acest lucru nu este adevărat. Mai exact, nu chiar adevărat. Orice NAT are două caracteristici principale:

1) filtrul de pachete primite;
2) regula de mapare a porturilor.

Simetric NAT

Și acum mai detaliat despre NAT simetric. Faceți imediat o rezervare că filtrele pachetelor primite pot fi și ele (fără filtru, limitat pe adrese sau restricționat la port). Iar singura diferență a acestui tip de NAT față de cele anterioare este doar alegerea portului de ieșire de pe router, acesta va fi aproape sigur diferit de portul sursă al clientului. Revenind la exemplul anterior, reflexia poate fi după cum urmează: 192.168.10.24:62145 -> 1.2.3.4:1274.

Acest port este ales aleatoriu (bine, sau nu accidental, dar la rândul său, dar nu contează, deoarece nu putem influența alegerea lui din afară). Dar există anumite reguli, sunt similare cu filtrul de pachete primite:

Există, de asemenea, reguli pentru selectarea portului următor:
Poate fi un fel de delta (+ 1 / -1 sau + 10 / -10) sau chiar de fiecare dată din întâmplare.
În plus, am văzut un NAT în care fiecare port ulterior a fost scos de la cel precedent pentru un număr aleatoriu, dar întotdeauna un multiplu de 4096.

În loc să încheiem

Deci, este de înțeles faptul că cunoașterea regulii de alocare a porturilor și a deltei pot ghici care port va ieși din pachetul de ieșire, respectiv pentru a rupe același NAT simetric. Desigur, în cazul alegerii unui port destul de accidental, acest accent nu va funcționa.

Ei bine, am ajuns la esența și scopul articolului. Răspundeți la întrebare

"Este posibil să se definească o regulă pentru distribuirea porturilor și a deltei, fiind în spatele NAT'om?"

Apoi invit cititorii să mă ajute cu statisticile. În imensitatea internetului, a fost găsit un simplu client de paralizie, un pic înțepat cu un ciocan și așa sa întâmplat:

Utilizatorii Linux știu cum să compileze.

gcc -lpthread -o stun stun.c

Sub Windows este perfect compilat de studio, aici binar. dacă studioul nu este la îndemână.

Da, iartă-mă stun.counterpath.net pentru efectul hub :)

Iată rezultatele mele, dar nu am NAT simetric și nu mă interesează:

Rezultate
teste: 1010
NAT prezintă: 1
primul port conservat: 1
păstrează portul: 0
tip: Port restricționat NAT
porturi mapate: 55907 55907 55907 55907

Vă mulțumesc tuturor pentru ajutor!

Articole similare