Як запусціць тунель WireGuard як службу systemd
Шаблон wg-quick@ уздымае названы профіль і ўсталёўвае маршруты, DNS і хукі. Праверце юніт, пакіньце аднаго кіраўніка адказным і праверце дэмантаж.
У вас ёсць профіль WireGuard у /etc/wireguard/wg0.conf, і вы хочаце запусціць яго, не ўводзячы wg-quick up уручную пасля кожнай перазагрузкі. Шаблон systemd з пакета робіць менавіта гэта: [email protected] запускае wg-quick для профілю з назвай wg0. Ён таксама ўсталёўвае адрасы, маршруты, DNS і любыя хукі, якія абвяшчае профіль, што большае за проста загрузку ключа ў ядро. Праверце, што шаблон існуе ў вашай сістэме, перш чым меркаваць, што ён ёсць.
Астатняя частка гэтага кіраўніцтва ідзе ў тым парадку, у якім вы б сапраўды рабілі.
Знайдзіце юніт і профіль, які ён чытае
Пералічыце файлы юнітаў з systemctl list-unit-files 'wg-quick*'. У дыстрыбутывах, якія пакуюць яго, вы ўбачыце [email protected], прычым імя экзэмпляра бярэцца з профілю. Экзэмпляр развязавецца да /etc/wireguard/<name>.conf, таму wg-quick@wg0 чытае wg0.conf і нічога іншага. Калі спіс пусты, пакет інструментаў не ўсталяваны і ніякая актывацыя не дапаможа.
Трымайце профіль у рэжыме 600 і ва ўласнасці root. Ён змяшчае прыватны ключ, і юніт ахвотна запусціцца з горшымі правамі, калі вы гэта дазволіце.
Запусціце яго і прачытайце журнал
Запусціце экзэмпляр з systemctl start wg-quick@wg0, затым праверце systemctl status wg-quick@wg0 і journalctl -u wg-quick@wg0 -b. Юніт, які запускаецца і адразу выходзіць, звычайна мае памылку профілю, і журнал называе радок. Пацвердзіце з wg show, што інтэрфейс існуе і апошні рукапаціск свежы. Дапаможнік wg-quick пералічвае, што скрыпт робіць па-за інтэрфейсам.
Наладжаны інтэрфейс без рукапаціску — гэта праблема шляху або ключа, а не службы.
Пакіньце аднаго кіраўніка
Калі NetworkManager або іншы кліент ужо валодае тунелем, запуск юніта systemd стварае другога ўладальніка для таго ж інтэрфейса, маршрутаў і DNS. Сімптомы заблытаныя: тунель уздымаецца, потым маршруты знікаюць, або DNS вяртаецца назад праз некалькі секунд. Выберыце аднаго кіраўніка і адключыце іншага для гэтага профілю. Журнал звычайна паказвае перахоп як змены маршрутаў або рэзалвера адразу пасля таго, як юніт паведамляе пра поспех.
Два кіраўнікі не дзеляць уласнасць. Яны запісваюць адзін паверх аднаго.
Праверце спыненне, перазапуск і загрузку
Выканайце systemctl stop wg-quick@wg0 і пацвердзіце, што інтэрфейс знік і маршруты выдалены. Затым запусціце яго зноў і праверце, што маршруты вяртаюцца, бо памылкі дэмантажу праяўляюцца як пакінутыя маршруты, а не як няўдалыя запускі. Нарэшце ўключыце яго пры загрузцы з systemctl enable --now wg-quick@wg0 і адзін раз перазагрузіцеся.
Пры загрузцы імя канчатковай кропкі павінна развязацца да запуску юніта. Калі DNS яшчэ не працуе, юніт церпіць няўдачу і застаецца няўдалым, пакуль вы не запусціце яго ўручную.
Запішыце ўладальніка
Запішыце, які профіль чытае юніт, які кіраўнік валодае інтэрфейсам і адкуль узяўся файл. Калі пазней хтосьці імпартуе той жа тунель у настольны кліент, гэтая нататка — розніца паміж міграцыяй і двума разгортваннямі, якія змагаюцца за адзін адрас. Запішыце і імя інтэрфейса, бо два профілі з падобнымі імёнамі — звычайная крыніца блытаніны.
Тунель з двума ўладальнікамі працуе да першай перазагрузкі, а потым робіцца загадкай. Вось чаму нататка належыць у рэпазітар, а не ў ланцуг чата.