Att göra den bärbara datorn till en router är ett populärt sätt att lösa fel problem. Vidarebefordran finns så att en maskin kan skicka vidare paket vars destination inte är maskinen själv, och den har ingen åsikt om hur snabbt en webbläsare på samma maskin laddar en sida. De två vägarna ser bara likadana ut eftersom båda skickar trafik genom en tunnel. Skilj dem en gång, och en stor del av råden om att aktivera vidarebefordran eller öppna brandväggen visar sig beskriva en topologi du inte har.

Två paketvägar som ser identiska ut från skrivbordet

Webbläsaren på den bärbara datorn skapar sin egen förfrågan. Värden väljer tunnelrutten, klientprocessen packar in paketet och skickar det till motparten, och svaret kommer tillbaka till programmet. Ingenting i den sekvensen korsar ett vidarebefordranbeslut, eftersom den här maskinen är både källan och destinationen för samtalet.

Sätt nu en annan enhet på ett medvetet konfigurerat Ethernet-segment och gör den bärbara datorn till dess standardgateway. Den enheten startar förfrågan, den bärbara datorn tar emot ett paket adresserat någon annanstans, och kärnan måste avgöra om det ska skickas vidare. Det är vidarebefordranrollen, och den kommer med förutsättningar som klientrollen aldrig behövde: en tillåten transitväg, rutter på båda sidor och en returväg som fortfarande fungerar om översättning är en del av designen.

RoleWho originates the trafficWhat has to be true
Client onlyThe laptop itselfTunnel route, working resolver, supported profile
GatewayAnother deviceForwarding enabled, permitted transit, routes both ways, return-path decision

Vad ip_forward faktiskt ändrar

Kärnans IPv4 sysctl-dokumentation beskriver ip_forward som strömbrytaren som låter en värd skicka vidare paket mellan gränssnitt. Det är ingen snabbväg för trafik som värden själv skapat, och ingen läsning av den parametern gör en lokal webbläsare snabbare. Om något lägger vidarebefordran till tillstånd och policy på en maskin som tidigare gjorde mindre arbete.

Samma dokumentation varnar för att en ändring av värdet återställer andra IPv4-parametrar till deras standardvärden för värd eller router. Det gör strömbrytaren till en konfigurationshändelse snarare än en prövning: finjusterade inställningar kan rulla tillbaka under dig, och ändringen kan vara ansvarig för en regression som ingen skulle komma på att tillskriva den. Det betyder också att strömbrytaren bör sättas en gång, medvetet, av den som äger gatewayrollen. Att vippa den under en utredning av långsamhet är det enda fallet där biverkningen garanterat förväxlas med symtomet.

Tre brandväggsfrågor som inte är samma fråga

Att tillåta en VPN-lyssnare, att tillåta de tjänster den bärbara datorn kör och att tillåta trafik att passera genom den bärbara datorn är tre separata tillstånd. Det första låter en motpart nå en daemon, det andra exponerar något lokalt och det tredje gör maskinen till transit för någon annan. Var och en har en annan räckvidd, och den sista är mycket bredare än de svar en vanlig utgående applikation behöver.

När ett specifikt flöde är blockerat, namnge dess källa, destination, riktning och policyägare innan du redigerar en regel. En smal regel för det flödet är en rättelse; att acceptera allt på tunnelgränssnittet är en policyändring som råkar innehålla rättelsen. En webbläsare som fungerar efteråt bevisar att flödet fungerar, inte att den breda regeln var nödvändig.

Mät först när vägen är korrekt

Mät med samma destination, samma arbetsbelastning och jämförbara förhållanden, och ändra en variabel i taget. Ett test som samlar en vidarebefordranändring, en brandväggsutvidgning och en kopierad chifferinställning ger en siffra och ingen förklaring, eftersom ingenting i det säger vilken av de tre som flyttade resultatet.

Håll rutt- och resolverfel helt utanför prestandasamtalet. Ett namn som löses långsamt är inte ett genomströmningsproblem, och en överföring som stannar vid en fast storlek är vanligtvis en MTU-fråga och inte en hastighetsgräns. Skriv ned vilken av dessa tre du faktiskt observerade innan du jämför några siffror. Annars ärver nästa läsare en mätning som mäter fel sak och en ändring som ingen kan rättfärdiga.

Beskriv topologin du har, inte etiketten på klienten

En bärbar dator som delar sin anslutning, är värd för ett routat containernätverk eller bär trafik för en virtuell maskin är en gateway, vad programvaran än kallar sig. Ordet klient beskriver hur tunneln är konfigurerad, inte om paket skickas vidare till någon annan.

Gör rollen explicit i driftproceduren: vad som skapar trafik, vad som måste passera genom maskinen och vilken av de två den aktuella uppgiften handlar om. Aktivera gatewayrollen när den hör till den stödda planen, inte som en oförklarad hastighetsjustering tillämpad på en topologi som aldrig behövde en.

Relaterade artiklar