E 'possibile mappare una porta mediante UPnP, con SOAP, di legarsi a una porta locale dove il mio server HTTP è in ascolto?

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

Domanda

Di ', io sono dietro un router a 192.168.0.1, che porta a IP esterno che è 192.168.1.64 (un modem DSL) che porta ad un indirizzo Internet pubblico.

E 'possibile utilizzare UPnP, tramite richieste SOAP Gateway, per mappare la mia porta del server HTTP locale ad una porta arbitraria a tale indirizzo Internet pubblica?

Siamo spiacenti, io sono totalmente newbie su questo importa. Sto testando utilizzando mastice sulla porta 80 sul gateway, redigere http con XML.

POST / UPnP / control3 HTTP / 1.1 Cache-Control: no-cache Collegamento: Chiudi Pragma: no-cache Content-Type: text / xml; charset = "utf-8" User-Agent: Microsoft-Windows / 6.1 UPnP / 1.0 SOAPAction: "urn: schemas-UPnP-org: Servizio: WANIPConnection: 1 # AddPortMapping" ... ..

Grazie.

È stato utile?

Soluzione

Si può vedere un buon esempio, nell'ambito del quadro di coerenza DNLA / UPnP in un modulo Python chiamato "Puncher" ( "pugni" buchi nel firewall, duh: o) che può creare mappature di porta di porte esterne (come porta 8080) per le porte interne della tua scelta:

http://coherence.beebits.net/browser/trunk/ puncher / perforazione / base.py

Moduli

??La coerenza sono inoltre disponibili su Debian come pacchetto python-coerenza. Su Windows come pure se si utilizza ActiveState Python.

Io parto dal presupposto che si vuole fare questo automaticamente / programmazione come parte di qualcosa che si sta creando, è per questo che ho fatto a quanto sopra   quadro di coerenza DNLA / UPnP in Python .

Se si desidera solo per fare questo come un one-off manualmente, ci sono alcuni ottimi riga di comando e GUI strumenti per creare mappature di porta UPnP. Su Mac, uno strumento GUI manuale è disponibile all'indirizzo http://www.codingmonkeys.de/portmap/index .html dai creatori di SubEtha Edit. Su Windows, uno strumento GUI manuale è disponibile all'indirizzo http: //deusty.blogspot .com / 2008/07 / tcmportmapper-per-windows.html .

che vi consiglio vivamente di giocare con coerenza in Python, può essere un'esperienza divertente di programmazione. In alternativa, molti programmi diversi che utilizzano la rete dovranno moduli UPnP per aprire le porte e avanti / mapparli sulla macchina locale. Ad esempio, uTorrent ha uno, come fa libtorrent / rtorrent, come fanno molti altri.

Vedere anche i seguenti biblioteche, esempi e strumenti con UPnP implementazioni client a livello di codice in avanti / map porte sul router, se si è contrari a Python (questi sono in C e Perl):

http://miniupnp.tuxfamily.org/

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

http://www.howtoforge.com/administrating-your- Gateway-device-via-UPnP

Si noti che il secondo collegamento, https://trac.transmissionbt.com/ Browser / trunk / libtransmission / upnp.c , è il codice del popolare client BitTorrent "Transmission", che utilizza la libreria miniupnp (primo anello).

Spero che questo ha risposto alla tua domanda. Buona fortuna con quello che stai facendo.

Modifica @kaneda: In risposta al tuo commento, ci si trova dietro due NATs, una per il modem DSL e uno per il router wireless, se ho capito bene. Semplice UPnP non vi aiuterà qui, è necessario essere sia in grado di UPnP una mappatura delle porte su entrambi i modem DSL e il router (probabilmente impossibile dal momento che il router probabilmente non permetterà che le richieste UPnP lasciare la sua porta WAN), o impostare sia il vostro modem DSL o il router per colmare invece di NAT, in modo che siano solo dietro una NAT.

EDIT 2: @kaneda: Un altro modo possibile intorno alla doppia natting è quello di sostituire il router con una macchina Linux (ad esempio utilizzando OpenWRT o simili) e per eseguire il codice su UPnP lì a inoltrare la porta modem DSL, quindi anche eseguire il codice miniupnp basata sul proprio host dietro il router per aprire ulteriormente il router. A quel punto, però, dal momento che si ha il controllo del router si potrebbe anche solo creare una mappatura delle porte statiche e l'abbiano in pass-through tutte le richieste di protocollo UPnP per il modem DSL (dicendo iptables in modo selettivo in avanti / NAT quei pacchetti back / indietro, which è oltre la portata di questa risposta).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top