Kun systemctl start openvpn-client@office käynnistetään ja vastaukseksi tulee viesti, ettei järjestelmää käynnistetty systemd:llä, se näyttää palveluvialta. Kyse ei ole lainkaan palveluviasta: systemctl, jonka kutsuit, ei löydä käynnissä olevaa hallintaa, jonka kanssa puhua, joten OpenVPN:stä ei tutkittu mitään. sudo ei luo hallintaa, eikä unit-tiedoston asentaminenkaan luo sitä. Komento ja kone tulevat kahdesta eri maailmasta, ja virhe on ainoa paikka, jossa se tuli näkyviin.

Aloita kysymällä, mikä prosessi omistaa PID 1:n siellä, missä komento ajetaan, koska vastaus ratkaisee, onko uniteja ylipäätään olemassa.

Virhe nimeää ympäristön, ei OpenVPN:ää

systemctl on asiakas, ei hallinta. Se yhdistää järjestelmänhallintaan soketin kautta, ja kun toisessa päässä ei ole hallintaa, se tulostaa viestin, jonka ihmiset liittävät foorumeille. ps -p 1 -o pid=,comm= näyttää, mikä todella toimii PID 1:nä, ja vastaus on usein shell, init-kääre tai kontin oma aloituspiste. Siinä tilanteessa unit-tiedosto voi olla täysin kelvollinen eikä silti koskaan tule luetuksi. Komennon toistaminen root-käyttäjänä muuttaa vain asiakkaan tunnistetietoja.

Lue koko viesti ennen ensimmäistä riviä. Hallinnan oma virhe, kuten puuttuva unit tai epäonnistunut ehto, tarkoittaa, että pääsit hallintaan; tämä virhe tarkoittaa, ettet päässyt.

WSL: systemd:n käyttöönotto on kokoonpanomuutos

WSL sai systemd-tuen myöhemmissä versioissa, mutta ominaisuus otetaan käyttöön jakelukohtaisesti ja vain siellä, missä asennettu WSL-versio tukee sitä. wsl --version Windowsin puolella näyttää, mitä sinulla on, ja jakelun /etc/wsl.conf sisältää [boot]-osion, jossa on systemd=true. Muokkaa tiedostoa poistamatta jo olevia osioita ja käynnistä sitten WSL-instanssi uudelleen, jotta muutos astuu voimaan. wsl --shutdown pysäyttää kaikki käynnissä olevat jakelut, joten tallenna työsi ensin.

Kun olet avannut sen uudelleen, vahvista hallinta ennen kuin kosket OpenVPN:n unitiin: ps -p 1 -o comm= pitäisi näyttää systemd. systemd:n käyttöönotto ei tarjoa profiilia, tunnistetietoja eikä instanssin nimeä, joten seuraava virhe koskee jotain niistä eikä PID 1:tä.

Kontit käynnistävät aloituspisteensä, eivät uniteja

Tavallinen kontti käynnistää sen, mitä sen aloituspiste tai komento määrittää, eikä se ole systemd:llä käynnistetty kone riippumatta siitä, mitä paketteja asennat. Jos lisäät systemctl kuvaan, saat asiakkaan, jolla ei ole mitään mihin yhdistää. Community OpenVPN:n tuettu malli on yleensä etualalla toimiva prosessi, openvpn --config /path/to/client.conf, jonka aloituspiste käynnistää ja jota valvotaan ulkopuolelta. Se omistaja hoitaa käynnistyksen, signaalit ja sammutuksen, ja sen pitäisi olla ainoa asia, joka hallinnoi tunnelia.

Älä koskaan käynnistä interaktiivista kopiota sellaisen aloituspisteen viereen, joka jo hallinnoi tuota tunnelia, koska kaksi prosessia taistelee laitteesta ja reiteistä. Kontin sisällä oleva minimaalinen init-prosessi kerää lapsiprosessit ja välittää signaalit; se ei tee kuvasta uniteja sisältävää isäntää.

Jos käyttöönotto todella tarvitsee systemd:n kontin sisällä, se tarvitsee tarkoituksella suunnitellun kuvan, ei lisäoikeuksia, joita lisätään kunnes systemctl lakkaa valittamasta.

Lue seuraava virhe, kun hallinta on olemassa

Heti kun todellinen hallinta käynnistää palvelun, hyödylliset virheet alkavat. Laitteen käyttöoikeusvirhe, kokoonpanon jäsennyksen virhe, puuttuva tunnistetieto ja tavoittamaton vastapuoli ovat neljä eri ongelmaa, joita PID 1 -viesti ei koskaan testannut. Lue ne siinä järjestyksessä kuin unit ne tuotti, käyttämällä journalctl -u openvpn-client@office -n 50 systemd-isännässä tai käynnistämällä asiakas etualalla siellä, missä hallintaa ei ole. Etualalla ajaminen on myös nopein tapa vahvistaa, että profiili itsessään toimii.

Pidä kaksi ympäristöä erillään muistiinpanoissasi: isäntä, joka ajaa tunnelia, ja paikka, jossa kirjoitat komentoja.

Aiheeseen liittyvät artikkelit