Teie VPN töötab ainult pärast sisselogimist võtmerõnga tõttu
Teie sessioonis töötav profiil ei ole käivitamisaegne teenus. Vaadake, milline omanik tunnelit käivitab, kus saladus elab ja kuidas tegelikku sündmust testida.
Käsk töötab, kui olete sisse loginud, seega panete selle käivituskripti ja lähete koju. Järgmisel hommikul on masin võrgus ja tunnel mitte. Müüt on see, et töötav kutse on töötav teenus. Praktikas on erinevus tavaliselt üks kahest asjast: profiil kuulub teie kasutajasessioonile, mitte süsteemile, või avab saladuse midagi, mis eksisteerib alles pärast sisselogimist. Mõlemad töötavad käsitsi testis täiuslikult ja ebaõnnestuvad täpselt hetkel, mil keegi ei vaata.
Miks sisselogimine selle tööle paneb
Graafiline sisselogimine käivitab sessioonibussi ja saladusteenuse agendi, ja just seal hoiavad paljud töölauakesksed kliendid profiili parooli või privaatvõtme paroolilauset. Pärast sisselogimist teie kasutajana töötav aktiveerimine saab sellelt agendilt saladust küsida ja õnnestuda. Sama aktiveerimine, mida teostab käivitusüksus, ei oma sessiooni, bussi ega agenti, seega otsing ebaõnnestub või blokeerub viiba taga, mida keegi ei näe.
Käivitage sama profiil enne ja pärast sisselogimist ning saate ühest konfiguratsioonist kaks erinevat tulemust. See on mandaadi sõltuvuse, mitte katkise tunneli tunnus, ja see selgitab, miks käsitsi test terminalis tõestab vähem, kui tundub. Tunnel on korras; puudu on see, mis avab selle saladuse.
Otsustage, milline omanik tunnelit käivitab
Toetatud on kaks mustrit ja nende segamine on teine viis, kuidas see ebaõnnestub. NetworkManager saab aktiveerida süsteemitasemel ühenduse, mis sobib, kui masin juba tsentraliseerib oma võrku seal. Teise võimalusena käitab spetsiaalne systemd üksus VPN-i otse ja omab liidest ise.
systemctl list-unit-files 'openvpn*'
systemctl list-unit-files 'wg-quick*'
nmcli connection show --active
systemctl enable --now wg-quick@wg0
Ärge käivitage mõlemat omanikku ühe konfiguratsiooni vastu. Kui NetworkManager haldab liidest ja üksus tõstab selle samuti üles, võitlevad nad marsruutide ja DNS-i pärast ning tulemuseks olev olek sõltub sellest, kes viimasena lõpetas.
Pange saladus sinna, kus teenus saab seda lugeda
Taustateenus ei saa viipale vastata. Sertifikaadi paroolilaused, kontoparoolid ja viidatud autentimisfailid vajavad kõik sellist hoiustamiskorraldust, milleni üksus jõuab ilma inimeseta, mis kuulub teenust käitavale kontole ja on kõigile teistele loetamatu.
Ahvatlev otsetee on teha fail kõigile loetavaks, kuni õiguste viga kaob. See vahetab käivitusvea pikaajalise mandaadi paljastamise vastu ja see on selline muudatus, mille juurde keegi ei naase. Kasutage mehhanismi, mida juurutamine juba usaldab: piiratud mandaadifail, failiõigustega kaitstud krüpteerimata võti või süsteemitasemel ühendus oma saladuste hoiuga.
Testige sündmust, mis tegelikult juhtub
Teenuse käsitsi käivitamine pärast sisselogimist ei testi peaaegu midagi. Taaskäivitage või keelake graafiline sisselogimine ühe tsükli jooksul ja jälgige, kuidas üksus ise üles tuleb. See on ainus test, mis harjutab korraga mandaadi kättesaadavust, võrgu valmisolekut ja üksuste järjekorda. See on ka test, mis taasesitab kasutaja teatatud tõrke, mida käsitsi käivitamine kunagi ei tee.
systemctl is-enabled wg-quick@wg0
journalctl -u wg-quick@wg0 -b --no-pager
systemctl status systemd-networkd-wait-online --no-pager
Järjekord loeb sama palju kui mandaat. Üksus, mis käivitub enne, kui alusvõrgu ühendus on konfigureeritud, annab alla, ja mõned distributsioonid erinevad selle poolest, kas nad ootavad ühenduvust. Kui üksus teatab käivitusel tõrkest, kuid õnnestub, kui selle kolmkümmend sekundit hiljem käsitsi käivitate, olete leidnud järjekorraprobleemi, mitte saladuseprobleemi.
Kontrollige marsruute ja DNS-i, mitte ainult liidest
Olemasolev liides ei ole töötav tunnel. Pärast järelevalveta käivitust kontrollige marsruute, lahendaja olekut ja üht sihtkohta aadressi järgi enne nime kontrollimist. Seejärel kontrollige rakendust, mille jaoks tunnel olemas on.
ip -4 route show
resolvectl status
ping -c 3 10.61.0.1
curl -sS --max-time 5 https://internal.example/ -o /dev/null -w '%{http_code}\n'
Kui aadress töötab ja nimi mitte, on ülejäänud probleem DNS-i poliitika, mitte tunnel. Kirjutage üles, milline omanik teenust käivitab ja kus saladus elab, sest järgmisel inimesel, kes selle masina taaskäivitab, on mõlemat fakti vaja.