En serverlinje, der blander et CIDR-suffiks med en prikket maske, stopper daemonen, før den overhovedet åbner en port. Hjælperen server til IPv4 vil have to adskilte argumenter: en justeret netværksadresse og derefter netmasken i prikket form. Alt andet på den linje er gætværk, og det er i gætværket, at puljestørrelser og klientmasker går galt.

De to argumenter, som hjælperen accepterer

Skriv netværket først og masken derefter, uden noget føjet til adressen:

server 10.72.16.0 255.255.240.0

Dette er formen for et /20. Linjen nedenfor er fejlen, og den fejler ved parsing af tilvalg, ikke under kørsel:

server 10.72.16.0/20 255.255.240.0

Hold de to idéer adskilt, når du fejlfinder dette. En præfikslængde og en prikket maske beskriver det samme spænd, men hjælperen accepterer ikke begge på én gang, og en afvist linje giver en tilvalgsfejl, der navngiver direktivet snarere end aritmetikken.

Juster netværket, før du skriver masken

Den første adresse er områdets netværksadresse, ikke en bekvem klientadresse indeni det. For et /20 løber spændet fra 10.72.16.0 til 10.72.31.255, og kun den første af dem er et gyldigt netværksargument. Et /21 bruger 255.255.248.0 og spænder fra 10.72.16.0 til 10.72.23.255, så dets linje er server 10.72.16.0 255.255.248.0.

At ændre præfikset ændrer spændet og intet andet. Det ændrer ikke, hvor mange adresser en enkelt klient får, for det er en egenskab ved topologien, ikke ved masken på denne linje.

Bekræft puljen fra serversiden

Start instansen i forgrunden med detaljeret logning, og læs de linjer, hjælperen udsender. Den pulje, den byggede, udskrives ved opstart, hvilket er mere pålideligt end at regne aritmetikken i hånden:

openvpn --config /etc/openvpn/server.conf --verb 4 --dev tun9 --port 1195

Se efter puljeoversigten nær toppen af outputtet. Den lister det område, hjælperen reserverede, og hvis det område ikke svarer til din hensigt, er argumenterne på linjen forkerte, uanset hvad maskearitmetikken siger.

Forbind derefter én klient, og find den linje, der registrerer den adresse, den fik. Den ene adresse, ved siden af puljeområdet, fortæller dig, om klienten landede inde i den reserverede blok eller et sted, du ikke forventede. Hvis de to ikke stemmer, ret argumenterne i stedet for klienten. Hvis de stemmer, og klienten stadig ikke kan nå noget, var puljen aldrig problemet.

Læs klientens maske med topologien i tankerne

En klient, der viser et /30 på sin tunnelgrænseflade, er ikke bevis på en ødelagt pulje. Under punkt-til-punkt-adressering får hver klient en lille blok, og grænsefladens maske beskriver den blok, mens serverens pulje dækker helheden. Under en subnet-topologi matcher klientens maske i stedet puljens maske. Masken alene fortæller derfor, hvilken topologi der er i spil, ikke om puljen er skrevet korrekt.

Kontroller den konfigurerede topologi og den tildelte adresse sammen, før du drager en konklusion:

ip -4 addr show tun0

Hvis adressen ligger inde i puljen, og masken er smallere end puljen, er det topologien, der gør sit arbejde. Hvis adressen ligger uden for puljen, er puljen forkert, og ingen inspektion på klientsiden vil rette det.

Ændring af en aktiv pulje

Vælg et område, der ikke overlapper den aktuelle pulje, LAN’et eller enhver rute, der allerede er pushet til klienter. Overlap er den fejl, der overlever en genstart og derefter dukker op dage senere som et sted, der er uopnåeligt fra én retning.

Skift linjen, genstart, og læs opstartspuljen igen, før du lukker brugerne ind. Hvis det nye område støder på noget, viser det samme opstartsoutput det med det samme, og tilbagerulning er en ændring af én linje plus endnu en genstart.

Hold det gamle område reserveret et stykke tid efter ændringen. Klienter, der forbinder sent, kan stadig holde en adresse fra den forrige pulje, og et nyt område, der genbruger disse adresser, giver dobbelte tildelinger, der ligner en ruteringsfejl. OpenVPN 2.6-manualen dokumenterer hjælperens argumenter og dens udvidelse, hvilket er værd at læse, før du antager, at et direktiv bruger samme notation som sin nabo.

Relaterede artikler