Delen via


Werken met NAT's en firewalls

De client en server van een netwerkverbinding hebben vaak geen direct en open pad voor communicatie. Pakketten worden gefilterd, gerouteerd, geanalyseerd en getransformeerd, zowel op de eindpuntcomputers als op tussenliggende machines in het netwerk. Netwerkadresvertalingen (NAT's) en firewalls zijn veelvoorkomende voorbeelden van tussenliggende toepassingen die kunnen deelnemen aan netwerkcommunicatie.

WcF-transporten (Windows Communication Foundation) en berichtuitwisselingspatronen (EP's) reageren anders op, de aanwezigheid van NAT's en firewalls. In dit onderwerp wordt beschreven hoe NAT's en firewalls werken in algemene netwerktopologieën. Aanbevelingen voor specifieke combinaties van WCF-transporten en EP-leden worden gegeven die uw toepassingen robuuster maken voor NAT's en firewalls in het netwerk.

Hoe NAT's van invloed zijn op communicatie

NAT is gemaakt om meerdere computers in staat te stellen één extern IP-adres te delen. Een nat-poort die opnieuw wordt toegewezen, wijst een intern IP-adres en een poort toe voor een verbinding met een extern IP-adres met een nieuw poortnummer. Met het nieuwe poortnummer kan de NAT retourverkeer correleren met de oorspronkelijke communicatie. Veel thuisgebruikers hebben nu een IP-adres dat alleen privé routeerbaar is en afhankelijk is van een NAT om globale routering van pakketten te bieden.

Een NAT biedt geen beveiligingsgrens. Algemene NAT-configuraties verhinderen echter dat de interne machines rechtstreeks worden aangepakt. Hierdoor worden de interne machines beschermd tegen enkele ongewenste verbindingen en kan het lastig zijn om servertoepassingen te schrijven die asynchroon gegevens naar de client moeten verzenden. De NAT herschrijft de adressen in pakketten zodat het lijkt alsof verbindingen afkomstig zijn van de NAT-machine. Dit zorgt ervoor dat de server mislukt wanneer er een verbinding met de client wordt geopend. Als de server het waargenomen adres van de client gebruikt, mislukt het omdat het clientadres niet openbaar kan worden gerouteerd. Als de server het NAT-adres gebruikt, kan er geen verbinding worden gemaakt omdat er geen toepassing op die computer luistert.

Sommige NAT's ondersteunen de configuratie van doorstuurregels zodat externe machines verbinding kunnen maken met een bepaalde interne machine. De instructies voor het configureren van doorstuurregels variëren tussen verschillende NAT's en vragen eindgebruikers om hun NAT-configuratie te wijzigen, worden niet aanbevolen voor de meeste toepassingen. Veel eindgebruikers kunnen hun NAT-configuratie voor een bepaalde toepassing niet of niet wijzigen.

Hoe firewalls van invloed zijn op communicatie

Een firewall is een software- of hardwareapparaat dat regels toepast op het verkeer dat wordt doorgegeven om te bepalen of passage moet worden toegestaan of geweigerd. U kunt firewalls configureren om binnenkomende en/of uitgaande verkeersstromen te onderzoeken. De firewall biedt een beveiligingsgrens voor het netwerk aan de rand van het netwerk of op de eindpunthost. Zakelijke gebruikers hebben traditioneel hun servers achter een firewall bewaard om schadelijke aanvallen te voorkomen. Sinds de introductie van de persoonlijke firewall in Windows XP is het aantal thuisgebruikers achter een firewall ook aanzienlijk toegenomen. Dit maakt het waarschijnlijk dat een of beide uiteinden van een verbinding een firewall hebben die pakketten onderzoekt.

Firewalls variëren sterk in termen van hun complexiteit en mogelijkheden voor het onderzoeken van pakketten. Eenvoudige firewalls passen regels toe op basis van de bron- en doeladressen en poorten in pakketten. Intelligente firewalls kunnen ook de inhoud van pakketten onderzoeken om beslissingen te nemen. Deze firewalls worden geleverd in veel verschillende configuraties en worden vaak gebruikt voor gespecialiseerde toepassingen.

Een algemene configuratie voor een firewall voor thuisgebruikers is het verbieden van binnenkomende verbindingen, tenzij er eerder een uitgaande verbinding met die computer is gemaakt. Een algemene configuratie voor een firewall voor zakelijke gebruikers is het verbieden van binnenkomende verbindingen op alle poorten, behalve een groep die specifiek is geïdentificeerd. Een voorbeeld is een firewall die verbindingen op alle poorten verbiedt, met uitzondering van poorten 80 en 443 om een HTTP- en HTTPS-service te bieden. Beheerde firewalls bestaan voor zowel thuisgebruikers als zakelijke gebruikers die een vertrouwde gebruiker of proces op de computer toestaan om de firewallconfiguratie te wijzigen. Beheerde firewalls komen vaker voor thuisgebruikers voor wanneer er geen bedrijfsbeleid is dat het netwerkgebruik beheert.

Teredo gebruiken

Teredo is een IPv6-overgangstechnologie die de directe adresbaarheid van machines achter een NAT mogelijk maakt. Teredo is afhankelijk van het gebruik van een server die openbaar en globaal kan worden gerouteerd om potentiële verbindingen te adverteren. De Teredo-server geeft de toepassingsclient en -server een gemeenschappelijk vergaderpunt waar ze verbindingsgegevens kunnen uitwisselen. De machines vragen vervolgens een tijdelijk Teredo-adres aan en pakketten worden via het bestaande netwerk getunneld. Teredo-ondersteuning in WCF vereist het inschakelen van IPv6- en Teredo-ondersteuning in het besturingssysteem. Windows XP en latere besturingssystemen ondersteunen Teredo. Windows Vista en latere besturingssystemen ondersteunen standaard IPv6 en vereisen alleen dat de gebruiker Teredo inschakelt. Voor Windows XP SP2 en Windows Server 2003 moet de gebruiker zowel IPv6 als Teredo inschakelen. Zie het Teredo-overzicht voor meer informatie.

Een transport- en berichtuitwisselingspatroon kiezen

Het selecteren van een transport- en MEP-aanvraag is een proces in drie stappen:

  1. Analyseer de adresseerbaarheid van de eindpuntmachines. Bedrijfsservers hebben doorgaans directe adresseerbaarheid, terwijl eindgebruikers vaak hun adresbaarheid hebben geblokkeerd door NAT's. Als beide eindpunten zich achter een NAT bevinden, zoals in peer-to-peerscenario's tussen eindgebruikers, hebt u mogelijk een technologie nodig zoals Teredo om adresseerbaarheid te bieden.

  2. Analyseer het protocol en de poortbeperkingen van de eindpuntcomputers. Bedrijfsservers bevinden zich doorgaans achter sterke firewalls die veel poorten blokkeren. Poort 80 is echter vaak geopend om HTTP-verkeer toe te laten en poort 443 is open om HTTPS-verkeer toe te laten. Eindgebruikers hebben minder waarschijnlijk poortbeperkingen, maar kunnen zich achter een firewall bevinden die alleen uitgaande verbindingen toestaat. Sommige firewalls staan beheer door toepassingen op het eindpunt toe om selectief verbindingen te openen.

  3. Bereken de transporten en afgevaardigden die de adresseerbaarheid en poortbeperkingen van de netwerkvergunning hebben.

Een algemene topologie voor client-servertoepassingen is om clients te hebben die zich achter een NAT zonder Teredo bevinden met een firewall die alleen uitgaand is en een server die rechtstreeks kan worden adresseerbaar met een sterke firewall. In dit scenario werkt het TCP-transport met een duplex-MEP en een HTTP-transport met een aanvraag-antwoord-MEP goed. Een algemene topologie voor peer-to-peertoepassingen is om beide eindpunten achter NAT's en firewalls te hebben. In dit scenario en in scenario's waarin de netwerktopologie onbekend is, moet u rekening houden met de volgende aanbevelingen:

  • Gebruik geen dubbele transporten. Een dubbel transport opent meer verbindingen, waardoor de kans op verbinding met succes wordt verminderd.

  • Ondersteuning voor het tot stand brengen van back-kanalen via de oorspronkelijke verbinding. Als u back-kanalen gebruikt, zoals in duplex TCP, worden er minder verbindingen geopend, waardoor de kans op verbinding wordt vergroot.

  • Gebruik een bereikbaar service voor het registreren van eindpunten of het doorsturen van verkeer. Het gebruik van een wereldwijd bereikbare verbindingsservice, zoals een Teredo-server, verhoogt de kans op verbinding aanzienlijk wanneer de netwerktopologie beperkend of onbekend is.

In de volgende tabellen worden de eenrichtings-, request-reply- en duplex-LEDEN en de standaard TCP, TCP met Teredo en standaard en dubbele HTTP-transporten in WCF onderzocht.

Adresseerbaarheid Server Direct Server Direct met NAT-traversal Server NAT Server NAT met NAT-doorkruising
Client direct Alle transporten en leden van het Europees Parlement Alle transporten en leden van het Europees Parlement Wordt niet ondersteund. Wordt niet ondersteund.
Client direct met NAT-traversal Elk transport en mep. Elk transport en mep. Wordt niet ondersteund. TCP met Teredo en eventuele MEP. Windows Vista heeft een configuratieoptie voor de hele machine ter ondersteuning van HTTP met Teredo.
Client NAT Elk niet-dual transport en MEP. Duplex MEP vereist TCP-transport. Elk niet-dual transport en MEP. Duplex MEP vereist TCP-transport. Wordt niet ondersteund. Wordt niet ondersteund.
Client NAT met NAT-traversal Elk niet-dual transport en MEP. Duplex MEP vereist TCP-transport. Alle, maar dubbele HTTP en alle MEP's. Duplex MEP vereist TCP-transport. Dual TCP-transport vereist Teredo. Windows Vista heeft een configuratieoptie voor de hele machine ter ondersteuning van HTTP met Teredo. Wordt niet ondersteund. TCP met Teredo en eventuele MEP. Windows Vista heeft een configuratieoptie voor de hele machine ter ondersteuning van HTTP met Teredo.
Firewallbeperkingen Server geopend Server met beheerde firewall Server met alleen HTTP-firewall Server met firewall voor alleen uitgaand verkeer
Client openen Elk transport en mep. Elk transport en mep. Elk HTTP-transport en EEN MEP. Wordt niet ondersteund.
Client met beheerde firewall Elk niet-dual transport en MEP. Duplex MEP vereist TCP-transport. Elk niet-dual transport en MEP. Duplex MEP vereist TCP-transport. Elk HTTP-transport en EEN MEP. Wordt niet ondersteund.
Client met alleen HTTP-firewall Elk HTTP-transport en EEN MEP. Elk HTTP-transport en EEN MEP. Elk HTTP-transport en EEN MEP. Wordt niet ondersteund.
Client met firewall voor alleen uitgaand verkeer Elk niet-dual transport en MEP. Duplex MEP vereist TCP-transport. Elk niet-dual transport en MEP. Duplex MEP vereist TCP-transport. Elk HTTP-transport en een niet-duplex MEP. Wordt niet ondersteund.