Ist es möglich, um einen Anschluss mit UPnP, mit SOAP abzubilden, zu binden, an einen lokalen Port, an dem meine http-Server lauscht?

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

Frage

Sag mal, ich bin hinter einem Router an 192.168.0.1, was dazu führt, externen IP, die 192.168.1.64 (ein DSL-Modem), das führt zu einer öffentlichen Internet-Adresse ist.

Ist es möglich, mit UPnP, über SOAP-Anforderungen, zum Gateway meines http-Server-Port lokal für einen beliebig Port an dieser öffentlichen Internet-Adresse zuzuordnen?

Sorry, ich bin Neuling total auf diese Fragen. Ich teste Putty mit auf Port 80 auf Gateway, Verlegerung http mit xml.

POST / upnp / control3 HTTP / 1.1 Cache-Control: no-cache Anschluss: Schließen Pragma: no-cache Content-Type: text / xml; charset = "UTF-8" User-Agent: Microsoft-Windows / 6.1 UPnP / 1.0 Soapaction: "urn: schemas-upnp-org: Service: WANIPConnection: 1 # AddPortMapping" ... ..

Danke.

War es hilfreich?

Lösung

Sie können ein gutes Beispiel als Teil des Coherence DNLA / UPnP-Framework in einer Python-Modul namens "Puncher" ( "Schläge" Löcher in der Firewall, duh!: O) sehen, die Port-Mappings von externen Ports erstellen kann (wie Port 8080) an interne Ports Ihrer Wahl:

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

Die Coherence-Module sind auch auf Debian als Python-Kohärenz-Paket zur Verfügung. Unter Windows als auch bei Verwendung von Activestate Python.

Ich gehe davon aus Sie dies automatisch tun wollen / programmatisch als Teil etwas, das Sie erstellen, weshalb ich Sie auf die oben aufgezeigt Coherence DNLA / UPnP-Framework in Python .

Wenn Sie gerade dies als einmalige tun wollen manuell, gibt es einige ausgezeichnete Befehlszeile und GUI-Tools UPnP-Port-Mappings zu erstellen. Auf Macs, ist ein manuelles GUI-Tool finden Sie unter http://www.codingmonkeys.de/portmap/index .html von den Machern von Subethaedit. Unter Windows ist ein manuelles GUI-Tool finden Sie unter http: //deusty.blogspot .com / 2008/07 / tcmportmapper-for-windows.html .

Ich möchte Sie spielen mit Coherence in Python wird dringend empfohlen, kann es eine Spaß Programmiererfahrung sein. viele verschiedene Programme, die das Netzwerk nutzen müssen UPnP-Module zu öffnen Ports und Vorwärts / map sie auf den lokalen Rechner Alternativ. Zum Beispiel hat µTorrent ein, ebenso wie libtorrent / rtorrent, wie viele andere.

Siehe auch die folgenden Bibliotheken, Beispiele und Tools mit UPnP-Client-Implementierungen programmatisch vorwärts / map-Ports auf dem Router, wenn Sie Python abgeneigt sind (diese sind in C und Perl):

http://miniupnp.tuxfamily.org/

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

http://www.howtoforge.com/administrating-your- Gateway-Gerät-via-upnp

Beachten Sie, dass die zweite Verbindung, https://trac.transmissionbt.com/ Browser / trunk / libtransmission / upnp.c , ist Code aus dem beliebten BitTorrent-Client "Transmission", die die miniupnp Bibliothek (erster Link) verwendet wird.

Ich hoffe, das hat Ihre Frage beantwortet. Viel Glück mit dem, was du tust.

EDIT: @kaneda: Als Antwort auf Ihren Kommentar, Sie sind hinter zwei NATs, ein von Ihrem DSL-Modem und einem von Ihrem WLAN-Router, wenn ich Sie richtig verstehe. Einfache UPnP werden Sie hier nicht helfen, müssen Sie sowohl auf UPnP, um entweder der Lage sein, eine Port-Mapping auf dem DSL-Modem und dem Router (wahrscheinlich nicht möglich, da der Router wahrscheinlich nicht zulassen, UPnP-Anfragen lassen sich bei einem WAN-Port), oder stellen Sie entweder Ihre DSL-Modem oder der Router zu überbrücken, anstatt NAT, so dass Sie nur hinter einem NAT sind.

EDIT 2: @kaneda: Eine weitere Möglichkeit, um die Doppel NATting ist der Router mit einer Linux-Box (zB durch Verwendung OpenWRT oder ähnliches) zu ersetzen und Ihren upnp Code auszuführen dort zu leitet den DSL-Modem-Anschluss, dann auch den miniupnp-basierten Code auf dem Host hinter dem Router laufen, um die Router zu öffnen. An diesem Punkt jedoch, da Sie die Kontrolle über die Router haben könnten Sie auch nur ein statisches Port-Mapping erstellen und es Pass-Through alle UPNP-Protokoll Anfragen an das DSL-Modem (von iptables, um selektiv vorwärts / NAT die Paketen zurück zu sagen / her, wHICH sprengt den Rahmen dieser Antwort ist).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top