Freigeben über


Arbeiten mit NATs und Firewalls

Der Client und der Server einer Netzwerkverbindung verfügen häufig nicht über einen direkten und offenen Pfad für die Kommunikation. Pakete werden sowohl auf den Endpunktcomputern als auch auf Zwischencomputern im Netzwerk gefiltert, weitergeleitet, analysiert und transformiert. Netzwerkadressenübersetzungen (NETWORK Address Translation, NATs) und Firewalls sind häufige Beispiele für Zwischenanwendungen, die an der Netzwerkkommunikation teilnehmen können.

Windows Communication Foundation (WCF)-Transporte und Nachrichtenaustauschmuster (MEPs) reagieren anders auf das Vorhandensein von NATs und Firewalls. In diesem Thema wird beschrieben, wie NATs und Firewalls in allgemeinen Netzwerktopologien funktionieren. Es werden Empfehlungen für bestimmte Kombinationen von WCF-Transporten und MEPs gegeben, die Dazu beitragen, Ihre Anwendungen robuster für NATs und Firewalls im Netzwerk zu machen.

Wie SICH NATs auf die Kommunikation auswirken

NAT wurde entwickelt, um mehreren Geräten die Nutzung einer einzelnen externen IP-Adresse zu ermöglichen. Ein Port-Remapping-NAT ordnet eine interne IP-Adresse und einen dazugehörigen Port einer externen IP-Adresse mit einer neuen Portnummer zu. Die neue Portnummer ermöglicht es der NAT, den Rückgabedatenverkehr mit der ursprünglichen Kommunikation zu korrelieren. Viele Heimanwender verfügen jetzt über eine IP-Adresse, die nur privat routingfähig ist und auf eine NAT angewiesen ist, um ein globales Routing von Paketen bereitzustellen.

Eine NAT stellt keine Sicherheitsgrenze bereit. Allgemeine NAT-Konfigurationen verhindern jedoch, dass die internen Computer direkt adressiert werden. Dies schützt die internen Computer vor einigen unerwünschten Verbindungen und erschwert das Schreiben von Serveranwendungen, die daten asynchron an den Client senden müssen. Die NAT schreibt die Adressen in Paketen neu, damit es scheint, als ob die Verbindungen vom NAT-Computer stammen. Dies führt dazu, dass der Server fehlschlägt, wenn versucht wird, eine Verbindung mit dem Client zu öffnen. Wenn der Server die wahrgenommene Adresse des Clients verwendet, tritt ein Fehler auf, da die Clientadresse nicht öffentlich weitergeleitet werden kann. Wenn der Server die NAT-Adresse verwendet, kann keine Verbindung hergestellt werden, da auf diesem Computer keine Anwendung darauf hört.

Einige NATs unterstützen die Konfiguration von Weiterleitungsregeln, damit externe Computer eine Verbindung mit einem bestimmten internen Computer herstellen können. Die Anweisungen zum Konfigurieren der Weiterleitungsregeln variieren je nach den verschiedenen NATs, und Endbenutzern zu empfehlen, dass sie ihre NAT-Konfiguration ändern, wird für die meisten Anwendungen nicht geraten. Viele Endbenutzer können ihre NAT-Konfiguration für eine bestimmte Anwendung entweder nicht ändern oder möchten sie nicht ändern.

Auswirkungen der Firewalls auf die Kommunikation

Eine Firewall ist ein Software- oder Hardwaregerät, das Regeln auf den durchlaufenden Datenverkehr anwendet, um zu entscheiden, ob der Durchgang erlaubt oder verweigert wird. Sie können Firewalls so konfigurieren, dass eingehende und/oder ausgehende Datenverkehrsströme untersucht werden. Die Firewall bietet eine Sicherheitsgrenze für das Netzwerk am Rand des Netzwerks oder auf dem Endpunkthost. Geschäftsbenutzer haben ihre Server traditionell hinter einer Firewall gespeichert, um böswillige Angriffe zu verhindern. Seit der Einführung der persönlichen Firewall in Windows XP hat sich auch die Anzahl der Heimanwender hinter einer Firewall stark erhöht. Dies macht wahrscheinlich, dass ein oder beide Enden einer Verbindung eine Firewall haben, die Pakete untersucht.

Firewalls unterscheiden sich stark hinsichtlich ihrer Komplexität und Fähigkeit zum Untersuchen von Paketen. Einfache Firewalls wenden Regeln basierend auf den Quell- und Zieladressen und Ports in Paketen an. Intelligente Firewalls können auch den Inhalt von Paketen untersuchen, um Entscheidungen zu treffen. Diese Firewalls kommen in vielen verschiedenen Konfigurationen und werden häufig für spezialisierte Anwendungen verwendet.

Eine häufige Konfiguration für eine Firewall für Private Benutzer besteht darin, eingehende Verbindungen zu verbieten, es sei denn, eine ausgehende Verbindung mit diesem Computer wurde zuvor hergestellt. Eine allgemeine Konfiguration für eine Unternehmensbenutzerfirewall besteht darin, eingehende Verbindungen an allen Ports zu verbieten, mit Ausnahme einer speziell identifizierten Gruppe. Ein Beispiel ist eine Firewall, die Verbindungen auf allen Ports mit Ausnahme der Ports 80 und 443 zum Bereitstellen von HTTP- und HTTPS-Diensten verbietet. Verwaltete Firewalls sind sowohl für private als auch geschäftliche Benutzer vorhanden, die zulassen, dass ein vertrauenswürdiger Benutzer oder ein Prozess auf dem Computer die Firewallkonfiguration ändern kann. Verwaltete Firewalls sind häufiger für Heimbenutzer üblich, bei denen keine Unternehmensrichtlinie die Netzwerknutzung steuert.

Verwenden von Teredo

Teredo ist eine IPv6-Übergangstechnologie, die die direkte Adressierbarkeit von Computern hinter einem NAT ermöglicht. Teredo basiert auf der Verwendung eines Servers, der öffentlich und global weitergeleitet werden kann, um potenzielle Verbindungen anzukündigen. Der Teredo-Server gibt dem Anwendungsclient und dem Server einen gemeinsamen Besprechungspunkt, an dem sie Verbindungsinformationen austauschen können. Die Computer fordern dann eine temporäre Teredo-Adresse an, und Pakete werden über das vorhandene Netzwerk getunnelt. Für die Teredo-Unterstützung in WCF ist die Aktivierung von IPv6 und Teredo im Betriebssystem erforderlich. Windows XP und höhere Betriebssysteme unterstützen Teredo. Windows Vista und höhere Betriebssysteme unterstützen IPv6 standardmäßig und erfordern nur, dass der Benutzer Teredo aktiviert. Windows XP SP2 und Windows Server 2003 erfordern, dass der Benutzer sowohl IPv6 als auch Teredo aktivieren kann. Weitere Informationen finden Sie in der Teredo-Übersicht.

Auswählen eines Transport- und Nachrichtenaustauschmusters

Das Verfahren zum Auswählen eines Transports und eines Nachrichtenaustauschmusters besteht aus drei Schritten:

  1. Analysieren Sie die Adressierbarkeit der Endpunktcomputer. Unternehmensserver weisen häufig direkte Adressierbarkeit auf, während Endbenutzer ihre Adressierbarkeit häufig durch NATs blockiert haben. Wenn sich beide Endpunkte hinter einer NAT befinden, z. B. in Peer-to-Peer-Szenarien zwischen Endbenutzern, benötigen Sie möglicherweise eine Technologie wie Teredo, um die Adressierbarkeit bereitzustellen.

  2. Analysieren Sie die Protokoll- und Porteinschränkungen der Endpunktcomputer. Unternehmensserver liegen in der Regel hinter starken Firewalls, die viele Ports blockieren. Port 80 ist jedoch häufig geöffnet, um HTTP-Datenverkehr zuzulassen, und Port 443 ist offen, um HTTPS-Datenverkehr zuzulassen. Endbenutzer haben eher keine Portbeschränkungen, könnten sich jedoch hinter einer Firewall befinden, die nur ausgehende Verbindungen zulässt. Einige Firewalls ermöglichen die Verwaltung durch Anwendungen auf dem Endpunkt, verbindungen selektiv zu öffnen.

  3. Berechnen Sie die Transporte und Nachrichtenaustauschmuster, die von der Adressierbarkeit und den Anschlusseinschränkungen des Netzwerks ermöglicht werden.

Eine übliche Topologie für Client-Server-Anwendungen besteht darin, Clients zu haben, die sich hinter einer NAT ohne Teredo und mit einer Firewall, die ausschließlich ausgehenden Verkehr blockiert, befinden, während der Server direkt adressierbar ist und über eine starke Firewall verfügt. In diesem Szenario funktioniert der TCP-Transport mit einem Duplex-MEP und einem HTTP-Transport mit einem Anforderungsantwort-MEP gut. Eine allgemeine Topologie für Peer-to-Peer-Anwendungen besteht darin, sowohl Endpunkte hinter NATs als auch Firewalls zu haben. Berücksichtigen Sie in diesem Szenario und in Szenarien, in denen die Netzwerktopologie unbekannt ist, die folgenden Empfehlungen:

  • Verwenden Sie keine dualen Transporte. Ein dualer Transport öffnet mehr Verbindungen, wodurch die Wahrscheinlichkeit einer erfolgreichen Verbindung reduziert wird.

  • Unterstützung beim Einrichten von Rückkanälen über die ursprüngliche Verbindung. Durch die Verwendung von Rückkanälen, z. B. in Duplex-TCP, werden weniger Verbindungen geöffnet, wodurch die Wahrscheinlichkeit erhöht wird, dass die Verbindung erfolgreich hergestellt wird.

  • Verwenden Sie einen erreichbaren Dienst zum Registrieren von Endpunkten oder zum Weiterleiten von Datenverkehr. Die Verwendung eines global erreichbaren Verbindungsdiensts, z. B. eines Teredo-Servers, erhöht die Wahrscheinlichkeit, dass die Verbindung erfolgreich hergestellt wird, wenn die Netzwerktopologie restriktiv oder unbekannt ist.

In den folgenden Tabellen werden unidirektionale Nachrichtenaustauschmuster, Anforderung-Antwort-Nachrichtenaustauschmuster sowie Duplex-Nachrichtenaustauschmuster und TCP-Standardtransporte, TCP-Transporte mit Teredo sowie Standard- und Dual-HTTP-Transporte in WCF betrachtet.

Adressierbarkeit Server direkt Server Direct mit NAT-Traversal Server-NAT Server-NAT mit NAT-Durchlauf
Kunde direkt Alle Transporte und MEP Alle Transporte und MEP Nicht unterstützt. Nicht unterstützt.
Client direkt mit NAT-Durchlauf Alle Transporte und MEP Alle Transporte und MEP Nicht unterstützt. TCP mit Teredo und alle MEPs. Windows Vista verfügt über eine computerweite Konfigurationsoption zur Unterstützung von HTTP mit Teredo.
Client-NAT Alle nicht dualen Transporte und MEP. Duplex-MEP erfordert TCP-Transport. Alle nicht dualen Transporte und MEP. Duplex-MEP erfordert TCP-Transport. Nicht unterstützt. Nicht unterstützt.
Client-NAT mit NAT-Traversal Alle nicht dualen Transporte und MEP. Duplex-MEP erfordert TCP-Transport. Alle außer duale HTTP-Verbindungen sowie MEP. Duplex-MEP erfordert TCP-Transport. Für den dualen TCP-Transport ist Teredo erforderlich. Windows Vista verfügt über eine computerweite Konfigurationsoption zur Unterstützung von HTTP mit Teredo. Nicht unterstützt. TCP mit Teredo und alle MEPs. Windows Vista verfügt über eine computerweite Konfigurationsoption zur Unterstützung von HTTP mit Teredo.
Firewalleinschränkungen Server geöffnet Server mit verwalteter Firewall Server mit nur HTTP-Firewall Server mit nur ausgehender Firewall
Client geöffnet Alle Transporte und MEP Alle Transporte und MEP Alle HTTP-Transporte und MEP Nicht unterstützt.
Client mit verwalteter Firewall Alle nicht dualen Transporte und MEP. Duplex-MEP erfordert TCP-Transport. Alle nicht dualen Transporte und MEP. Duplex-MEP erfordert TCP-Transport. Alle HTTP-Transporte und MEP Nicht unterstützt.
Client mit nur HTTP-Firewall Alle HTTP-Transporte und MEP Alle HTTP-Transporte und MEP Alle HTTP-Transporte und MEP Nicht unterstützt.
Client mit nur ausgehender Firewall Alle nicht dualen Transporte und MEP. Duplex-MEP erfordert TCP-Transport. Alle nicht dualen Transporte und MEP. Duplex-MEP erfordert TCP-Transport. Alle HTTP-Transporte sowie alle Nicht-Duplex-MEPs Nicht unterstützt.