Een Pi, twee OpenVPN-instansies: wat elke eenheid lees
Twee OpenVPN-daemons op een Pi lees verskillende konfigurasielêers en vertrek deur verskillende hake. Karteer elke instansie en toets dan die vragpad afsonderlik.
Tel die OpenVPN prosesse voordat jy 'n profiel aanraak. 'n Pi wat swerwende gebruikers toelaat en ook 'n opstroomdiens skakel, laat twee daemons loop, en elkeen lees 'n konfigurasielêer wat deur die instansienaam wat jy getik het, gekies word. Die verpakte sjablone gee dan aan elke daemon sy eie werkgids, sy eie looptydstatuslêer en sy eie tonneltoestel. Kry jy daardie verdeling verkeerd, sal jy 'n aand spandeer om 'n korrekte instelling te verander in 'n lêer wat die lopende proses nooit oopmaak nie.
Elke instansienaam kies sy eie lêer
In die eenheidlêers wat met OpenVPN 2.6 verskeep word, dra die beginargumente 'n instansieplekhouer wat gevul word uit die teks ná die @ teken. Die bediener-sjabloon loop uit die bediener-konfigurasiegids en los sy argument op teen %i.conf daar, terwyl die kliënt-sjabloon dieselfde uit die kliëntgids doen. Dus [email protected] lees admits.conf in die bedienergids en [email protected] lees uplink.conf in die kliëntgids, en nie een van die name het enige betekenis in die ander gids nie.
Bevestig die kartering op die masjien in plaas daarvan om aan te neem die pakket het die opstroom-verstekke behou. 'n Verspreidings-drop-in mag die werkgids of die konfigurasie-argument heeltemal vervang.
systemctl cat [email protected]
systemctl cat [email protected]Lees die WorkingDirectory reël en die konfigurasie-argument in daardie uitset, want die geaktiveerde eenheid is die enigste ding wat besluit watter lêer laai. 'n Drop-in wat --config by ExecStart voeg, wen bo die sjabloon selfs wanneer die sjabloonpad reg lyk. Vra na die fragment- en drop-in-paaie wanneer jy wil weet of 'n plaaslike oorheersing in werking is. As beide rolle na een lêer oplos, het jy 'n enkele proses wat probeer om 'n bediener en 'n kliënt te wees, en die latere opsie in daardie lêer wen stilweg.
Plaaslike vervoer en deurgestuurde vrag tref verskillende hake
Die bediener se geënkripteerde verbinding na elke swerwende gebruiker word op die Pi self geskep, so sy buitenste antwoorde vertrek deur die plaaslike uitsethaak. Die kliënt se verbinding na sy opstroom-portuur is ook plaaslik geskepte uitset, al bereik dit 'n afgeleë netwerk. Deurgestuurde vrag is 'n derde kategorie, en die kern pas dit eers aan nadat hy reeds 'n uitgaande toestel vir die pakket gekies het.
| Flow | Hook that sees it | What to inspect |
|---|---|---|
| Roaming user handshakes to the server | Local input and local output | Listener socket, bind address, rule admitting the UDP port |
| User payload leaving through the upstream tunnel | Forward | IPv4 forwarding switch, selected route, permission rule, any translation |
| Pi's own connection to the upstream peer | Local output | Underlay route to the provider endpoint, not the tunnel route |
'n Reël wat 'n uitgaande koppelvlak binne 'n deurstuurketting pas, kan 'n pakket toelaat of laat val wat roetering reeds aan daardie koppelvlak toegewys het, maar dit kies nooit die koppelvlak nie. Wanneer een gasheer 'n tonnel beëindig en 'n ander begin, is die beleid wat gebruikersvrag in die opstroom-tonnel stuur en die beleid wat die Pi se eie geënkripteerde antwoorde beskerm, aparte besluite. Hulle beland toevallig op dieselfde fisiese NIC, en daarom word hulle verwar.
Daardie onderskeid verduidelik 'n algemene halwe mislukking. Gebruikers verbind, die handdruk voltooi, en hulle verkeer vertrek steeds die verkeerde kant om, want die handdruk was plaaslik en die vrag was deurgestuur en net een van die twee is ooit getoets.
'n Ingevoerde roete kan antwoorde aan jou gebruikers insluk
Die kliëntprofiel se sekuriteitsinstelling besluit wat die opstroom in die Pi se roetertabel mag stoot, en 'n breë herleiding is die opsie wat 'n werkende dubbele-rol gasheer in 'n gebreekte een verander. As die gestote roete die publieke adresse van swerwende gebruikers dek, kan antwoorde wat die bediener na hulle skep, die nuwe roete in die opstroom-tonnel volg in plaas daarvan om deur die onderlaag te vertrek. Mense bevestig dikwels dat die tonnel na die verskaffer nog werk en stop daar, want daardie verkeer is die tonnel se eie vervoer en dit hou aan vloei terwyl alles anders wanfunksioneer.
Bron- of merkiegebaseerde beleid is hoe die twee strome apart bly. OpenVPN se Linux-merkie-opsie merk 'n daemon se eie geënkripteerde pakkette met 'n vuurmuurmerk, wat 'n roeteringsreël dan na 'n toegewyde tabel kan stuur. Bronadresse werk net so goed wanneer die bediener se buitenste antwoorde altyd van een onderlaagadres vertrek. Enige benadering benodig geldige roetes in die tabel wat dit kies en 'n uitsondering vir die verskaffer se eindpunt, anders hou die tonnel self op om op te kom.
Vra die kern na die pad wat 'n antwoord werklik sou neem voordat jy enige reël skryf. Die adresse hieronder is plekhouers vir 'n Pi-onderlaagadres en een swerwende gebruiker se publieke adres.
ip rule show
ip route get 198.51.100.7 from 192.0.2.10Verifieer die verdeling en stop dan een rol op 'n slag
Toets drie strome apart, want 'n werkende handdruk bewys niks oor die ander twee nie. Aanvaar 'n nuwe inkomende verbinding, stuur een toegelate toepassing deur die opstroom-uitgang, en bevestig dat beide prosesse steeds hulle eie porture bereik.
Stop dan die kliëntrol en kyk wat die bedienerrol behou. Dit is die goedkoopste manier om 'n roete- of merkiereël te vind wat vir een instansie bedoel was en op albei toegepas is.
systemctl stop [email protected]
systemctl status [email protected] --no-pager
ss -lunp | grep openvpn
journalctl -u [email protected] -n 20 --no-pagerWat jy wil sien, is die luisteraar wat nog gebind is, die tonneltoestel wat nog teenwoordig is, en die log wat vry is van nuwe foute terwyl die kliëntrol af is. As die stop van die kliënt ook die bediener se antwoorde aan bestaande gebruikers afsny, deel die twee rolle iets wat aan een van hulle beperk moes wees. Teken aan watter instansie, watter konfigurasielêer en watter vloeieienaar elke verandering geraak het, want die volgende persoon wat hierdie gasheer ontfout, sal andersins dieselfde ontdekking van nul af herhaal.