# IGD-Protokoll

Das Internet Gateway Device (IGD) Control Protokoll ist ein standardisiertes Geräte-Steuerungsprotokoll, das auf Universal Plug and Play (UPnP) basiert und von einigen NAT-Routern unterstützt wird. Es ist ein übliches Verfahren, Port-Weiterleitungen automatisch zu konfigurieren.

## Anwendung

Anwendungen, die Peer-to-Peer-Netze, Multiplayer-Spiele und Fernwartungsprogramme, zum Beispiel Remote-Desktop, oder Medienfreigaben über ein lokales Netzwerk verwenden, benötigen ein Verfahren, um über Heim- oder Geschäfts-Gateways zu kommunizieren. Ohne IGD-Protokoll muss das Gateway-Gerät manuell konfiguriert werden, um die Durchleitung des Datenverkehrs einer Anwendung aus dem Internet zu erlauben, was sehr fehleranfällig und zeitaufwändig ist. Mit Universal Plug and Play (UPnP) wurde eine Lösung speziell für NAT entwickelt, die heute unter vielen Betriebssystemen verfügbar gemacht werden kann.
IGD kann dem Benutzer die folgenden Aufgaben erleichtern:
* Ermittlung der öffentlichen (externen) IP-Adresse
* Auflistung der vorhandenen Port-Weiterleitungen
* Hinzufügen und Entfernen von Port-Weiterleitungen
* Ablaufzeiten für Weiterleitungen zuordnen

## UPnP IGDv2

UPnP IGDv2, veröffentlicht 2010, fügt IPv6-Unterstützung hinzu und ändert das Verhalten beim Setzen einer unendlichen Lease-Time mit einem Wert von 0. Die Spezifikationen sind abwärtskompatibel, aber es gibt Kompatibilitätsprobleme, z. B. mit dem Microsoft-Client.

## Kompatibilitätsprobleme

Aufgrund der unterschiedlichen Interpretationen der sehr umfangreichen, eigentlich abwärtskompatiblen IGDv1- und IGDv2-Spezifikationen gibt es zahlreiche Kompatibilitätsprobleme. Eines davon ist der UPnP IGD-Client, in aktuellen Microsoft Windows- und Xbox-Systemen mit zertifizierten IGDv2-Routern. Das Kompatibilitätsproblem besteht noch immer seit der Einführung des IGDv1-Clients in Windows XP im Jahr 2001, und einem IGDv2-Router ohne einem Workaround das Router-Portweiterleitungen unmöglich macht.
Wenn UPnP nur zur Steuerung von Router-Portweiterleitungen und Pinholes verwendet wird, gibt es alternative, neuere viel einfachere und leichtgewichtige Protokolle wie das PCP und das NAT-PMP, die beide von der IETF als RFCs standardisiert wurden. Bei diesen Alternativen sind bisher keine Kompatibilitätsprobleme zwischen verschiedenen Clients und Servern bekannt, aber die Verbreitung ist noch gering. Bei Routern für Endverbraucher ist derzeit nur von AVM und den Open-Source-Router-Softwareprojekten OpenWrt, OPNsense und pfSense bekannt, dass sie PCP als Alternative zu UPnP unterstützen. Die AVM Fritz!Box UPnP IGDv2 und PCP Implementierung ist seit ihrer Einführung sehr fehlerhaft. In vielen Fällen funktioniert sie nicht.

## Sicherheitsrisiken

Mit Hilfe von Skriptsprachen auf einer Webseite können aber auch neue Risiken und Gefahren durch das IGD-Protokoll herbeigeführt werden, falls die Veränderung der Konfiguration auf dem Gateway-Gerät zuvor erlaubt worden ist. Dadurch wäre es möglich, einen Computer oder auch ein ganzes Netzwerk unter die Kontrolle fremder Anwender zu bringen, was oft in krimineller Absicht erfolgt. Viele DSL-Router, wie zum Beispiel die in Deutschland weit verbreiteten Fritz!Boxen, unterstützen dieses Verfahren, die Veränderung der Konfiguration muss jedoch meist vom Benutzer extra über die Weboberfläche freigegeben werden, sofern der Zugang zu dem Gerät mittels eines Passwortes vorher gesichert wurde.

## Internal

Über SSDP kann der Host nach im Netzwerk vorhandenen Geräten suchen lassen, die dann mit Hilfe eines Netzwerkprotokolls wie SOAP gesteuert werden können. Die Suchte nach verfügbaren IGDv1/IGDv2-Geräten erfolgt mit nur einem M-SEARCH nach IGDv1. Eine Suchanfrage wird über HTTP und Port 1900 an die Multicast-Adresse 239.255.255.250 verschickt: