Имате профил на WireGuard в /etc/wireguard/wg0.conf и искате той да е вдигнат, без да въвеждате wg-quick up на ръка след всяко рестартиране. Шаблонът на systemd от пакета прави точно това: [email protected] стартира wg-quick за профила с име wg0. Той също инсталира адреси, маршрути, DNS и всякакви куки, които профилът обявява, което е повече от просто зареждане на ключ в ядрото. Проверете дали шаблонът съществува в системата ви, преди да предполагате, че го има.

Останалата част от това ръководство следва реда, в който реално бихте го правили.

Намерете unit-а и профила, който той чете

Избройте файловете на unit-ите с systemctl list-unit-files 'wg-quick*'. В дистрибуциите, които го пакетират, ще видите [email protected], като името на инстанцията се взема от профила. Инстанцията се разрешава до /etc/wireguard/<name>.conf, така че wg-quick@wg0 чете wg0.conf и нищо друго. Ако списъкът е празен, пакетът с инструменти не е инсталиран и никакво включване няма да помогне.

Дръжте профила в режим 600 и собственост на root. Той съдържа частен ключ и unit-ът ще работи с по-лоши права, ако му позволите.

Вдигнете го и прочетете журнала

Стартирайте инстанцията с systemctl start wg-quick@wg0, после проверете systemctl status wg-quick@wg0 и journalctl -u wg-quick@wg0 -b. Unit, който стартира и веднага излиза, обикновено има грешка в профила и журналът посочва реда. Потвърдете с wg show, че интерфейсът съществува и че последният ръкостискане е скорошен. Ръководството за wg-quick изброява какво прави скриптът отвъд самия интерфейс.

Конфигуриран интерфейс без ръкостискане е проблем с пътя или ключа, а не с услугата.

Оставете един мениджър отговорен

Ако NetworkManager или друг клиент вече притежава тунела, стартирането на systemd unit-а създава втори собственик за същия интерфейс, маршрути и DNS. Симптомите са объркващи: тунелът се вдига, после маршрутите изчезват или DNS се връща обратно след няколко секунди. Изберете един мениджър и изключете другия за този профил. Журналът обикновено показва поемането като промени по маршрутите или резолвера веднага след като unit-ът отчете успех.

Двама мениджъри не споделят собственост. Те се презаписват един друг.

Тествайте спиране, рестарт и зареждане

Изпълнете systemctl stop wg-quick@wg0 и потвърдете, че интерфейсът е изчезнал и маршрутите са премахнати. След това го стартирайте отново и проверете, че маршрутите се връщат, защото грешките при демонтаж се проявяват като останали маршрути, а не като неуспешни стартирания. Накрая го включете при зареждане с systemctl enable --now wg-quick@wg0 и рестартирайте веднъж.

При зареждане името на крайната точка трябва да се разреши, преди unit-ът да тръгне. Ако DNS още не работи, unit-ът се проваля и остава провален, докато не го стартирате ръчно.

Запишете собственика

Запишете кой профил чете unit-ът, кой мениджър притежава интерфейса и откъде идва файлът. Когато по-късно някой импортира същия тунел в настолен клиент, тази бележка е разликата между миграция и две разгръщания, които се борят за един адрес. Запишете и името на интерфейса, защото два профила с подобни имена са обичайният източник на объркване.

Тунел с двама собственици работи до първия рестарт, а после е загадка. Затова бележката принадлежи в хранилището, а не в чат нишка.

Подобни статии