The Cable Guy – Juni 2005

Die Verarbeitung von TCP/IP-Paketen

Veröffentlicht: 02. Jun 2005
cable_guy

Von The Cable Guy

Alle auf Deutsch verfügbaren Cable Guy-Kolumnen finden Sie hier.

Auf dieser Seite
EinleitungEinleitung
Die TCP/IP-Architektur Die TCP/IP-Architektur
PaketverarbeitungPaketverarbeitung
Zusätzliche InformationenZusätzliche Informationen
*

Einleitung

Mit Windows XP Service Pack 2 und Windows Server 2003 Service Pack 1 wurde die Windows Firewall eingeführt. Seitdem – und auch aufgrund der steigenden Nutzung von IPSec (Internet Protocol Security) – wird es für IT-Profis immer wichtiger, die Verarbeitung von IP-Paketen (Internet Protocol) durch das TCP/IP-Protokoll und die in die Verarbeitung involvierten Windows-Komponenten zu verstehen. Ein genaues Verständnis der Verarbeitungsvorgänge kann es Ihnen erleichtern, die für die Verarbeitung und Filterung von Paketen zuständigen Komponenten zu konfigurieren und nach Fehlern zu suchen.

In diesem Artikel wird Folgendes besprochen:

Die grundlegende Architektur des TCP/IP-Protokolls für IP-Version 4 (IPv4) sowie die weiteren Komponenten, die an der Paketverarbeitung beteiligt sind.

Die Verarbeitungspfade für durch einen Windows-Computer gesendeten, empfangenen und weitergeleiteten Unicast-Netzwerkverkehr.

Anmerkung: Um den Artikel übersichtlich und verständlich zu halten, werden Multicast- und Broadcast-Pakete sowie getunnelte oder fragmentierte Pakete nicht berücksichtigt.

Zum SeitenanfangZum Seitenanfang

Die TCP/IP-Architektur

In der folgenden Abbildung sehen Sie eine vereinfachte Ansicht des TCP/IP-Protokoll-Treibers (Tcpip.sys) und der anderen Komponenten, die unter Windows XP Service Pack 2 und Windows Server 2003 Service Pack 1 an der Verarbeitung von TCP/IP-Paketen beteiligt sind.

Abbildung 1

IP-Pakete werden von den folgenden Komponenten verarbeitet:

IP-Forwarding: Legt die nächste Schnittstelle und Adresse für zu sendende und weiterzuleitende Pakete fest.

TCP/IP-Filterung: Ermöglicht das Festlegen von IP-Protokoll, TCP- oder Port UDP-Port und bestimmten Arten von Netzwerkverkehr für den eingehenden Netzwerkverkehr (Pakete, die an den Host adressiert sind). Sie können die TCP/IP-Filterung über die Registerkarte Optionen der erweiterten Eigenschaften von TCP/IP im Ordner Netzwerkverbindungen konfigurieren.

Filter-Hook-Treiber: Eine Windows-Komponente, die die Filter-Hook-API zur Filterung von eingehenden und ausgehenden IP-Paketen nutzt. Auf einem Computer unter Windows Server 2003 handelt es sich beim Filter-Hook-Treiber und Ipfltdrv.sys um eine Komponente von Routing und RAS. Wenn Routing und RAS aktiviert ist, dann können Sie für jede Schnittstelle im Snap-In Routing und RAS eigene Eingangs- und Ausgangsfilter definieren. Ipfltdrv.sys überprüft sowohl den Netzwerkverkehr, der direkt an den Host adressiert ist (Local Host), als auch den Netzwerkverkehr, der weitergeleitet wird (Transit).

Firewall-Hook-Treiber: Eine Windows-Komponente, die die Firewall-Hook-API zur Überprüfung von eingehenden und ausgehenden IP-Paketen nutzt. Auf einem Computer unter Windows XP handelt es sich beim Firewall-Hook-Treiber um Ipnat.sys – er wird sowohl von der Internetverbindungsfreigabe als auch von der Windows Firewall genutzt. Bei der Internetverbindungsfreigabe handelt es sich um eine simple NAT-Funktionalität (Network Address Translator), und die Windows Firewall ist eine hostbasierte Firewall. Ipnat.sys überprüft sowohl den Local Host-Netzwerkverkehr als auch den Transit-Netzwerkverkehr. Unter Windows Server 2003 wird Ipnat.sys von der Internetverbindungsfreigabe, der Windows Firewall und von der NAT/Firewall-Komponente von Routing und RAS gemeinsam genutzt. Wenn die NAT/Firewall-Komponente von Routing und RAS aktiviert ist, dann können Sie die Windows Firewall und die Internetverbindungsfreigabe nicht mehr aktivieren.

IPsec: Bei der IPSec-Komponente handelt es sich um Ipsec.sys - der Windows-Implementierung von IPsec. Ipsec.sys überprüft sowohl den Local Host-Netzwerkverkehr als auch den Transit-Netzwerkverkehr und kann Netzwerkverkehr zulassen, blockieren oder absichern.

Zum SeitenanfangZum Seitenanfang

Paketverarbeitung

Im folgenden Abschnitt wird die Paketverarbeitung für die folgenden Arten von Netzwerkverkehr beschrieben:

Ausgehender Netzwerkverkehr: Bei diesem Netzwerkverkehr ist ursprünglich der Absender der sendende Host.

Eingehender Netzwerkverkehr: Dieser Netzwerkverkehr ist an den empfangenden Host adressiert.

Weitergeleiteter Netzwerkverkehr: Dieser Netzwerkverkehr wird durch den Windows-IP-Router weitergeleitet.

Es werden nur die unter Windows Server 2003 oder Windows XP verfügbaren Komponenten besprochen - keine Windows-Socket-Provider oder NDIS-Miniport-Treiber.

Ausgehender Netzwerkverkehr

In der folgenden Abbildung sehen Sie die Paketverarbeitung bei ausgehendem Netzwerkverkehr:

Abbildung 2

1.

Nachdem das IP-Paket erstellt wurde, übergibt es Tcpip.sys an den Firewall-Hook-Treiber (Ipnat.sys).
Die Windows Firewall überprüft, ob der Netzwerkverkehr einer ICMP-Nachricht (Internet Control Message Protocol) entspricht, die blockiert werden soll. Sollte dies der Fall sein, verwirft die Windows Firewall das Paket.
Die Windows Firewall überprüft, ob es sich beim Netzwerkverkehr um PPTP-Netzwerkverkehr (Point-to-Point-Tunneling-Protocol) handelt. Wenn dies der Fall ist, dann analysiert die Windows Firewall das Paket, um die GRE-Call-ID (Generic Routing Encapsulation) zu ermitteln. Diese ID bezeichnet den PPTP-Tunnel, und so kann eingehender GRE-basierter Netzwerkverkehr für den Tunnel zugelassen werden.
Bei Bedarf fügt die Windows Firewall der Ausnahmenliste einen dynamischen Eintrag hinzu, damit der entsprechend eingehende Netzwerkverkehr zugelassen wird.
Dann übergibt Ipnat.sys das IP-Packet wieder an Tcpip.sys, und Tcpip.sys ermittelt über die IP-Forwarding-Komponente die nächste Schnittstelle und IP-Adresse (weitere Information hierzu finden Sie im Artikel Understanding the IP Routing Table).

2.

Tcpip.sys übergibt das Paket an den Filter-Hook-Treiber (Ipfltdrv.sys). Basierend auf der Schnittstelle, über die das Paket weitergeleitet wird, vergleicht Ipfltdrv.sys das Paket mit den für diese Schnittstelle konfigurierten, Ausgangsfiltern.
Wenn das Paket laut diesen Filtern nicht zugelassen ist, dann wird das Paket kommentarlos von Ipfltdrv.sys verworfen. Ist es hingegen zugelassen, übergibt Ipfltdrv.sys das Paket wieder an Tcpip.sys.

3.

Tcpip.sys übergibt das Paket an Ipsec.sys.
Basierend auf den IPsec-Filtern stellt Ipsec.sys fest, ob das Paket zugelassen, blockiert oder abgesichert werden soll. Wenn es zugelassen wird, dann übergibt Ipsec.sys das Paket ohne Änderung wieder an Tcpip.sys. Wenn es blockiert werden soll, dann verwirft Ipsec.sys das Paket stillschweigend. Wenn es gesichert werden soll, dann fügt Ipsec.sys dem Paket den entsprechenden Schutz hinzu und übergibt es dann wieder an Tcpip.sys. Weitere Informationen zu IPsec-Filtern erhalten Sie im Artikel Die Anwendungsreihenfolge von IPsec-Filtern: The Cable Guy – Februar 2005.
Tcpip.sys sendet das Paket dann über die entsprechende Schnittstelle zur nächsten IP-Adresse.

Eingehender Netzwerkverkehr

In der folgenden Abbildung sehen Sie die Paketverarbeitung bei eingehendem Netzwerkverkehr:

Abbildung 3

1.

Nach dem Empfang übergibt Tcpip.sys ein Paket an Ipsec.sys.
Wenn das Paket durch IPSec geschützt ist (anhand des Wertes im Feld IP-Protokoll kann festgestellt werden, ob es sich um AH (Authentication Header) oder ESP (Encapsulating Security Payload) handelt), dann wird es verarbeitet. Wenn die Gruppenrichtlinieneinstellung Windows-Firewall: Authentifizierte IPSec durchlassen aktiv ist, dann setzt Ipsec.sys ein IPsec-Bypass-Flag für das Paket. Ipsec.sys übergibt das Paket dann an Tcpip.sys.
Wenn das Paket nicht durch IPsec geschützt ist, dann stellt Ipsec.sys mithilfe der IPSec-Filter fest, ob es zugelassen oder blockiert werden soll oder ob Sicherheit erforderlich ist. Wenn das Paket zugelassen ist, dann gibt Ipsec.sys das Paket unverändert an Tcpip.sys zurück. Wenn das Paket blockiert werden soll oder Sicherheit erforderlich ist, dann wird das Paket stillschweigend verworfen.

2.

Tcpip.sys übergibt das Paket an Ipfltdrv.sys.
Basierend auf der Schnittstelle, über die das Paket empfangen wurde, vergleicht Ipfltdrv.sys das Paket mit den konfigurierten IP-Paketfiltern für eingehenden Netzwerkverkehr.
Wenn die Filter das Paket nicht zulassen, dann wird das Paket stillschweigend verworfen. Wenn das Paket zugelassen ist, dann übergibt Ipfltdrv.sys das Paket wieder an Tcpip.sys.

3.

Tcpip.sys übergibt das Paket an Ipnat.sys.
Wenn die Internetverbindungsfreigabe oder NAT/Firewall aktiviert ist und die Schnittstelle, über die das Paket empfangen wurde, die öffentliche, mit dem Internet verbundene Schnittstelle ist, dann vergleicht Ipnat.sys das Paket mit seiner NAT-Übersetzungstabelle. Wenn ein Eintrag gefunden wird, dann wird das Paket entsprechend übersetzt und ab sofort wie ausgehender Netzwerkverkehr behandelt.
Die Windows Firewall überprüft das IPsec-Bypass-Flag des Paketes. Wenn das Flag gesetzt ist, dann übergibt die Windows Firewall das Paket wieder an Tcpip.sys.
Wenn das Flag nicht gesetzt ist, dann vergleicht die Windows Firewall das Paket mit ihrer Ausnahmenliste. Entspricht das Paket einer Ausnahme, übergibt Ipnat.sys es wieder an Tcpip.sys - andernfalls wird das Paket von Ipnat.sys stillschweigend verworfen.

4.

Tcpip.sys vergleicht das Paket mit den konfigurierten TCP/IP-Filtern.
Wenn ein TCP/IP-Filter vorhanden ist, der das Paket nicht zulässt, dann wird das Paket stillschweigend verworfen. Wenn die TCP/IP-Filter das Paket zulassen, verarbeitet Tcpip.sys das Paket weiter - möglicherweise werden die Daten des Paketes an TCP, UDP oder ein anderes Protokoll einer höheren Schicht weitergegeben.

Weitergeleiteter Netzwerkverkehr

In der folgenden Abbildung sehen Sie die Paketverarbeitung bei weitergeleitetem Netzwerkverkehr:

Abbildung 4

1.

Nach dem Empfang eines IP-Paketes übergibt Tcpip.sys dies an Ipfltdrv.sys.
Basierend auf der Schnittstelle, über die das das Paket empfangen wurde, vergleicht Ipfltdrv.sys das Paket mit den konfigurierten IP-Paketfiltern für den eingehenden Netzwerkverkehr.
Wenn die IP-Filter das Paket nicht zulassen, dann verwirft Ipfltdrv.sys das Paket stillschweigend. Wenn die IP-Filter das Paket zulassen, übergibt Ipfltdrv.sys das Paket wieder an Tcpip.sys.
Tcpip.sys übergibt das Paket an die IP-Forwarding-Komponente. Diese stellt die Schnittstelle fest, über die das Paket weitergeleitet wird, sowie die nächste IP-Adresse.
In der folgenden Abbildung sehen Sie den weiteren Verlauf der Verarbeitung von Transit-Netzwerkverkehr:
Abbildung 5

2.

Tcpip.sys übergibt das Paket an Ipnat.sys.
Wenn die Internetverbindungsfreigabe oder NAT/Firewall aktiviert ist und die Schnittstelle, über die das Paket empfangen wurde, die private, mit dem Intranet verbundene Schnittstelle ist, dann vergleicht Ipnat.sys das Paket mit seiner NAT-Übersetzungstabelle. Wenn ein Eintrag gefunden wird, dann wird das Paket entsprechend übersetzt und ab sofort wie ausgehender Netzwerkverkehr behandelt. Wenn kein Eintrag gefunden wird, dann wird ein neuer Eintrag in der NAT-Übersetzungstabelle erstellt, das Paket übersetzt und ab dann wie ausgehender Netzwerkverkehr behandelt.
Wenn die Internetverbindungsfreigabe oder NAT/Firewall nicht aktiviert sind, dann übergibt Ipnat.sys das Paket wieder an Tcpip.sys.

3.

Tcpip.sys übergibt das Paket an Ipfltdrv.sys.
Basierend auf der Schnittstelle, über die das Paket empfangen wurde, vergleicht Ipfltdrv.sys das Paket mit den konfigurierten IP-Paketfiltern für ausgehenden Netzwerkverkehr.
Wenn die Filter das Paket nicht zulassen, dann wird das Paket stillschweigend verworfen. Wenn das Paket zugelassen ist, dann übergibt Ipfltdrv.sys das Paket wieder an Tcpip.sys.

4.

Tcpip.sys übergibt das Paket an Ipsec.sys.
Basierend auf den IPsec-Filtern, stellt Ipsec.sys fest, ob das Paket zugelassen, blockiert oder abgesichert werden soll. Wenn es zugelassen wird, dann übergibt Ipsec.sys das Paket ohne Änderung wieder an Tcpip.sys. Wenn es blockiert werden soll, dann verwirft Ipsec.sys das Paket stillschweigend. Soll es gesichert werden, fügt Ipsec.sys dem Paket den entsprechenden Schutz hinzu und übergibt es wieder an Tcpip.sys.
Tcpip.sys sendet das Paket dann über die entsprechende Schnittstelle zur nächsten IP-Adresse.

Bei einem standardmäßig konfigurierten Client unter Windows XP mit SP2 oder einem Server unter Windows Server 2003 mit SP1, der nicht als Router oder NAT arbeitet und bei dem die TCP/IP-Filterung aktiviert ist, sind die folgenden Komponenten an der Paketverarbeitung für ausgehenden Netzwerkverkehr beteiligt:

1.

Windows Firewall

2.

IPsec

Die Paketverarbeitung von eingehendem Netzwerkverkehr geschieht unter standardmäßig konfigurierten Windows-Computern durch die folgenden Komponenten:

1.

IPsec

2.

Windows Firewall

Wenn Sie IPsec nutzen und die Windows Firewall aktiviert ist, dann können Sie beide Komponenten so konfigurieren, dass der gewünschte Netzwerkverkehr zugelassen wird. Wenn Sie zum Beispiel einen "enabled"-Webserver konfigurieren und den HTTP-Netzwerkverkehr zu diesem Server mit IPsec absichern möchten, müssen Sie folgende Konfigurationen vornehmen:

1.

Eine IPsec-Regel, die Sicherheit für Pakete an und von der IP-Adresse des Webservers und für TCP-Port 80 erfordert.

2.

Eine Ausnahme für TCP-Port 80 für die Windows Firewall.

Die IPsec-Regel stellt sicher, dass der Netzwerkverkehr zum Webserver-Dienst geschützt ist. Die Windows Firewall-Ausnahme stellt sicher, dass die Windows Firewall unverlangt eingehende Anfragen für den Aufbau von Verbindungen mit dem Webserver über TCP-Port 80 nicht verwirft. Da IPsec und Windows Firewall IP-Pakete getrennt verarbeiten, müssen Sie beide Komponenten konfigurieren. Wenn Sie die Verarbeitung von mit IPSec geschützten Paketen durch die Windows Firewall verhindern wollen, dann konfigurieren Sie die Gruppenrichtlinieneinstellung Windows-Firewall: Authentifizierte IPSec durchlassen. Weitere Informationen hierzu finden Sie im Artikel Konfigurieren der Windows-Firewall in Kleinunternehmen über Gruppenrichtlinien.

Zum SeitenanfangZum Seitenanfang

Zusätzliche Informationen

Weitere Informationen zu TCP/IP und der Verarbeitung von IP-Paketen finden Sie unter den folgenden Quellen:

Understanding the IP Routing Table

Microsoft Windows Server 2003 TCP/IP Implementation Details


Zum SeitenanfangZum Seitenanfang