Tradicionalmente los hosts que se encuentran tras un un dispositivo que natea no tienen posibilidad de abrir puertos adicionales para servicios especiales como FTP o SIP, esto causa una serie problemas como audio inaudible en el caso de SIP o conexiones rechazadas en FTP. Upnp nos permitirá abrir puertos desde la parte del cliente, esta caracterÃstica también puede llegar a ser útil en ciertos escenarios donde nos conviene poner un socket a la escucha y conectarnos desde el exterior, sin Upnp esta conexión serÃa rechazada por el equipo que natea.
Instalamos las librerias de python necesarias:
El script en cuestión es el siguiente:
import miniupnpc
upnp = miniupnpc.UPnP()
upnp.discoverdelay = 10
upnp.discover()
upnp.selectigd()
port = 4321
# addportmapping(external-port, protocol, internal-host, internal-port, description, remote-host)
upnp.addportmapping(port, 'TCP', upnp.lanaddr, port, 'testing', '')
Lo ejecutamos:
Ponemos a la escucha el socket:
Conectamos desde el exterior atravesando el nateo:
Trying WANIP...
Connected to WANIP.
Escape character is '^]'.
Con esto queda demostrado que un nateo no nos guarda de ciertos ataques mas complejos como este.