Du ansluter tunneln, kör ip route och den ursprungliga standardgatewayen sitter fortfarande kvar. Nästa tanke är att klienten misslyckades med att ta över rutten, så du tar bort standardrutten manuellt och tappar all anslutning. Den posten ska vara kvar. Med redirect-gateway def1 installerar OpenVPN två mer specifika rutter som rankas högre än den vanliga standardrutten i stället för att ersätta den. Den gamla gatewayen finns kvar och slutar bära den trafik du testade.

Vad def1 faktiskt gör

Flaggan lägger till 0.0.0.0/1 och 128.0.0.0/1, båda riktade mot tunneln. 0.0.0.0/1 tar varje adress vars första oktett är 0 till 127, och 128.0.0.0/1 tar 128 till 255, så varje IPv4-mål har en träff som är mer specifik än den gamla standardrutten. Prefixlängden, inte metriken, avgör vilken rutt som vinner.

Att lämna den ursprungliga standardrutten kvar är avsiktligt. Klienten behöver inte komma ihåg vad den ersatte, och den skriver inte om rutten som bär dess egen anslutning till VPN-servern. Vid frånkoppling tar den bort de två halvrutterna och tabellen återgår till vad den var.

Varför /1 och inte /0

Routning väljer det längsta matchande prefixet, inte den lägsta metriken, så en /1 slår en /0 oavsett vad standardrutens metrik säger. Båda halvorna finns eftersom en /1 bara täcker halva utrymmet; med bara 0.0.0.0/1 närvarande följer allt från 128.0.0.0 och uppåt fortfarande den gamla standardrutten, vilket ger det förvirrande symptomet att vissa webbplatser fungerar och andra inte.

Att höja eller sänka den gamla standardrutens metrik ändrar ingenting, och en standardrutt med lägre metrik på ett annat gränssnitt stjäl inte trafiken heller. Prefixlängden avgör först, och bara lika prefix faller tillbaka på metriken.

Läs en faktisk routingtabell

En ansluten värd kan visa alla tre posterna samtidigt, med tunneln som bär halvorna och den ursprungliga gatewayen fortfarande listad. Adresserna är exempel snarare än en konfiguration att kopiera, eftersom gränssnittsnamn, tunneltopologi och extra rutter varierar mellan plattform och klient.

default via 192.168.50.1 dev wlan0
0.0.0.0/1 via 10.8.0.1 dev tun0
128.0.0.0/1 via 10.8.0.1 dev tun0

Det som spelar roll är förhållandet: två specifika halvor ovanför en allmän standardrutt. Den gamla gatewayraden stannar eftersom inget ersatte den.

Kontrollera vilken rutt paketet faktiskt tar

Mer specifika rutter kan fortfarande vinna: en rutt för ett privat intervall, ett lokalt subnät eller VPN-serverns egen adress är längre än en /1. Tunneln behöver en yttre väg till sin server, och att skicka den anslutningen tillbaka in i tunneln skulle bryta den omedelbart. På Linux, fråga kärnan i stället för att läsa tabellen med ögat: ip route get med målet du bryr dig om skriver ut den valda rutten, gränssnittet och källan. Om policyrouting är konfigurerad ska du också inspektera reglerna, eftersom en regel kan välja en annan tabell innan huvudtabellen konsulteras.

Om bara en del av IPv4 beter sig fel, bekräfta att båda halvorna installerades och leta sedan efter ett undantag som matchar det misslyckade målet. Att ta bort den gamla standardrutten är ingen lösning, och det tar bort den rutt klienten behöver för att riva tunneln rent.

Vad def1 inte täcker

Två IPv4-poster säger ingenting om IPv6: en värd med IPv6-anslutning fortsätter använda sin egen standardrutt tills något omdirigerar den familjen separat, vilket är varför viss trafik verkar kringgå tunneln i ett dual-stack-nätverk. Andra klienter och nätverkshanterare implementerar fulltunnelrouting annorlunda, och deras tabeller kommer inte att matcha. Beteendet hos def1 som beskrivs här tillhör OpenVPN:s dokumenterade flagga, inte varje VPN på maskinen.

En kill switch svarar på en annan fråga: vad maskinen gör när tunneln faller. Routingprioritet avgör vart trafiken går medan tunneln är uppe; den avgör inte vad en brandvägg gör efteråt. Arbetsordning: läs tabellen, bekräfta att båda halvorna finns, kör ip route get för det misslyckade målet, kontrollera policyreglerna och titta sedan på IPv6 separat. Låt den gamla standardrutten ligga där den är.

Relaterade artiklar