Pripojte sa klientom 2.x a profil funguje; odovzdajte ten istý súbor klientovi 3.x a zastaví sa na výzve na heslo. Odovzdajte --auth-user-pass creds.txt do openvpn3 session-start a výsledok je rovnaký, pretože novší klient nemá fázu, ktorá by súbor čítala. Odmietnutie je zámerné: prihlasovacie údaje patria relácii a reláciu vytvára služba, nie proces vo vašom termináli. Vyberte si medzi interaktívnou výzvou a pomocníkom autoload a vedzte, čo ktorý z nich ukladá.

Prečo uložený súbor nemá kam ísť

V novšom dizajne sú správa konfigurácie a správa relácií oddelené služby, ktoré komunikujú cez systémovú zbernicu. Práve toto oddelenie umožňuje bežnému používateľovi spustiť reláciu bez toho, aby privilegovaný démon čítal v jeho mene chránený súbor hesiel. Prihlasovacie údaje založené na súboroch nemajú v tomto modeli miesto, pretože neexistuje spustenie na strane démona, ktoré by ich čítalo. Odmietnutie je dôsledok architektúry, nie chýbajúca funkcia.

Starý vzor stojí za to pomenovať, aby sa od neho ľahšie odvykalo: profil odkazuje na súbor s prihlasovacími údajmi a démon ho číta pri štarte tunela. V novom modeli prihlasovacie údaje patria relácii a poskytujú sa pri začiatku tejto relácie. openvpn3 session-start --config work.ovpn o ne žiada a --auth-user-pass creds.txt je odmietnutý, pretože nič na tej ceste by súbor neotvorilo. Každý recept pre 2.x, ktorý nájdete, predpokladá fázu, ktorá už neexistuje.

Konfigurácia a lokálne nastavenia lokality sú tiež oddelené, čo vysvetľuje druhé prekvapenie. Profil môže vyzerať úplne, hoci spojeniu, ktoré vytvára, chýba konfigurácia smerovania a resolvera. Tie časti sa uplatňujú ako lokálne nastavenia lokality, oddelene od importovaného súboru.

Cesta výzvy a relácia, ktorú zanecháva

Zadanie hesla pri štarte relácie je zamýšľaný pracovný postup. Klient sa spýta raz, odovzdá prihlasovacie údaje backendu relácie a pokračuje:

openvpn3 session-start --config work.ovpn
openvpn3 sessions-list

Touto cestou sa na disk nič nezapisuje. Relácia pokračuje aj po zatvorení terminálu, čo prekvapuje ľudí, ktorí očakávajú, že proces zomrie spolu s ich shellom. To je zmysel presunu spracovania relácií do služby. Relácia žije dlhšie ako terminál, ktorý o ňu požiadal, a treba ju výslovne zastaviť.

Pre pracovnú stanicu s človekom pred ňou je to aj najbezpečnejšia možnosť, pretože neexistuje uložené tajomstvo, ktoré by bolo treba chrániť alebo zabudnúť. Nevhodná je len tam, kde nie je nikto, kto by písal.

Automatizácia bez osoby za klávesnicou

Tam, kde sa počítač musí pripojiť bez osoby, projekt poskytuje openvpn3-autoload. Číta adresár profilov a zodpovedajúci deskriptor pre každý profil a deskriptor poskytuje prihlasovacie údaje v čistom texte. Pomocník je samostatný binárny súbor, zvyčajne v /usr/sbin/openvpn3-autoload, nie prepínač session-start. Nastaviť ho znamená vytvoriť adresár, skopírovať profil pod názvom, ktorý deskriptor očakáva, a zapísať deskriptor.

Nastavenie pre jedného používateľa vyzerá takto a spúšťa sa ako účet, ktorý bude reláciu vlastniť. Režim adresára drží ostatných lokálnych používateľov vonku:

mkdir -m700 -p ~/.openvpn3/autoload
cp work.ovpn ~/.openvpn3/autoload/client.conf
$EDITOR ~/.openvpn3/autoload/client.autoload

Deskriptor pomenúva prihlasovacie údaje a žiada automatický štart. Hodnotu hesla držte mimo kontroly verzií:

{
  "autostart": true,
  "user-auth": {
    "autologin": true,
    "username": "svc-vpn",
    "password": "change-this-value"
  }
}

Potom raz zavolajte pomocníka a potvrďte, že relácia sa objaví. Druhý príkaz je kontrola, nie ďalší krok nastavenia:

/usr/sbin/openvpn3-autoload --directory ~/.openvpn3/autoload
openvpn3 sessions-list

Pri štarte zabalená jednotka s názvom openvpn3-autoload.service používa systémový adresár /etc/openvpn3/autoload, nie ten pre používateľa. Tomu miestu treba vlastníctvo roota a prísnejší režim a deskriptor stále drží heslo v čistom texte. Kompromis je výslovný: heslo teraz leží na disku, preto s tým adresárom zaobchádzajte ako s tajomstvom, vylúčte ho zo záloh mimo hostiteľa a vždy, keď je prítomný človek, zvoľte interaktívnu cestu.

Zlyhania zbernice, ktoré vyzerajú ako zlyhania hesla

Niektoré zlyhania pripisované prihlasovacím údajom vôbec nie sú také. Chyba oprávnení, ktorá pomenúva cestu aktivácie služby, znamená jednu z dvoch vecí: backend nebeží, alebo volajúci nemá oprávnenie ho aktivovať. Žiadna úprava profilu nezmení ani jedno. Predtým, než sa dotknete konfigurácie, skontrolujte stav služby a dodanú politiku zbernice.

Príkazy nižšie oddeľujú tieto dve veci. Prvý hlási, či backend beží; druhý zobrazuje nedávne chyby zbernice:

systemctl status openvpn3-service-client
journalctl -b -u openvpn3-service-client --no-pager | tail -20

Ďalšie časté nesprávne čítanie je relácia, ktorá sa objaví a hneď zmizne. Tento vzor zvyčajne znamená, že lokálne nastavenia lokality neboli nikdy použité, takže tunel vstal bez trás a zmien resolvera, ktoré ho robia užitočným. Čítajte postupnosť, nie posledný riadok: či bola relácia vytvorená, či dosiahla pripojený stav a či prežila, sú tri oddelené fakty.

Keď sa starší klient ešte používa

Klient 2.x stále prijíma súbor s prihlasovacími údajmi a keyring môže odpovedať na jeho výzvu bez toho, aby sa tajomstvo kedy dostalo na disk. Obal vyrieši položku, takže súbor pomenúva vyhľadanie, nie heslo. Toto usporiadanie závisí od odomknutého keyringu, ktorý kontajner bez prihlasovacej relácie alebo jednotka spúšťaná pred niečím prihlásením nemôžu poskytnúť. Nástroj na vyhľadávanie potom hlási kolekciu, do ktorej nemôže zapisovať, takže chyba vyzerá ako zlyhanie prihlasovacích údajov, hoci je to zlyhanie keyringu.

Predtým, než čokoľvek z toho postavíte, skontrolujte, či nastavenie keepalive v profile úplne odstraňuje potrebu reštartu. Relácia, ktorá zostane hore, nikdy nedosiahne výzvu, ktorú sa snažíte automatizovať.

Súvisiace články