Brandväggsregler accepterar en första och en sista adress, som 192.168.0.200 till 192.168.0.255, medan rutter inte gör det. En ruttpost har bara plats för ett nätverk och en mask, vilket betyder att ett sammanhängande intervall måste bli ett eller flera justerade prefix innan OpenVPN installerar det. En profil som parar route-nopull med ett icke-justerat intervall är där felet brukar gömma sig, eftersom filen parsas och ingen rutt matchar. Få blocken rätt och felet blir synligt i ett enda kommando.

Myten: ett intervall är en rutt

Ruttabeller lagrar nätverks- och maskpar och väljer den längsta träffen, så ett intervall med en start och ett slut har ingenstans att bo. Ett prefix som spänner över 256 adresser täcker .0 till .255, hälften av den storleken täcker .0 till .127, och bara ett intervall justerat mot dessa kanter passar i ett steg. Allt annat måste skäras i block. En mindre rutt betyder fortfarande det ursprungliga intervallet.

Ett intervall som inte är prefixjusterat är inte en komprimerad rutt. Det är en annan sorts objekt, och att behandla det som en rutt är där det tysta felet börjar.

Justering är aritmetik, inte stil

Blockstorlekarna bestäms av prefixlängden. Ett /29 kan bara börja på en adress som är delbar med 8, ett /28 på en som är delbar med 16, ett /27 på en som är delbar med 32. Flytta ett block från sin gräns och masken täcker en annan uppsättning adresser än du menade.

Summera från den låga änden. Ta i varje steg det största justerade blocket som inte passerar intervallets slut och fortsätt sedan på den första adressen efter det. Blocken kan inte överlappa, eftersom varje börjar där det föregående stannade.

Två personer som gör detta för hand bör nå samma resultat. En oenighet betyder att någon tillät en start som inte var justerad.

Gå igenom 200 till 255

StepStartBlock that fitsLine for the profile
1.200, multiple of 8/29, 8 addresses192.168.0.200 255.255.255.248
2.208, multiple of 16/28, 16 addresses192.168.0.208 255.255.255.240
3.224, multiple of 32/27, 32 addresses192.168.0.224 255.255.255.224

Intervallet börjar på .200, vilket är en multipel av 8, så det första blocket är ett /29 från .200 till .207. Efter dessa åtta adresser är det första lediga värdet .208, som går jämnt upp i 16, så ett /28 tar .208 till .223. Det som återstår är .224 till .255, trettiotvå adresser som börjar på en multipel av 32, alltså ett /27. De tre raderna är hela uppdelningen.

Skriv dem som ruttrader i stället för som prosa. En profil som bara har den första raden täcker åtta adresser och lämnar resten utanför tunneln.

route-nopull
route 192.168.0.200 255.255.255.248
route 192.168.0.208 255.255.255.240
route 192.168.0.224 255.255.255.224

Det sista blocket behöver en gränskontroll. Inuti 192.168.0.224/27 är .224 nätverksadressen och .255 är broadcastadressen, så en värd som måste svara på .255 täcks av prefixet och är fortfarande oåtkomlig. Flytta den värden eller dela intervallet annorlunda i stället för att routa blocket och hoppas.

Vad route-nopull gör med bilden

Lägg bara till route-nopull när rutterna som servern skjuter ut är oönskade. Utan direktivet finns utskjutna rutter och dessa rader sida vid sida, och det mest specifika prefixet vinner. Med det försvinner även utskjutna DNS- och DHCP-alternativ, så intern namnutlösning behöver sin egen konfiguration. Den bieffekten överraskar folk som lade till direktivet för att rätta ett ruttproblem.

Lägg till det av rätt skäl, inte som en automatisk reflex. Att ta bort utskjutna rutter är ett policybeslut med en DNS-konsekvens. Om servern kan skjuta ut samma tre prefix, låt den, och ta bort kopiorna på klientsidan så att en ägare kontrollerar listan.

Kontroller som fångar de vanliga felen

Kontrollera att varje mask är en sammanhängande följd av ettor. Värdet 255.255.255.248 godkänns och 255.255.255.200 underkänns, och en mask som inte är sammanhängande avvisas eller läses fel. Bekräfta sedan vägen för en adress i varje block.

ip route get 192.168.0.205
ip route get 192.168.0.220
ip route get 192.168.0.240

Varje svar bör namnge tunnelgränssnittet. Ett resultat som namnger den fysiska adaptern betyder att raden aldrig installerades, vilket ofta händer när en nätverkshanterare på skrivbordet skriver om tabellen efter att profilen har anslutit.

Välj en ägare för listan. När servern kan skjuta ut samma prefix, skjut ut dem och ta bort ändringarna på klientsidan. En ägare betyder att ett stavfel har en plats, och klienten och servern kan inte vara oeniga om vilka adresser som ligger inne i tunneln.

Relaterade artiklar