Est-il possible de mapper un port en utilisant UPnP, SOAP, de se lier à un port local où mon serveur http est à l'écoute?

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

Question

Dis, je suis derrière un routeur à 192.168.0.1, ce qui conduit à ip externe qui est 192.168.1.64 (un modem dsl) qui conduit à une adresse Internet.

Est-il possible à l'aide uPnP, via des requêtes SOAP à la passerelle, à la carte mon port serveur HTTP local à un port arbitraire à cette adresse Internet?

Désolé, je suis débutant tout à fait sur ce sujet. Je teste en utilisant Putty sur le port 80 sur la passerelle, issueing http XML.

POST / upnp / Control3 HTTP / 1.1 Cache-Control: no-cache Connexion: Fermer 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" ... ..

Merci.

Était-ce utile?

La solution

Vous pouvez voir un bon exemple dans le cadre du cadre de cohérence DNLA / UPnP dans un module Python appelé (trous « de coups de poing » dans votre pare-feu, duh!: O) « Puncher » qui peut créer le mappage des ports des ports externes (comme le port 8080) aux ports internes de votre choix:

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

Les modules cohérence sont également disponibles sur le paquet Debian-cohérence de python. Sous Windows et si vous utilisez ActiveState Python.

Je suppose que vous voulez faire cela automatiquement / programme dans le cadre de quelque chose que vous créez, ce qui est la raison pour laquelle je vous ai fait remarquer au-dessus   Cohérence DNLA / UPnP framework en Python .

Si vous voulez juste faire comme unique manuellement, il y a quelques excellents outils de ligne de commande et interface graphique pour créer le mappage des ports UPnP. Sur Mac, un outil graphique manuel est disponible à http://www.codingmonkeys.de/portmap/index .html des créateurs de SubEtha Edit. Sous Windows, un outil graphique manuel est disponible à l'adresse http: //deusty.blogspot .com / 2008/07 / tcmportmapper-pour-windows.html .

Je vous recommandons fortement de jouer avec cohérence en Python, il peut être une expérience de programmation amusante. Sinon, de nombreux programmes différents qui utilisent le réseau comprendra des modules UPnP pour ouvrir les ports et avant / les associez à votre machine locale. Par exemple, uTorrent a un, tout comme libtorrent / rtorrent, comme beaucoup d'autres.

Voir aussi les bibliothèques suivantes, des exemples et des outils avec des implémentations client UPnP pour accéder à / carte programmation ports sur votre routeur, si vous êtes opposé à Python (ceux-ci sont en C et Perl):

http://miniupnp.tuxfamily.org/

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

http://www.howtoforge.com/administrating-your- passerelle périphérique via UPnP

Notez que le deuxième lien, https://trac.transmissionbt.com/ navigateur / trunk / libtransmission / upnp.c , est le code du client BitTorrent populaire "Transmission" qui utilise la bibliothèque miniupnp (premier lien).

J'espère que cela a répondu à votre question. Bonne chance avec tout ce que vous faites.

EDIT: @kaneda: En réponse à votre commentaire, vous êtes derrière deux NATS un par votre modem DSL et un par votre routeur sans fil, si je vous comprends bien. Simple UPnP ne vous aidera pas ici, vous devez être soit en mesure de UPnP un mappage de port sur le modem DSL et le routeur (probablement impossible depuis votre routeur ne sera probablement pas laisser les requêtes UPnP quitter son port WAN), ou un ensemble soit votre modem DSL ou votre routeur NAT plutôt que pont entre, de sorte que vous êtes seulement derrière un NAT.

EDIT 2: @kaneda: Une autre façon possible autour de la double NATting est de remplacer votre routeur avec une boîte Linux (par exemple en utilisant OpenWRT ou similaire) et d'exécuter votre code sur upnp là pour transférer le port modem DSL, puis exécutez également le code basé miniupnp sur votre hôte derrière le routeur pour ouvrir davantage le routeur. À ce moment-là, cependant, puisque vous avez le contrôle du routeur, vous pourriez tout aussi bien créer un mappage de port statique et avoir pass-through toutes les demandes de protocole UPNP au modem DSL (en disant iptables sélectivement vers l'avant / NAT les paquets de retour / etc., wUEL est au-delà de la portée de cette réponse).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top