WireGuard не може да създаде интерфейса си: ядро или права?
Създаването на интерфейса се проваля още преди първия обмен с партньор. Прочетете грешката, за да различите липсващ модул от граница на правата или от съществуващ собственик на интерфейса.
WireGuard не успява да създаде интерфейса си, така че няма устройство за настройка, няма ключ за обмен и няма ръкостискане за отстраняване на грешки. Провалът остава изцяло на локалната машина и текстът на грешката казва коя част от локалния стек е отказала. Правилното му четене е по-бързо от преинсталиране на конфигурацията на партньора. Слоевете са разделими и съобщението посочва този, който е отказал.
Грешката възниква преди който и да е партньор да проговори
Създаването на интерфейс е една заявка netlink към ядрото за устройство от тип wireguard. Ядрото или има драйвер, който разбира този тип, или не, и отговорът се връща веднага. През тази стъпка никакви пакети не напускат машината, затова адресите на крайните точки и ключовете на сървъра не могат да са причината.
Тази последователност е важна за диагностиката. Ако командата никога не е създала устройство, проблемът не може да е грешен публичен ключ или блокиран порт UDP. Първо поправете локалния път на създаване и само след това гледайте навън.
Коя реализация трябва да притежава устройството
Две реализации могат да отговорят на тази заявка. Модулът в ядрото регистрира типа устройство wireguard, а реализация в потребителското пространство като wireguard-go предоставя същия интерфейс по различен механизъм. Ако модулът липсва, ядрото отхвърля заявката с грешка за неподдържано устройство и решението е или да зареди модула, или да насочи инструментите към реализацията в потребителското пространство.
Проверете какво действително присъства, преди да избирате между тях. Първата команда показва дали модулът е зареден, а втората пита ядрото директно:
lsmod | grep wireguard
ip link add wgtest0 type wireguard
Втората команда е най-малкото възможно възпроизвеждане: тя иска устройство и нищо друго. Ако се провали със съобщение за неподдържан тип, липсващата част е реализацията, а не вашият конфигурационен файл.
| Error text | What refused | Next step |
|---|---|---|
| Unknown device type or operation not supported | The kernel has no wireguard driver | Load the module or use the userspace implementation |
| Operation not permitted | Missing privilege | Use the service context or grant the capability |
| File exists | The name is already in use | Inspect the owner before touching it |
| No such device in a container | No tunnel device or capability | Add the device and NET_ADMIN to the container |
Права и граници на контейнера
Създаването и настройката на мрежово устройство изисква права: или като root, или с възможност за администриране на мрежата. Обикновена потребителска сесия не може да го направи и това ограничение е замисълът, а не пречка, която да се заобикаля със стартиране на инсталатор, който не сте прегледали.
Вътре в контейнер границата се удвоява. Контейнерът се нуждае от достъп до тунелното устройство и от възможност да го настройва, а флаговете, които дават това, са същите, които използва контейнер за VPN на Linux. Ограничен гост, който нормално може да разглежда уеб, все още не може да създаде интерфейс, защото разглеждането не се нуждае от такава възможност. Дайте възможността на услугата, която се нуждае от нея, а не на всяка сесия на хоста.
Разрешете конфликта на имена и опитайте отново
Интерфейс, който вече съществува, не е автоматично остатък. Друг мениджър може да притежава името и да го използва точно сега, затова го прегледайте, преди да изтриете нещо:
ip link show wg0
sudo wg show wg0
Ако собственикът е активна услуга, настройте тази услуга, вместо да създавате второ устройство. Ако наистина е остаряло, премахнете го чрез инструмента, който го е създал, и след това вдигнете интерфейса с документирания клиент или unit, за да останат конфигурацията и устройството в синхрон.
След като създаването успее, следващият провал принадлежи на по-късен етап, а unit, който съобщава за провал след съществуването на устройството, е различен проблем от устройство, което никога не е било създадено. Разделете двете, преди отново да променяте права.