¿Es posible asignar un puerto mediante UPnP, con jabón, para unirse a un puerto local en mi servidor HTTP está escuchando?

StackOverflow https://stackoverflow.com/questions/4357054

Pregunta

decir que estoy detrás de un router en 192.168.0.1, que conduce a la IP externa que es 192.168.1.64 (un módem DSL) que conduce a una dirección de Internet pública.

¿Es posible usar UPnP, a través de las peticiones SOAP a la pasarela, para trazar un mapa de mi puerto del servidor http local a un puerto arbitrario en esa dirección de Internet?

Lo siento, estoy totalmente novato en esta materia. Estoy probando el uso de masilla en el puerto 80 en la puerta de entrada, issueing HTTP con XML.

Post / UPnP / Control3 HTTP / 1.1 Cache-Control: no-cache Conexión: Cerrar Pragma: no-cache Content-Type: text / xml; charset = "UTF-8" User-Agent: Microsoft-Windows / UPnP 6.1 / 1.0 SOAPAction: "urn: schemas-UPnP-org: Servicio: WANIPConnection: 1 # AddPortMapping" ... ..

Gracias.

¿Fue útil?

Solución

Se puede ver un ejemplo bueno como parte del marco de coherencia DNLA / UPnP en un módulo de Python llamada "Perforadora" ( "puñetazos" agujeros en el cortafuegos, duh: o) que puede crear asignaciones de puertos de los puertos externos (como el puerto 8080) a los puertos internos de su elección:

http://coherence.beebits.net/browser/trunk/ golpeador / golpeador / base.py

módulos

La coherencia también están disponibles en Debian como el paquete python-coherencia. En Windows, así si se utiliza ActiveState Python.

Estoy asumiendo que usted quiere hacer esto de forma automática / programación como parte de algo que está creando, que es por lo que señaló a los anteriores marco de coherencia DNLA / UPnP en Python .

Si lo que desea es hacer esto como un hecho aislado manualmente, hay algunos excelentes de línea de comandos y GUI herramientas para crear asignaciones de puertos UPnP. En Macs, una herramienta de interfaz gráfica de usuario manual está disponible en http://www.codingmonkeys.de/portmap/index .html de los creadores de SubEtha Editar. En Windows, una herramienta de interfaz gráfica de usuario manual está disponible en http: //deusty.blogspot .com / 2008/07 / tcmportmapper-para-windows.html .

Yo recomendaría encarecidamente que juega con coherencia en Python, puede ser una experiencia divertida programación. Por otra parte, muchos programas diferentes que utilizan la red tendrán módulos UPnP para abrir los puertos y hacia adelante / asignarlos a su máquina local. Por ejemplo, uTorrent tiene uno, al igual que libtorrent / rTorrent, al igual que muchos otros.

Ver también los siguientes bibliotecas, ejemplos y herramientas con las implementaciones de los clientes UPnP de programación hacia adelante / MAP puertos en el router, si usted es reacio a Python (estos son en C y Perl):

http://miniupnp.tuxfamily.org/

https://trac.transmissionbt.com/browser/trunk/libtransmission/ upnp.c

http://www.howtoforge.com/administrating-your- gateway-dispositivo-via-UPnP

Tenga en cuenta que el segundo enlace, https://trac.transmissionbt.com/ navegador / trunk / libtransmission / upnp.c , es el código de la popular cliente de BitTorrent "Transmisión", que utiliza la biblioteca miniupnp (primer enlace).

Espero que esto haya respondido a su pregunta. Buena suerte con lo que estás haciendo.

EDIT: @kaneda: En respuesta a su comentario, usted está detrás de NAT dos, uno por el módem DSL y uno por el router inalámbrico, si he entendido bien. Sencilla UPnP no le ayudará aquí, tiene que ser capaz de UPnP una asignación de puerto tanto en el módem DSL y el enrutador (probablemente imposible, ya que el router probablemente no va a permitir que las peticiones UPnP dejan su puerto WAN), o un conjunto bien su módem DSL o router para tender un puente en lugar de NAT, por lo que sólo está detrás de una NAT.

EDIT 2: @kaneda: Otro posible camino alrededor del doble natting es reemplazar el router con una máquina Linux (por ejemplo, utilizando OpenWRT o similar) y UPnP para ejecutar su código en allí para reenviar el puerto de módem DSL, entonces también ejecutar el código basado en miniupnp en el host detrás del router para abrir aún más el router. En ese momento, sin embargo, ya que usted tiene el control del router puede ser que también acaba de crear una asignación de puerto estático y tienen que pasar a través de todos los protocolos de solicitudes UPnP para el módem DSL (contando iptables para avanzar selectivamente / NAT esos paquetes hacia atrás / sucesivamente, wHICH está más allá del alcance de esta respuesta).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top