Tel OpenVPN-prosessane før du rører ein profil. Ein Pi som tek imot gjestande brukarar og samstundes ringjer opp ein oppstrømseneste, køyrer to demonar, og kvar av dei les ei konfigurasjonsfil som vert vald av instansnamnet du skreiv inn. Malane i pakken gjev deretter kvar demon si eiga arbeidsmappe, si eiga køyretidsstatusfil og si eiga tunneleining. Gjer du denne delinga feil, brukar du ein kveld på å endre ei riktig innstilling i ei fil som den køyrande prosessen aldri opnar.

Kvart instansnamn vel si eiga fil

I einingfilene som følgjer med OpenVPN 2.6, ber startargumenta ein instansplasshaldar som vert fylt ut frå teksten etter @-teiknet. Servermalen køyrer frå konfigurasjonsmappa til serveren og løyser argumentet sitt mot %i.conf der, medan klientmalen gjer det same frå klientmappa. Så [email protected] les admits.conf i servermappa, og [email protected] les uplink.conf i klientmappa, og ingen av desse namna har noka meining i den andre mappa.

Stadfest tilordninga på maskina i staden for å gå ut frå at pakken har halde på oppstrøms standardverdiar. Ein drop-in frå distribusjonen kan erstatta arbeidsmappa eller konfigurasjonsargumentet heilt.

systemctl cat [email protected]
systemctl cat [email protected]

Les WorkingDirectory-linja og konfigurasjonsargumentet i den utdataen, fordi den aktiverte eininga er det einaste som avgjer kva fil som vert lasta. Ein drop-in som legg --config til ExecStart, vinn over malen sjølv når malstien ser riktig ut. Spør etter fragment- og drop-in-stiane når du vil vita om ei lokal overstyring er i spel. Viss begge rollene løyser seg til éi fil, har du éin prosess som prøver å vera både server og klient, og det seinare alternativet i den fila vinn i stillheit.

Lokal transport og videresend nyttelast treffer ulike krokak

Den krypterte sambindinga til serveren til kvar gjestande brukar vert generert på Pi-en sjølv, så dei ytre svara går ut gjennom den lokale utdatakroken. Sambindinga til klienten til oppstrømspartnaren er òg lokalt generert utdata, sjølv om ho når eit eksternt nettverk. Videresend nyttelast er den tredje kategorien, og kjernen matchar han først etter at han allereie har valt ei utgåande eining for pakken.

FlowHook that sees itWhat to inspect
Roaming user handshakes to the serverLocal input and local outputListener socket, bind address, rule admitting the UDP port
User payload leaving through the upstream tunnelForwardIPv4 forwarding switch, selected route, permission rule, any translation
Pi's own connection to the upstream peerLocal outputUnderlay route to the provider endpoint, not the tunnel route

Ei regel som matchar eit utgåande grensesnitt inne i ei forward-kjede, kan tillata eller forkasta ein pakke som rutinga allereie har tildelt det grensesnittet, men ho vel aldri grensesnittet. Når éin vert avsluttar éin tunnel og startar ein annan, er politikken som sender brukarnyttelast inn i oppstrømstunnelen, og politikken som verner dei eigne krypterte svara til Pi-en, to separate avgjerder. Dei hamnar tilfeldigvis på same fysiske NIC, og difor vert dei forveksla.

Den skilnaden forklarer ein vanleg halvfeil. Brukarane koplar til, handtrykket vert fullført, og trafikken deira går likevel ut feil veg, fordi handtrykket var lokalt og nyttelasten var forward, og berre éin av dei to vart nokon gong testa.

Ei importert rute kan svelgje svara til brukarane dine

Tryggingsinnstillinga i klientprofilen avgjer kva oppstrømen kan dytte inn i rutetabellen til Pi-en, og ei brei omdirigering er alternativet som gjer ein fungerande vert med to roller om til ein øydelagd ein. Viss den dytta ruta dekkjer dei offentlege adressene til gjestande brukarar, kan svara som serveren genererer mot dei, fylgje den nye ruta inn i oppstrømstunnelen i staden for å gå ut via underlaget. Folk stadfester ofte at tunnelen til leverandøren framleis verkar, og stoppar der, fordi den trafikken er den eigen transporten til tunnelen og held fram med å flyte medan alt anna oppfører seg feil.

Politikk basert på kjelde eller mark er måten dei to straumane held seg fråskilde på. Linux-mark-alternativet til OpenVPN stemplar dei eigne krypterte pakkane til demonen med ein brannmurmark, som ei ruteringsregel deretter kan senda til ein eigen tabell. Kjeldeadresser fungerer like godt når dei ytre svara til serveren alltid går ut frå éi underlagsadresse. Begge tilnærmingane treng gyldige ruter i tabellen ho vel, og eit unntak for endepunktet til leverandøren, elles kjem ikkje tunnelen sjølv opp.

Spør kjernen om kva bane eit svar faktisk ville ta, før du skriv noka regel. Adressene nedanfor er plasshaldarar for ei underlagsadresse på Pi-en og den offentlege adressa til éin gjestande brukar.

ip rule show
ip route get 198.51.100.7 from 192.0.2.10

Stadfest delinga, og stopp deretter éi rolle om gongen

Test tre straumar kvar for seg, fordi eit handtrykk som verkar ikkje beviser noko om dei to andre. Godta ei ny innkomande tilkoping, send éin tillaten applikasjon ut gjennom oppstrømsutgangen, og stadfest at begge prosessane framleis når sine eigne partnarar.

Stopp deretter klientrolla og sjå kva serverrolla held på. Dette er den billegaste måten å finna ei rute- eller mark-regel som var meint for éin instans og brukt på begge.

systemctl stop [email protected]
systemctl status [email protected] --no-pager
ss -lunp | grep openvpn
journalctl -u [email protected] -n 20 --no-pager

Det du vil sjå, er at lyttaren framleis er bunden, at tunneleininga framleis finst, og at loggen er fri for nye feil medan klientrolla er nede. Viss det å stoppa klienten òg kuttar svara til serveren til eksisterande brukarar, deler dei to rollene noko som burde vore avgrensa til éin av dei. Noter kva instans, kva konfigurasjonsfil og kva straumeigar kvar endring rørte, fordi den neste som feilsøkjer denne verten elles gjer den same oppdaginga frå null.

Relaterte artiklar