Jak spustit tunel WireGuard jako službu systemd
Šablona wg-quick@ zvedne pojmenovaný profil a nainstaluje trasy, DNS a háky. Ověřte unit, nechte jeden správce odpovědný a otestujte odbourání.
Máte profil WireGuard v /etc/wireguard/wg0.conf a chcete ho mít spuštěný, aniž byste po každém restartu ručně psali wg-quick up. Balíčkovaná šablona systemd dělá přesně to: [email protected] spouští wg-quick pro profil pojmenovaný wg0. Nainstaluje také adresy, trasy, DNS a jakékoli háky, které profil deklaruje, což je víc než pouhé načtení klíče do jádra. Ověřte, že šablona ve vašem systému skutečně existuje, než to budete předpokládat.
Zbytek tohoto postupu jde v pořadí, v jakém byste to opravdu dělali.
Najděte unit a profil, který čte
Vypište soubory unitů pomocí systemctl list-unit-files 'wg-quick*'. Na distribucích, které to balíčkují, uvidíte [email protected], přičemž název instance se bere z profilu. Instance se překládá na /etc/wireguard/<name>.conf, takže wg-quick@wg0 čte wg0.conf a nic jiného. Pokud je seznam prázdný, balíček nástrojů není nainstalován a žádné povolování nepomůže.
Držte profil v režimu 600 a ve vlastnictví roota. Obsahuje soukromý klíč a unit bude klidně běžet s horšími oprávněními, pokud to dovolíte.
Spusťte ho a čtěte journal
Spusťte instanci pomocí systemctl start wg-quick@wg0, potom zkontrolujte systemctl status wg-quick@wg0 a journalctl -u wg-quick@wg0 -b. Unit, který se spustí a hned skončí, má obvykle chybu v profilu a journal pojmenuje řádek. Pomocí wg show potvrďte, že rozhraní existuje a že poslední handshake je nedávný. Příručka k wg-quick uvádí, co skript dělá nad rámec samotného rozhraní.
Nakonfigurované rozhraní bez handshake je problém cesty nebo klíče, ne služby.
Nechte odpovědného jednoho správce
Pokud tunel již vlastní NetworkManager nebo jiný klient, spuštění systemd unitu vytvoří druhého vlastníka stejného rozhraní, tras a DNS. Příznaky jsou matoucí: tunel se zvedne, pak trasy zmizí, nebo se DNS po pár sekundách vrátí zpět. Vyberte jednoho správce a druhého pro daný profil vypněte. Journal obvykle ukazuje převzetí jako změny tras nebo resolveru hned poté, co unit hlásí úspěch.
Dva správci si vlastnictví nerozdělují. Přepisují se navzájem.
Otestujte zastavení, restart a start systému
Spusťte systemctl stop wg-quick@wg0 a potvrďte, že rozhraní zmizelo a trasy byly odstraněny. Pak ho znovu spusťte a zkontrolujte, že se trasy vrátí, protože chyby při odbourávání se projevují jako zbylé trasy, ne jako neúspěšné starty. Nakonec ho povolte při startu pomocí systemctl enable --now wg-quick@wg0 a jednou restartujte.
Při startu se musí jméno koncového bodu přeložit dřív, než unit běží. Pokud DNS ještě nefunguje, unit selže a zůstane selhaný, dokud ho nespustíte ručně.
Zapište vlastníka
Zapište, který profil unit čte, který správce vlastní rozhraní a odkud soubor přišel. Když někdo později importuje stejný tunel do desktopového klienta, tahle poznámka je rozdíl mezi migrací a dvěma nasazeními, která se hádají o jednu adresu. Zapište i jméno rozhraní, protože dva profily s podobnými jmény jsou obvyklým zdrojem zmatku.
Tunel se dvěma vlastníky funguje do prvního restartu a pak je záhadou. Proto poznámka patří do repozitáře, ne do chatovacího vlákna.