Server as klant: hokker OpenVPN-ienheid op in Pi mei dûbele rol
Twa OpenVPN-eksimplaren diele in Pi: ien nimt omreizgjende brûkers oan, de oare skillet de boppeste leveransier oan. Lês de namme fan de ienheid en de map foar't jo ien fan beide op 'e nij starte.
Twa OpenVPN-prosessen rinne op in Pi dy't tagelyk omreizgjende brûkers oannimt en in boppeste leveransier berikt, en se diele hast neat útsein de hardware. Ien harket nei ynkommende tunels wylst de oare nei bûten skillet. Elk lêst syn eigen map, en elk hat syn eigen falmodus. De ferkearde op 'e nij starte is de meast foarkommende manier wêrop in klantferbettering ynstee de harker omsmyt.
Koppelje de namme fan de ienheid oan de map dy't er lâdt
Upstream 2.6 leveret twa sjabloan-ienheden, [email protected] en [email protected]. It serversjabloan start yn /etc/openvpn/server en lâdt dêrwei %i.conf. It klantsjabloan start yn /etc/openvpn/client. In eksimplaar mei de namme roaming kin tagelyk op beide plakken bestean, as server en as klant, mei twa ûnferbâne konfiguraasjes en gjin keppeling tusken harren bûten de tekenrige.
Freegje systemd ynstee fan it bestânsysteem, om't pakketbouwers ekstra bestannen tafoegje dy't de wurkmap of de arguminten feroarje kinne dy't it binêre bestân krijt.
systemctl list-units --type=service 'openvpn-*@*' systemctl cat [email protected] systemctl show -p WorkingDirectory -p ExecStart [email protected]
It earste kommando listet elke oanmakke ienheid op, ek dy't mislearre en laden bleaun binne. It twadde printsje it ienheidsbestân tegearre mei elke oerskriuwing. It tredde is de fluchste manier om de twa feiten te sjen dy't de fraach beslisje: de map wêryn't it proses start, en it konfiguraasjepaad dat it krige.
Beslis nei pakketrjochting, net nei ynterface-namme
In servereksimplaar hat in harkjende socket en akseptearret ferbiningen. Syn fersifere ferfier is lokale ynfier en lokale útfier op 'e Pi, wylst it ferkear dat it foar brûkers trochstjoert it trochstjoerpaad folget en oan in oare set regels foldocht. In klantseksimplaar hat yn dy sin gjin harker: it skillet in peir oan, dat syn fersifere ferfier is lokale útfier rjochting de ûnderlaach.
Dat ferskil fertelt jo wêr't in regel heart. In regel dy't by in ynterface yn in trochstjoerkeatling past, lit allinnich ferkear ta dat de routing al keazen hat; hy kiest nea de rûte. As de pakketten fan in omreizgjende brûker troch it ferkearde paad nei bûten geane, is de keatling om te ûndersykjen forward, net output.
Sjoch nei sockets foar't jo teoretisearje. In server bûn oan udp/1194 toant in harkjende socket. De klant toant in assosjaasje mei it adres fan 'e leveransier en neat dat harket.
ss -lunp | grep openvpn ss -unp state established '( dport = :1194 or sport = :1194 )'
De standertrûte fan ien eksimplaar kin de antwurden fan 'e oare fange
In redirect-gateway dy't troch de boppeste klant treaun wurdt, ynstallearret in standertrûte dy't konkurrearret mei al it oare op 'e masine, ynklusyf de antwurden dy't de server nei omreizgjende brûkers stjoert. OpenVPN makket in útsûndering foar syn eigen peiradres sadat de tunnel berikber bliuwt, mar dy útsûndering seit neat oer in tillefoan op in hotelnetwurk.
It symptoom is meastentiids asymmetrysk. De hânskud foltôget, de klant meldt ferbûn, en it ferkear stjert nei it earste antwurdpakket. Boarnebasearre beliedsrouting, of in pakketmerk dat mei --mark op it servereksimplaar set wurdt, hâldt de twa streamen útinoar; gjinien is op himsels in folsleine regelset, en beide hawwe jildige rûtes nedich yn 'e tabel dy't se kieze.
Test de lokale beslissing ynstee fan 'e tastân fan 'e tunnel, om't de kearn de boarne en it ynterface kiest foar't OpenVPN it pakket sjocht.
ip route get 203.0.113.44 ip rule show
Start ien rol op 'e nij en bewize dat de oare oerlibbe
De folchoarder is wichtich as beide rollen fan deselde ûnderlaach ôfhinklik binne. Start de klant earst op 'e nij as de boppeste rûte bestean moat foar't brûkersferkear trochstjoerd wurde kin, en start de server earst op 'e nij as jo allinnich syn harker of syn poel feroarje. Befêstigje yn alle gefallen dêrnei beide ienheden, om't in mislearre werstart de oare rol mei ferâldere tastân rinne litte kin.
Skriuw de stopbetingst op foar't jo feroarje: blokkearret it ferlies fan 'e boppeste tunnel omreizgjende brûkers, of falt it werom op 'e eigen uplink fan 'e Pi? DNS en IPv6 hawwe ek in dúdlik antwurd nedich, om't in treaune resolver faak langer libbet as de rûte dy't him nuttich makke.
systemctl restart [email protected] systemctl is-active [email protected] journalctl -u [email protected] -n 20 --no-pager
Akseptearje de feroaring allinnich as trije dingen tagelyk jilde: in nije ynkommende ferbining foltôget, in trochstjoerde applikaasje berikt syn bestimming troch de bedoelde útgong, en beide prosessen melde noch harren ferwachte peir. As ien fan 'e trije mislearret, hawwe jo it ferkearde eksimplaar of de ferkearde rûte feroare, en de folgjende stap is de ienheid op 'e nij lêze ynstee fan eat oars op 'e nij te starten.