Arbeiten mit NATs und FirewallsWorking with NATs and Firewalls

Der Austausch von Daten zwischen einem Client und einem Server erfolgt häufig nicht über eine direkte und offene Verbindung.The client and server of a network connection frequently do not have a direct and open path for communication. Die Datenpakete werden gefiltert, weitergeleitet, analysiert und verändert – sowohl vom Absender und vom Empfänger als auch von den Zwischenstationen im Netzwerk.Packets are filtered, routed, analyzed, and transformed both on the endpoint machines and by intermediate machines on the network. Netzwerkadressübersetzungen (NAT) und Firewalls sind gängige Beispiele für zwischengeschaltete Anwendungen, die an der Kommunikation im Netzwerk beteiligt sein können.Network address translations (NATs) and firewalls are common examples of intermediate applications that can participate in network communication.

Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)-Transporte und Nachrichtenaustauschmuster (MEP) reagieren unterschiedlich auf das Vorhandensein von NATs und Firewalls. transports, and message exchange patterns (MEPs) react differently to, the presence of NATs and firewalls. In diesem Thema wird beschrieben, wie die Netzwerkadressübersetzung und Firewalls in gängigen Netzwerktopologien funktionieren.This topic describes how NATs and firewalls function in common network topologies. Außerdem werden Empfehlungen für spezielle Kombinationen von WCFWCF-Transporten und Nachrichtenaustauschmustern gegeben, um die Stabilität der Anwendungen gegenüber Netzwerkadressübersetzungen und Firewalls im Netzwerk zu erhöhen.Recommendations for specific combinations of WCFWCF transports and MEPs are given that help make your applications more robust to NATs and firewalls on the network.

Einfluss von Netzwerkadressübersetzungen auf die KommunikationHow NATs Affect Communication

Netzwerkadressübersetzungen wurden konzipiert, um eine externe IP-Adresse mit mehreren Computern nutzen zu können.NAT was created to enable several machines to share a single external IP address. Bei der Netzwerkadressübersetzung mit Anschlussneuzuordnung werden eine interne IP-Adresse und ein interner Anschluss für die Verbindung mit einer externen IP-Adresse einer neuen Anschlussnummer zugeordnet.A port-remapping NAT maps an internal IP address and port for a connection to an external IP address with a new port number. Die neue Anschlussnummer ermöglicht es der Netzwerkadressübersetzung, den eingehenden Datenverkehr mit der ursprünglichen Kommunikation in Beziehung zu setzen.The new port number allows the NAT to correlate return traffic with the original communication. Viele Privatanwender verfügen über eine IP-Adresse, die nur privat geroutet werden kann, und verwenden die Netzwerkadressübersetzung für das globale Routing von Datenpaketen.Many home users now have an IP address that is only privately routable and rely on a NAT to provide global routing of packets.

Die Netzwerkadressübersetzung fungiert nicht als Sicherheitsgrenze.A NAT does not provide a security boundary. Durch NAT-Konfigurationen wird jedoch in aller Regel verhindert, dass die internen Computer direkt adressiert werden.However, common NAT configurations prevent the internal machines from being directly addressed. Dadurch werden die internen Computer einerseits teilweise vor unerwünschten Verbindungen geschützt und andererseits wird das Schreiben von Serveranwendungen erschwert, die Daten asynchron an den Client zurücksenden müssen.This both protects the internal machines from some unwanted connections and makes it difficult to write server applications that must asynchronously send data back to the client. Durch die Netzwerkadressübersetzung werden die Adressen in Datenpaketen geändert, sodass die Verbindungen vom NAT-Computer auszugehen scheinen.The NAT rewrites the addresses in packets to make it seem like connections are originating at the NAT machine. Dadurch wird verhindert, dass der Server eine Verbindung zurück zum Client initiiert.This causes the server to fail when it attempts to open a connection back to the client. Wenn der Server versucht, die erkannte Clientadresse zu verwenden, tritt ein Fehler auf, da die Adresse des Clients nicht öffentlich geroutet werden kann.If the server uses the client's perceived address, it fails because the client address cannot be publicly routed. Wenn der Server die NAT-Adresse verwendet, kann ebenfalls keine Verbindung hergestellt werden, da dieser Computer von keiner Anwendung überwacht wird.If the server uses the NAT address, it fails to connect because no application is listening on that machine.

Einige NAT-Verfahren unterstützen Weiterleitungsregeln, um externen Computern das Herstellen einer Verbindung mit einem bestimmten internen Computer zu ermöglichen.Some NATs support the configuration of forwarding rules to allow external machines to connect to a particular internal machine. Die Einrichtung von Weiterleitungsregeln ist abhängig von der verwendeten Netzwerkadressübersetzung, und i. d. R. wird davon abgeraten, die NAT-Konfiguration zu ändern.The instructions for configuring forwarding rules varies among different NATs, and asking end users to change their NAT configuration is not recommended for most applications. Viele Endbenutzer können oder möchten ihre NAT-Konfiguration nicht für eine bestimmte Anwendung ändern.Many end users either cannot or do not want to change their NAT configuration for a particular application.

Einfluss von Firewalls auf die KommunikationHow Firewalls Affect Communication

Ein Firewall ist eine Software oder Hardware-Gerät, das Regeln, um den Datenverkehr angewendet über entscheiden, ob Sie zulassen oder Verweigern des zeitverlaufs.A firewall is a software or hardware device that applies rules to the traffic passing through to decide whether to allow or deny passage. Sie können Firewalls konfigurieren, um eingehenden und/oder ausgehenden Datenverkehr zu untersuchen.You can configure firewalls to examine incoming and/or outgoing streams of traffic. Firewalls fungieren als Sicherheitsmechanismus für Netzwerke am Rande des Netzwerks oder am Endpunkthost.The firewall provides a security boundary for the network at either the edge of the network or on the endpoint host. Geschäftliche Benutzer schützen ihre Server schon länger durch eine Firewall, um böswillige Angriffe zu verhindern.Business users have traditionally kept their servers behind a firewall to prevent malicious attacks. Seit der Einführung einer persönlichen Firewall in Windows XP SP2Windows XP SP2 hat sich auch die Zahl privater Benutzer einer Firewall erhöht.Since the introduction of the personal firewall in Windows XP SP2Windows XP SP2, the number of home users behind a firewall has greatly increased as well. Es ist daher sehr wahrscheinlich, dass die Datenpakete mindestens an einem Verbindungsende von einer Firewall untersucht werden.This makes it likely that one or both ends of a connection have a firewall examining packets.

Firewalls unterscheiden sich sehr stark hinsichtlich ihrer Komplexität und der Fähigkeit zum Untersuchen von Datenpaketen.Firewalls vary greatly in terms of their complexity and capability for examining packets. Einfache Firewalls verwenden Regeln auf Basis von Quell- und Zieladressen sowie von Anschlüssen in Datenpaketen.Simple firewalls apply rules based on the source and destination addresses and ports in packets. Leistungsfähigere Firewalls können auch den Inhalt von Datenpaketen untersuchen, um Entscheidungen zu treffen.Intelligent firewalls can also examine the contents of packets to make decisions. Diese Firewalls weisen eine Vielzahl von Konfigurationen auf und werden oft für spezielle Anwendungen genutzt.These firewalls come in many different configurations and are often used for specialized applications.

Private Firewalls sind häufig so konfiguriert, dass eingehende Verbindungen unterbunden werden, es sei denn, es wurde zuvor eine ausgehende Verbindung zum entsprechenden Computer hergestellt.A common configuration for a home user firewall is to prohibit incoming connections unless an outgoing connection was made to that machine previously. Geschäftliche Firewalls sind häufig so konfiguriert, dass zunächst einmal eingehende Verbindungen auf allen Anschlüssen unterbunden und anschließend Ausnahmen festgelegt werden.A common configuration for a business user firewall is to prohibit incoming connections on all ports except a group specifically identified. Beispielsweise kann eine Firewall alle Verbindungen mit Ausnahme von Verbindungen über den Anschluss 80 und den Anschluss 443 blockieren, um HTTP- und HTTPS-Dienste zu ermöglichen.An example is a firewall that prohibits connections on all ports except for ports 80 and 443 to provide HTTP and HTTPS service. Sowohl für private als auch für geschäftliche Benutzer gibt es verwaltete Firewalls, die es einem vertrauenswürdigen Benutzer oder einem vertrauenswürdigen Prozess ermöglichen, die Konfiguration der Firewall anzupassen.Managed firewalls exist for both home and business users that permit a trusted user or process on the machine to change the firewall configuration. Verwaltete Firewalls sind häufiger in privaten Umgebungen zu finden, da die Netzwerkverwendung dort i. d. R. keinen spezifischen Richtlinien unterliegt.Managed firewalls are more common for home users where there is no corporate policy controlling network usage.

Verwenden von TeredoUsing Teredo

Teredo ist eine IPv6-Technologie zur direkten Adressierung von Computern hinter einem Netzwerkadressübersetzungsmechanismus.Teredo is an IPv6 transition technology that enables the direct addressability of machines behind a NAT. Das Teredo-Protokoll verwendet einen Server, der öffentlich und global geroutet werden kann, um potenzielle Verbindungen anzukündigen.Teredo relies on the use of a server that can be publicly and globally routed to advertise potential connections. Der Teredo-Server übernimmt die Rolle eine Vermittlers zwischen dem Client und dem Server der Anwendung und ermöglicht so den Austausch von Verbindungsinformationen.The Teredo server gives the application client and server a common meeting point at which they can exchange connection information. Die Computer fordern dann eine temporäre Teredo-Adresse an, und die Pakete werden durch das vorhandene Netzwerk getunnelt.The machines then request a temporary Teredo address, and packets are tunneled through the existing network. Damit Teredo von WCFWCF unterstützt wird, müssen im Betriebssystem die entsprechenden Einstellungen für IPv6 und Teredo vorgenommen werden.Teredo support in WCFWCF requires enabling IPv6 and Teredo support in the operating system. Teredo wird von Windows XPWindows XP und nachfolgenden Betriebssystemen unterstützt.Windows XPWindows XP and later operating systems support Teredo. Windows VistaWindows Vista und nachfolgende Betriebssysteme unterstützen IPv6 standardmäßig und erfordern lediglich eine entsprechende Aktivierung durch den Benutzer. and later operating systems support IPv6 by default and only require the user to enable Teredo. Unter Windows XP SP2Windows XP SP2 und Windows Server 2003Windows Server 2003 müssen IPv6 und Teredo vom Benutzer aktiviert werden.Windows XP SP2Windows XP SP2 and Windows Server 2003Windows Server 2003 require the user to enable both IPv6 and Teredo. Weitere Informationen finden Sie unterFor more information, seedie Teredo – Übersicht. the Teredo Overview.

Auswählen eines Transports und eines NachrichtenaustauschmustersChoosing a Transport and Message Exchange Pattern

Das Verfahren zum Auswählen eines Transports und eines Nachrichtenaustauschmusters besteht aus drei Schritten:Selecting a transport and MEP is a three-step process:

  1. Analysieren Sie zunächst die Adressierbarkeit der Endpunktcomputer.Analyze the addressability of the endpoint machines. Unternehmensserver verfügen i. d. R. über eine direkte Adressierbarkeit, während die Adressierbarkeit bei Endbenutzern häufig durch die Netzwerkadressübersetzung verhindert wird.Enterprise servers commonly have direct addressability, while end users commonly have their addressability blocked by NATs. Wenn beide Endpunkte hinter einem NAT-Mechanismus liegen, z. B. in einem Peer-to-Peer-Szenario zwischen Endbenutzern, ist möglicherweise eine Technologie wie Teredo erforderlich, um die Adressierbarkeit sicherzustellen.If both endpoints are behind a NAT, such as in peer-to-peer scenarios between end users, then you might need a technology such as Teredo to provide addressability.

  2. Analysieren Sie die Protokoll- und Anschlusseinschränkungen der Endpunktcomputer.Analyze the protocol and port restrictions of the endpoint machines. Unternehmensserver werden i. d. R. durch leistungsstarke Firewalls geschützt, die viele Anschlüsse blockieren.Enterprise servers are typically behind strong firewalls that block many ports. Häufig werden jedoch der Anschluss 80 für HTTP- und der Anschluss 443 für HTTPS-Verbindungen geöffnet.However, port 80 is frequently open to permit HTTP traffic, and port 443 is open to permit HTTPS traffic. Endbenutzer arbeiten normalerweise nicht mit Anschlusseinschränkungen. Sie verwenden jedoch häufig Firewalls, die nur eingehenden Datenverkehr zulassen.End users are less likely to have port restrictions but might be behind a firewall that permits only outgoing connections. Einige Firewalls ermöglichen eine Verwaltung durch Anwendungen auf dem Endpunkt, um ausgewählte Verbindungen zu öffnen.Some firewalls permit management by applications on the endpoint to selectively open connections.

  3. Berechnen Sie die Transporte und Nachrichtenaustauschmuster, die von der Adressierbarkeit und den Anschlusseinschränkungen des Netzwerks ermöglicht werden.Compute the transports and MEPs that the addressability and port restrictions of the network permit.

In einer Standardtopologie für Client-Server-Anwendungen verfügen Clients hinter einer Netzwerkadressübersetzung ohne Teredo über eine Firewall nur für ausgehende Verbindungen, und der direkt adressierbare Server wird durch eine leistungsstarke Firewall geschützt.A common topology for client-server applications is to have clients that are behind a NAT without Teredo with an outbound-only firewall and a server that is directly addressable with a strong firewall. In diesem Szenario funktionieren der TCP-Transport mit einem Duplex-Nachrichtenaustauschmuster und ein HTTP-Transport mit einem Anforderung-Antwort-Nachrichtenaustauschmuster ordnungsgemäß.In this scenario, the TCP transport with a duplex MEP and an HTTP transport with a request-reply MEP work well. In einer gängigen Peer-to-Peer-Topologie befinden sich beide Endpunkte hinter einem NAT-Mechanismus sowie hinter einer Firewall.A common topology for peer-to-peer applications is to have both endpoints behind NATs and firewalls. In diesem Szenario sowie in Szenarien mit einer unbekannten Netzwerktopologie sollten Sie folgende Empfehlungen beachten:In this scenario, and in scenarios where the network topology is unknown, consider the following recommendations:

  • Verwenden Sie keine dualen Transporte.Do not use dual transports. Duale Transporte öffnen mehr Verbindungen. Dadurch sinkt die Chance, erfolgreich eine Verbindung herzustellen.A dual transport opens more connections, which reduces the chance of connecting successfully.

  • Unterstützen Sie die Einrichtung von Rückkanälen über die ursprüngliche Verbindung.Support establishing back channels over the originating connection. Durch Rückkanäle (wie bei Duplex-TCP) werden weniger Verbindungen geöffnet, und die Wahrscheinlichkeit steigt, dass eine Verbindung hergestellt werden kann.Using back channels, such as in duplex TCP, opens fewer connections, which increases the chance of connecting successfully.

  • Verwenden Sie einen erreichbaren Dienst zum Registrieren von Endpunkten oder zum Weiterleiten von Datenverkehr.Employ a reachable service for either registering endpoints or relaying traffic. Durch einen global erreichbaren Verbindungsdienst wie einem Teredo-Server wird die Wahrscheinlichkeit deutlich erhöht, eine Verbindung herzustellen, wenn die Netzwerktopologie eingeschränkt oder unbekannt ist.Using a globally reachable connection service, such as a Teredo server, greatly increases the chance of connecting successfully when the network topology is restrictive or unknown.

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 WCFWCF betrachtet.The following tables examine the one-way, request-reply, and duplex MEPs, and the standard TCP, TCP with Teredo, and standard and dual HTTP transports in WCFWCF.

AdressierbarkeitAddressability Server direktServer Direct Server direkt mit NAT-DurchlaufServer Direct with NAT traversal Server-NATServer NAT Server-NAT mit NAT-DurchlaufServer NAT with NAT traversal
Client direktClient direct Alle Transporte und MEPAny transport and MEP Alle Transporte und MEPAny transport and MEP Wird nicht unterstützt.Not supported. Wird nicht unterstützt.Not supported.
Client direkt mit NAT-DurchlaufClient direct with NAT traversal Alle Transporte und MEPAny transport and MEP. Alle Transporte und MEPAny transport and MEP. Wird nicht unterstützt.Not supported. TCP mit Teredo und alle MEPs.TCP with Teredo and any MEP. Windows VistaWindows Vista verfügt über eine computerweite Konfigurationsoption zur Unterstützung von HTTP mit Teredo. has a machine-wide configuration option to support HTTP with Teredo.
Client-NATClient NAT Alle nicht dualen Transporte und MEP.Any non-dual transport and MEP. Duplex-MEP erfordert TCP-Transport.Duplex MEP requires TCP transport. Alle nicht dualen Transporte und MEP.Any non-dual transport and MEP. Duplex-MEP erfordert TCP-Transport.Duplex MEP requires TCP transport. Wird nicht unterstützt.Not supported. Wird nicht unterstützt.Not supported.
Client-NAT mit NAT-DurchlaufClient NAT with NAT traversal Alle nicht dualen Transporte und MEP.Any non-dual transport and MEP. Duplex-MEP erfordert TCP-Transport.Duplex MEP requires TCP transport. Alle außer duale HTTP-Verbindungen sowie MEP.All but dual HTTP and any MEP. Duplex-MEP erfordert TCP-Transport.Duplex MEP requires TCP transport. Duale TCP-Transporte erfordern Teredo.Dual TCP transport requires Teredo. Windows VistaWindows Vista verfügt über eine computerweite Konfigurationsoption zur Unterstützung von HTTP mit Teredo. has a machine-wide configuration option to support HTTP with Teredo. Wird nicht unterstützt.Not supported. TCP mit Teredo und alle MEPs.TCP with Teredo and any MEP. Windows VistaWindows Vista verfügt über eine computerweite Konfigurationsoption zur Unterstützung von HTTP mit Teredo. has a machine-wide configuration option to support HTTP with Teredo.
FirewalleinschränkungenFirewall restrictions Server offenServer open Server mit verwalteter FirewallServer with managed firewall Server mit Firewall nur für HTTP-VerbindungenServer with HTTP-only firewall Server mit Firewall nur für ausgehende VerbindungenServer with outbound-only firewall
Client offenClient Open Alle Transporte und MEPAny transport and MEP. Alle Transporte und MEPAny transport and MEP. Alle HTTP-Transporte und MEPAny HTTP transport and MEP. Wird nicht unterstützt.Not supported.
Client mit verwalteter FirewallClient with managed firewall Alle nicht dualen Transporte und MEP.Any non-dual transport and MEP. Duplex-MEP erfordert TCP-Transport.Duplex MEP requires TCP transport. Alle nicht dualen Transporte und MEP.Any non-dual transport and MEP. Duplex-MEP erfordert TCP-Transport.Duplex MEP requires TCP transport. Alle HTTP-Transporte und MEPAny HTTP transport and MEP. Wird nicht unterstützt.Not supported.
Client mit Firewall nur für HTTP-VerbindungenClient with HTTP-only firewall Alle HTTP-Transporte und MEPAny HTTP transport and MEP. Alle HTTP-Transporte und MEPAny HTTP transport and MEP. Alle HTTP-Transporte und MEPAny HTTP transport and MEP. Wird nicht unterstützt.Not supported.
Client mit Firewall nur für ausgehende VerbindungenClient with outbound-only firewall Alle nicht dualen Transporte und MEP.Any non-dual transport and MEP. Duplex-MEP erfordert TCP-Transport.Duplex MEP requires TCP transport. Alle nicht dualen Transporte und MEP.Any non-dual transport and MEP. Duplex-MEP erfordert TCP-Transport.Duplex MEP requires TCP transport. Alle HTTP-Transporte sowie alle Nicht-Duplex-MEPsAny HTTP transport and any non-duplex MEP. Wird nicht unterstützt.Not supported.