Arbeta med NAT och brandväggar
Klienten och servern för en nätverksanslutning har ofta ingen direkt och öppen sökväg för kommunikation. Paket filtreras, dirigeras, analyseras och transformeras både på slutpunktsdatorerna och av mellanliggande datorer i nätverket. Nätverksadressöversättningar (NAT) och brandväggar är vanliga exempel på mellanliggande program som kan delta i nätverkskommunikation.
WCF-transporter (Windows Communication Foundation) och mönster för meddelandeutbyte (Parlamentsledamöter) reagerar annorlunda på förekomsten av NAT och brandväggar. Det här avsnittet beskriver hur NAT och brandväggar fungerar i vanliga nätverkstopologier. Rekommendationer för specifika kombinationer av WCF-transporter och europaparlamentets ledamöter ges som hjälper dig att göra dina program mer robusta för NAT och brandväggar i nätverket.
Hur NAT påverkar kommunikationen
NAT skapades för att flera datorer skulle kunna dela en enda extern IP-adress. En portommappnings-NAT mappar en intern IP-adress och port för en anslutning till en extern IP-adress med ett nytt portnummer. Med det nya portnumret kan NAT korrelera returtrafik med den ursprungliga kommunikationen. Många hemanvändare har nu en IP-adress som bara är privat dirigerbar och förlitar sig på en NAT för att tillhandahålla global routning av paket.
En NAT tillhandahåller ingen säkerhetsgräns. Vanliga NAT-konfigurationer förhindrar dock att de interna datorerna åtgärdas direkt. Detta skyddar både de interna datorerna från vissa oönskade anslutningar och gör det svårt att skriva serverprogram som asynkront måste skicka tillbaka data till klienten. NAT skriver om adresserna i paket så att det verkar som om anslutningar kommer från NAT-datorn. Detta gör att servern misslyckas när den försöker öppna en anslutning tillbaka till klienten. Om servern använder klientens upplevda adress misslyckas den eftersom klientadressen inte kan dirigeras offentligt. Om servern använder NAT-adressen kan den inte ansluta eftersom inget program lyssnar på datorn.
Vissa NAT stöder konfiguration av vidarebefordransregler så att externa datorer kan ansluta till en viss intern dator. Instruktionerna för att konfigurera regler för vidarebefordring varierar mellan olika NAT och att be slutanvändarna att ändra sin NAT-konfiguration rekommenderas inte för de flesta program. Många slutanvändare kan inte eller vill inte ändra sin NAT-konfiguration för ett visst program.
Hur brandväggar påverkar kommunikationen
En brandvägg är en programvara eller maskinvaruenhet som tillämpar regler för den trafik som passerar för att avgöra om passage ska tillåtas eller nekas. Du kan konfigurera brandväggar för att undersöka inkommande och/eller utgående trafikströmmar. Brandväggen tillhandahåller en säkerhetsgräns för nätverket antingen vid nätverksgränsen eller på slutpunktsvärden. Företagsanvändare har traditionellt hållit sina servrar bakom en brandvägg för att förhindra skadliga attacker. Sedan introduktionen av den personliga brandväggen i Windows XP har även antalet hemanvändare bakom en brandvägg ökat avsevärt. Detta gör det troligt att en eller båda ändarna av en anslutning har en brandvägg som undersöker paket.
Brandväggar varierar kraftigt när det gäller deras komplexitet och förmåga att undersöka paket. Enkla brandväggar tillämpar regler baserat på käll- och måladresser och portar i paket. Intelligenta brandväggar kan också undersöka innehållet i paket för att fatta beslut. Dessa brandväggar finns i många olika konfigurationer och används ofta för specialiserade program.
En vanlig konfiguration för en brandvägg för hemanvändare är att förbjuda inkommande anslutningar om inte en utgående anslutning gjordes till den datorn tidigare. En vanlig konfiguration för en brandvägg för företagsanvändare är att förbjuda inkommande anslutningar på alla portar utom en grupp som är specifikt identifierad. Ett exempel är en brandvägg som förbjuder anslutningar på alla portar förutom portarna 80 och 443 för att tillhandahålla HTTP- och HTTPS-tjänsten. Hanterade brandväggar finns för både hemanvändare och företagsanvändare som tillåter en betrodd användare eller process på datorn att ändra brandväggskonfigurationen. Hanterade brandväggar är vanligare för hemanvändare där det inte finns någon företagsprincip som styr nätverksanvändningen.
Använda Teredo
Teredo är en IPv6-övergångsteknik som möjliggör direkt adresserbarhet för datorer bakom en NAT. Teredo förlitar sig på användningen av en server som kan dirigeras offentligt och globalt för att annonsera potentiella anslutningar. Teredo-servern ger programklienten och servern en gemensam mötesplats där de kan utbyta anslutningsinformation. Datorerna begär sedan en tillfällig Teredo-adress och paket skickas via det befintliga nätverket. Teredo-stöd i WCF kräver aktivering av IPv6- och Teredo-stöd i operativsystemet. Windows XP och senare operativsystem stöder Teredo. Windows Vista och senare operativsystem stöder IPv6 som standard och kräver bara att användaren aktiverar Teredo. Windows XP SP2 och Windows Server 2003 kräver att användaren aktiverar både IPv6 och Teredo. Mer information finns i Översikt över Teredo.
Välja ett transport- och meddelandeutbytesmönster
Att välja en transport och europaparlamentariker är en process i tre steg:
Analysera slutpunktsdatorernas adresserbarhet. Företagsservrar har vanligtvis direkt adresserbarhet, medan slutanvändarna ofta har sin adresserbarhet blockerad av NAT:er. Om båda slutpunkterna ligger bakom en NAT, till exempel i peer-to-peer-scenarier mellan slutanvändare, kan du behöva en teknik som Teredo för att tillhandahålla adresserbarhet.
Analysera protokoll- och portbegränsningarna för slutpunktsdatorerna. Företagsservrar ligger vanligtvis bakom starka brandväggar som blockerar många portar. Port 80 är dock ofta öppen för att tillåta HTTP-trafik och port 443 är öppen för att tillåta HTTPS-trafik. Slutanvändare är mindre benägna att ha portbegränsningar men kan finnas bakom en brandvägg som endast tillåter utgående anslutningar. Vissa brandväggar tillåter hantering av program på slutpunkten för att selektivt öppna anslutningar.
Beräkna de transporter och parlamentsledamöter som nätverksbegränsningarnas adresserbarhet och portar tillåter.
En vanlig topologi för klientserverprogram är att ha klienter som ligger bakom en NAT utan Teredo med en utgående brandvägg och en server som är direkt adresserbar med en stark brandvägg. I det här scenariot fungerar TCP-transporten med en dubbelsidig parlamentsledamot och en HTTP-transport med en parlamentsledamot för begärandesvar. En vanlig topologi för peer-to-peer-program är att ha både slutpunkter bakom NAT:er och brandväggar. I det här scenariot och i scenarier där nätverkstopologin är okänd bör du överväga följande rekommendationer:
Använd inte dubbla transporter. En dubbel transport öppnar fler anslutningar, vilket minskar risken för att ansluta.
Stöd för att upprätta tillbaka kanaler via den ursprungliga anslutningen. Om du använder backkanaler, till exempel i duplex TCP, öppnas färre anslutningar, vilket ökar risken för att ansluta.
Använd en nåbar tjänst för att antingen registrera slutpunkter eller vidarebefordra trafik. Om du använder en globalt nåbar anslutningstjänst, till exempel en Teredo-server, ökar risken för att ansluta korrekt när nätverkstopologin är restriktiv eller okänd.
Följande tabeller undersöker enkelriktade, begärandesvars- och duplex-parlamentsledamöter och standard-TCP, TCP med Teredo och standard- och dubbla HTTP-transporter i WCF.
Adresserbarhet | Serverdirigering | Serverdirigering med NAT-bläddering | Server-NAT | Server-NAT med NAT-bläddering |
---|---|---|---|---|
Klientdirigering | Alla transporter och europaparlamentariker | Alla transporter och europaparlamentariker | Stöds ej. | Stöds ej. |
Klientdirigering med NAT-bläddering | Alla transporter och europaparlamentariker. | Alla transporter och europaparlamentariker. | Stöds ej. | TCP med Teredo och valfri parlamentsledamot. Windows Vista har ett datoromfattande konfigurationsalternativ som stöder HTTP med Teredo. |
Klient-NAT | Alla icke-dubbla transporter och europaparlamentariker. Duplex MEP kräver TCP-transport. | Alla icke-dubbla transporter och europaparlamentariker. Duplex MEP kräver TCP-transport. | Stöds ej. | Stöds ej. |
Klient-NAT med NAT-bläddering | Alla icke-dubbla transporter och europaparlamentariker. Duplex MEP kräver TCP-transport. | Alla utom dubbla HTTP och valfri parlamentsledamot. Duplex MEP kräver TCP-transport. Dubbel TCP-transport kräver Teredo. Windows Vista har ett datoromfattande konfigurationsalternativ som stöder HTTP med Teredo. | Stöds ej. | TCP med Teredo och valfri parlamentsledamot. Windows Vista har ett datoromfattande konfigurationsalternativ som stöder HTTP med Teredo. |
Brandväggsbegränsningar | Servern är öppen | Server med hanterad brandvägg | Server med endast HTTP-brandvägg | Server med brandvägg endast för utgående trafik |
---|---|---|---|---|
Öppen klient | Alla transporter och europaparlamentariker. | Alla transporter och europaparlamentariker. | Alla HTTP-transporter och EUROPA-parlamentariker. | Stöds ej. |
Klient med hanterad brandvägg | Alla icke-dubbla transporter och europaparlamentariker. Duplex MEP kräver TCP-transport. | Alla icke-dubbla transporter och europaparlamentariker. Duplex MEP kräver TCP-transport. | Alla HTTP-transporter och EUROPA-parlamentariker. | Stöds ej. |
Klient med endast HTTP-brandvägg | Alla HTTP-transporter och EUROPA-parlamentariker. | Alla HTTP-transporter och EUROPA-parlamentariker. | Alla HTTP-transporter och EUROPA-parlamentariker. | Stöds ej. |
Klient med utgående brandvägg | Alla icke-dubbla transporter och europaparlamentariker. Duplex MEP kräver TCP-transport. | Alla icke-dubbla transporter och europaparlamentariker. Duplex MEP kräver TCP-transport. | Alla HTTP-transporter och eventuella icke-duplex-mep-parlamentariker. | Stöds ej. |