Porturile deschise pentru nat folosind nat-pmp și upnp igd

Porturile deschise pentru nat folosind nat-pmp și upnp igd

Mai devreme am auzit de multe ori că UPnP știe cum să deschidă porturi în mod independent (pentru a produce Port Forwarding pe un router) la cererea gazdei din rețeaua locală. Cu toate acestea, modul în care se întâmplă acest lucru și ce protocoale sunt utilizate pentru acest lucru, a fost anterior acoperită pentru mine cu un nor de ceață.







În acest articol, vreau să descriu pe scurt modul în care funcționează două mecanisme de redirecționare a porturilor, și anume Protocolul de cartografiere a porturilor NAT și Protocolul dispozitivului Internet Gateway (IGD). care este inclus în setul de protocoale UPnP. Spre surpriza mea, am constatat că în ruletă informațiile despre această problemă sunt mai mult decât slabe, ceea ce ma determinat să scriu această notă.

Pentru început, vă voi oferi o scurtă întrebare frecventă:

Î: Pentru ce sunt aceste protocoale?
R: Pentru a forma regulile pentru redirecționarea unui port specific TCP / UDP (port forwarding) pe router, nu manual, ci "automat", adică la cererea gazdei din rețeaua internă.

Î: Cum este implementat acest lucru?
R: Dispozitivul din spatele NAT trimite o cerere către router indicând numerele portului intern și extern și tipul protocolului (TCP / UDP). Dacă portul extern specificat este liber, routerul generează o regulă de traducere și raportează computerului solicitant despre executarea cu succes a cererii.

Acum, luați în considerare funcționarea acestor protocoale mai detaliat (sub tăiere).

Port Mapping Protocol

NAT-PMP este descrisă în RFC 6886. Pentru lucrarea sa, utilizează portul UDP al serverului 5351.

Luați în considerare funcționarea protocolului pe un exemplu specific - clientul torrent Vuze 5.7 pentru Windows 7.

Notă: NAT-PMP în Vuze este dezactivat implicit. Acesta trebuie să fie activat în setările pluginului.

1. Porniți Wireshark. În linia de filtrare, introduceți parametrul nat-pmp
2. Rularea Vuze.
3. Opriți interceptarea pachetelor, vedeți rezultatele.

Am urmatoarele:

În total, vedem 6 pachete (3 cereri și 3 răspunsuri).

Porturile deschise pentru nat folosind nat-pmp și upnp igd

Parametrul solicitat de mapare a portului de viață este de așteptat să însemne durata de viață a înregistrării în tabelul de traducere.

Porturile deschise pentru nat folosind nat-pmp și upnp igd

După cum se poate vedea, ruterul a creat probabil difuzarea solicitată și a răspuns cu codul de succes. Parametrul Seconds Since Start of Epoch este timpul de la inițializarea tabelului de traducere (de ex. De la ultima repornire a routerului).







Maparea porturilor TCP este exact aceeași și diferă numai în valoarea câmpului Opcode.

După ce aplicația a încetat să utilizeze aceste porturi, poate trimite o cerere către router pentru a șterge difuzarea.
Principala diferență față de cererea de ștergere din cererea de creare este aceea că parametrul Lifetime este setat la zero.

Asta se întâmplă dacă închidem Vuze.

Porturile deschise pentru nat folosind nat-pmp și upnp igd

Porturile deschise pentru nat folosind nat-pmp și upnp igd

În concluzie, se ia în considerare considerarea NAT-PMP, propun să trec la un IGD UPnP oarecum mai sofisticat.

Protocolul dispozitivelor de grup Internet

Pentru a le schimba mesajele, acest protocol folosește SOAP.

Cu toate acestea, spre deosebire de NAT-PMP, IGD nu utilizează numărul portului fix al serverului, deci înainte de a putea schimba mesaje, trebuie să cunoașteți mai întâi acest port. Acest lucru se face folosind protocolul SSDP (acest protocol face parte din UPnP și se utilizează pentru detectarea serviciilor).

Porturile deschise pentru nat folosind nat-pmp și upnp igd

Router-ul generează răspunsul și îl trimite ca unicast:

Porturile deschise pentru nat folosind nat-pmp și upnp igd

În interiorul răspunsului, putem vedea adresa URL pentru interacțiunea cu router-ul prin intermediul protocolului IGD.

Apoi, Vuze se conectează la ruter la adresa URL specificată și primește XML cu informații despre acest dispozitiv, inclusiv un set de URI pentru a controla unele dintre funcțiile routerului. După ce URI-ul dorit este găsit în rootDesc.xml, Vuze trimite o cerere SOAP pentru traducerea NAT pe URI găsită.

Notă: înainte de a solicita crearea postului de difuzare, Vuze a determinat routerul să afișeze toate funcțiile Port Forwarding disponibile. Pentru ceea ce sa făcut, nu pot decât să ghicesc.

Cerere SOAP pentru a crea traducerea portului UDP:

Porturile deschise pentru nat folosind nat-pmp și upnp igd

Așa cum am menționat mai devreme, Vuze a luat de la rootDesc.xml URI-ul dorit (merge imediat după POST). Pentru a adăuga o traducere, utilizați o funcție numită AddPortMapping.

Similar cu NAT-PMP, la închiderea clientului torrent, mapările porturilor abandonate sunt șterse. Aceasta se face prin funcția DeletePortMapping:

Porturile deschise pentru nat folosind nat-pmp și upnp igd

Puteți vedea că pentru a șterge o regulă, trebuie doar să specificați numai tipul protocolului (UDP) și numărul portului extern, fără a specifica ceilalți parametri.

concluzie

În acest articol am luat în considerare două moduri destul de simple de a crea reguli pentru redirecționarea portului pe ruterul de acasă prin comanda de la gazdă din rețeaua locală. Rămâne doar să rețineți că, în cazul în care considerați că activitatea acestor protocoale amenința securitatea rețelei de domiciliu, pot încerca să opriți (deși, desigur, este mult mai bine să încredințeze utilitatea de securitate, care este proiectat pentru acest scop - firewall-ul). În cazul meu Zyxel Giga al II-lea, care, de altfel, și toate testele au fost efectuate, aceasta se face CLI-comandă nu UPnP serviciu (este demn de remarcat faptul că, în interfața web, opțiunea de a activa / UPnP dezactiva absente).







Trimiteți-le prietenilor: