HowTo: UPNP Portwardiing Client für IGD

Status
Für weitere Antworten geschlossen.

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
14
Punkte
84
Ich besitze einen TP-Link Router TL-WR1043ND, der unter Portwarding - Virtual Servers leider keine unterschiedlichen Ports für intern und extern zuläßt. Ich könnte zwar ein DD-WRT als Firmware aufspielen, die dies dann unterstützen würde, konnte mich dazu aber nicht durchringen.
Da der Router auch Portwarding per UPNP unterstützt und das sogar mit unterschiedlichen Ports für intern und extern :) ging ich auf die Suche nach einem UPNP Client für IGD (Internet Gateway Device) mit dem ich diese Einstellungen durchführen kann.

Anmerkung: Die Routersteuerung im DSM erlaubt für meinen Router ebenfalls keine getrennten Ports.

Hinweis: Die Einstellungen per UPNP sind nur solange aktiv, wie der ausgeführte Client vorhanden ist. Wer also seine DS nicht ständig im lokalen Netz hat, der sollte sich entweder ein Start/Stop-Skript erstellen und damit die Einstellungen vornehmen oder auf UPNP verzichten.

Achtung: Man sollte verhindern, dass man selbst oder jemand anderes dieses Tool von ausserhalb starten kann. Ob das Tool von allein nur auf lokalen IP's funktioniert weiss ich leider nicht.

Gefunden habe ich das Projekt Miniupnpd, welches einen Client und Daemon bereitstellt, von dem ich aber nur den Client benutze. Den Daemon gibt es auch als IPKG Paket, dort fehlt allerdings der Client. Deshalb muss man sich das kleine Tool selbst compilieren. Da ich schon alle Compilertools und noch weitere auf meiner DS hatte, kann ich nicht genau sagen, was benötigt wird; gcc, binutils und automake sollten aber reichen. Hier nun die durchzuführenden Schritte (Bisher auf x86 getestet):

Zuerst wechseln wir in das Verzeichnis /usr/src oder erstellen selbiges und wechseln anschließend.

Archiv herunterladen und enpacken
Rich (BBCode):
wget http://miniupnp.free.fr/files/download.php?file=miniupnpc-1.5.20110314.tar.gz
tar xf miniupnpc-1.5.20110314.tar.gz
cd miniupnpc-1.5.20110314
Makefile anpassen (Zeile 12)
original
Rich (BBCode):
CC ?= gcc
modifiziert
Rich (BBCode):
CC = gcc
Compilieren und Installieren
Das Compilieren hatte auf meiner DS209+ (powerpc e500-2) nicht auf Anhieb funktioniert, da bei mir die Datei /opt/lib/gcc/powerpc-linux-gnuspe/3.4.6/include/syslimits.h fehlte. Auch nach einem Reinstall vom gcc war diese Datei nicht vorhanden. Da diese für alle System identisch ist, hier der Inhalt zum selbst erstellen. Beim wem diese Datei vorhanden ist, kann das Erstellen der Datei überspringen.
Rich (BBCode):
/* syslimits.h stands for the system's own limits.h file.
   If we can use it ok unmodified, then we install this text.
   If fixincludes fixes it, then the fixed version is installed
   instead of this text.  */

#define _GCC_NEXT_LIMITS_H              /* tell gcc's limits.h to recurse */
#include_next <limits.h>
#undef _GCC_NEXT_LIMITS_H
Rich (BBCode):
make
make install
Nun kann man schon mit upnpc -s den Status abrufen und prüfen, ob auch ein unterstütztes Gerät gefunden wird. Die Rückmeldung sollte ungefähr so aussehen:
Rich (BBCode):
upnpc : miniupnpc library test client. (c) 2006-2011 Thomas Bernard
Go to http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
for more information.
List of UPNP devices found on the network :
 desc: http://xxx.xxx.xxx.xxx:xxxxx/igd.xml
 st: urn:schemas-upnp-org:device:InternetGatewayDevice:1

Found valid IGD : http://xxx.xxx.xxx.xxx:xxxxx/ipc
Local LAN ip address : xxx.xxx.xxx.xxx
Connection Type : IP_Routed
Status : Connected, uptime=102s, LastConnectionError : ERROR_NONE
  Time started : Mon Apr 18 19:19:56 2011
MaxBitRateDown : 100000 bps   MaxBitRateUp 100000 bps
ExternalIPAddress = xxx.xxx.xxx.xxx
Bytes:   Sent: 2735188860       Recv: 2959387834
Packets: Sent: 384355775        Recv: 697615279
Befehle (Liste mit Eingabe von upnpc ohne Parameter)
Rich (BBCode):
upnpc : miniupnpc library test client. (c) 2006-2011 Thomas Bernard
Go to http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
for more information.
Usage : upnpc [options] -a ip port external_port protocol
                Add port redirection
        upnpc [options] -d external_port protocol [port2 protocol2] [...]
                Delete port redirection
        upnpc [options] -s
                Get Connection status
        upnpc [options] -l
                List redirections
        upnpc [options] -L
                List redirections (using GetListOfPortMappings)
        upnpc [options] -r port1 protocol1 [port2 protocol2] [...]
                Add all redirections to the current host

protocol is UDP or TCP
Options:
  -u url : bypass discovery process by providing the XML root description url.
  -m address : provide ip address of the interface to use for sending SSDP multicast packets.
  -p path : use this path for MiniSSDPd socket.
Hoffe das es für alle verständlich ist und sich einige User melden, die dies auf ihrer DS erfolgreich kompliert haben. Ein weiterer Einsatzbereich wäre z.B. die Ermittlung der externen IP ohne dafür eine Seite im Internet aufzurufen.
Beispiel:
Rich (BBCode):
upnpc -s | grep ExternalIPAddress | cut -d " " -f3
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat