WireGuard не можа стварыць свой інтэрфейс, таму няма прылады для налады, няма ключа для абмену і няма рукапаціскання для адладкі. Збой цалкам застаецца на лакальнай машыне, і тэкст памылкі паказвае, якая частка лакальнага стэка адмовіла. Прачытаць яго правільна хутчэй, чым пераўсталёўваць канфігурацыю партнёра. Узроўні можна раздзяліць, і паведамленне называе той, што адмовіў.

Памылка ўзнікае да таго, як нехта з партнёраў загаворыць

Стварэнне інтэрфейса — гэта адзін запыт netlink да ядра з просьбай пра прыладу тыпу wireguard. Ядро або мае драйвер, які разумее гэты тып, або не мае, і адказ вяртаецца адразу. На гэтым кроку ніводзін пакет не пакідае машыну, таму адрасы канцавых кропак і ключы сервера не могуць быць прычынай.

Гэты парадак важны для дыягностыкі. Калі каманда так і не стварыла прыладу, праблема не можа быць у няправільным публічным ключы ці ў заблакаваным порце UDP. Спачатку выпраўце лакальны шлях стварэння і толькі потым глядзіце вонкі.

Якая рэалізацыя павінна валодаць прыладай

На гэты запыт могуць адказаць дзве рэалізацыі. Модуль усярэдзіне ядра рэгіструе тып прылады wireguard, а рэалізацыя ў прасторы карыстальніка, напрыклад wireguard-go, дае той самы інтэрфейс праз іншы механізм. Калі модуль адсутнічае, ядро адхіляе запыт з памылкай пра непадтрымліваемую прыладу, і рашэнне — або загрузіць модуль, або накіраваць інструменты на рэалізацыю ў прасторы карыстальніка.

Праверце, што насамрэч прысутнічае, перш чым выбіраць паміж імі. Першая каманда паказвае, ці загружаны модуль, а другая пытаецца ў ядра наўпрост:

lsmod | grep wireguard
ip link add wgtest0 type wireguard

Другая каманда — гэта найменшае магчымае ўзнаўленне: яна просіць прыладу і больш нічога. Калі яна зрываецца з паведамленнем пра непадтрымліваемы тып, не хапае менавіта рэалізацыі, а не вашага файла канфігурацыі.

Error textWhat refusedNext step
Unknown device type or operation not supportedThe kernel has no wireguard driverLoad the module or use the userspace implementation
Operation not permittedMissing privilegeUse the service context or grant the capability
File existsThe name is already in useInspect the owner before touching it
No such device in a containerNo tunnel device or capabilityAdd the device and NET_ADMIN to the container

Правы і межы кантэйнера

Стварэнне і налада сеткавай прылады патрабуюць правоў: альбо ад імя root, альбо з магчымасцю кіравання сеткай. Звычайная сесія карыстальніка гэтага не можа, і гэтае абмежаванне — гэта задума, а не перашкода, якую трэба абыходзіць запускам невядомага ўсталёўшчыка.

Унутры кантэйнера мяжа падвойваецца. Кантэйнеру патрэбен доступ да тунельнай прылады і магчымасць яе наладзіць, і сцягі, якія гэта даюць, тыя ж, што выкарыстоўвае кантэйнер VPN на Linux. Абмежаваны госць, які звычайна можа глядзець вэб, усё роўна не можа стварыць інтэрфейс, бо для вэба такая магчымасць не патрэбна. Дайце магчымасць той службе, якой яна патрэбна, а не кожнай сесіі на хасце.

Вырашыце канфлікт імёнаў і паспрабуйце зноў

Інтэрфейс, які ўжо існуе, не абавязкова рэштка. Ім можа валодаць іншы кіраўнік і выкарыстоўваць яго проста зараз, таму агледзіце яго, перш чым нешта выдаляць:

ip link show wg0
sudo wg show wg0

Калі ўладальнікам з'яўляецца актыўная служба, наладзьце гэтую службу замест стварэння другой прылады. Калі ж гэта сапраўды састарэла, выдаліце яе праз інструмент, які яе стварыў, а затым узніміце інтэрфейс дакументаваным кліентам або юнітам, каб канфігурацыя і прылада заставаліся ў адпаведнасці.

Калі стварэнне ўдалося, наступны збой адносіцца да больш позняга этапу, і юніт, які паведамляе пра збой пасля з'яўлення прылады, — гэта іншая праблема, чым прылада, якая ніколі не была створана. Аддзяліце адно ад другога, перш чым зноў мяняць правы.

Падобныя артыкулы