OpenVPN-serverhjelper: nettverk pluss nettmaske, aldri CIDR
IPv4-serverhjelperen tar et justert nettverk og en punktmaske, ikke et CIDR-suffiks. Sjekk området, bekreft puljen i loggen, og endre deretter størrelsen trygt.
En serverlinje som blander et CIDR-suffiks med en punktmaske stopper daemonen før den i det hele tatt åpner en port. Hjelperen server for IPv4 vil ha to atskilte argumenter: en justert nettverksadresse og deretter nettmasken i punktform. Alt annet på den linjen er gjetning, og i gjetningen går puljestørrelser og klientmasker galt.
De to argumentene hjelperen godtar
Skriv nettverket først og masken deretter, uten noe festet til adressen:
server 10.72.16.0 255.255.240.0Dette er formen for et /20. Linjen nedenfor er feilen, og den feiler ved parsing av alternativer, ikke under kjøring:
server 10.72.16.0/20 255.255.240.0Hold de to ideene atskilt når du feilsøker dette. En prefikslengde og en punktmaske beskriver samme område, men hjelperen godtar ikke begge samtidig, og en avvist linje gir en alternativfeil som navngir direktivet og ikke aritmetikken.
Juster nettverket før du skriver masken
Den første adressen er nettverksadressen til området, ikke en praktisk klientadresse inne i det. For et /20 går området fra 10.72.16.0 til 10.72.31.255, og bare den første av dem er et gyldig nettverksargument. Et /21 bruker 255.255.248.0 og spenner fra 10.72.16.0 til 10.72.23.255, så linjen er server 10.72.16.0 255.255.248.0.
Å endre prefikset endrer området og ingenting annet. Det endrer ikke hvor mange adresser én klient får, fordi det er en egenskap ved topologien, ikke ved masken på denne linjen.
Bekreft puljen fra serversiden
Start instansen i forgrunnen med detaljert logging og les linjene hjelperen sender ut. Puljen den bygde skrives ut ved oppstart, noe som er mer pålitelig enn å regne aritmetikken for hånd:
openvpn --config /etc/openvpn/server.conf --verb 4 --dev tun9 --port 1195Se etter puljesammendraget nær toppen av utdataene. Det lister området hjelperen reserverte, og hvis det området ikke stemmer med hensikten din, er argumentene på linjen feil, uansett hva maskearitmetikken sier.
Koble deretter til én klient og finn linjen som registrerer adressen den fikk. Den ene adressen, ved siden av puljeområdet, forteller deg om klienten havnet inne i den reserverte blokken eller et sted du ikke forventet. Hvis de to ikke stemmer, rett argumentene og ikke klienten. Hvis de stemmer og klienten fortsatt ikke når noe, var puljen aldri problemet.
Les klientens maske med topologien i tankene
En klient som viser et /30 på tunnelgrensesnittet sitt er ikke bevis på en ødelagt pulje. Ved punkt-til-punkt-adressering får hver klient en liten blokk, og grensesnittmasken beskriver den blokken, mens serverens pulje dekker helheten. Ved en subnett-topologi samsvarer klientens maske i stedet med puljens maske. Masken alene forteller derfor hvilken topologi som er i spill, ikke om puljen er skrevet riktig.
Kontroller den konfigurerte topologien og den tildelte adressen sammen før du trekker en konklusjon:
ip -4 addr show tun0Hvis adressen er inne i puljen og masken er smalere enn puljen, er det topologien som gjør jobben sin. Hvis adressen er utenfor puljen, er puljen feil, og ingen inspeksjon på klientsiden vil rette det.
Endre en aktiv pulje
Velg et område som ikke overlapper den gjeldende puljen, LAN’et eller noen rute som allerede er pushet til klienter. Overlapp er feilen som overlever en omstart og deretter, dager senere, dukker opp som ett sted som er utilgjengelig fra én retning.
Endre linjen, start på nytt og les oppstartspuljen på nytt før du slipper brukerne inn igjen. Hvis det nye området kolliderer med noe, viser samme oppstartsutdata det umiddelbart, og tilbakerulling er en endring av én linje pluss nok en omstart.
Hold det gamle området reservert en stund etter endringen. Klienter som kobler til sent kan fortsatt holde en adresse fra forrige pulje, og et nytt område som gjenbruker disse adressene gir doble tildelinger som ser ut som en ruteringsfeil. OpenVPN 2.6-håndboken dokumenterer hjelperens argumenter og utvidelsen, noe som er verdt å lese før du antar at en direktiv bruker samme notasjon som naboen.