WireGuard gagal membuat antarmukanya, sehingga tidak ada perangkat untuk dikonfigurasi, tidak ada kunci untuk ditukar, dan tidak ada handshake untuk di-debug. Kegagalan sepenuhnya berada di mesin lokal, dan teks galat menyebut bagian mana dari tumpukan lokal yang menolak. Membacanya dengan benar lebih cepat daripada memasang ulang konfigurasi peer. Lapisannya dapat dipisahkan, dan pesannya menyebut lapisan yang menolak.

Galat terjadi sebelum peer mana pun berbicara

Membuat antarmuka adalah satu permintaan netlink ke kernel untuk perangkat bertipe wireguard. Kernel memiliki driver yang memahami tipe itu atau tidak, dan jawabannya langsung kembali. Tidak ada paket yang meninggalkan mesin pada langkah ini, karena itu alamat titik akhir dan kunci server tidak mungkin menjadi penyebabnya.

Urutan itu penting untuk diagnosis. Jika perintah tidak pernah membuat perangkat, masalahnya tidak mungkin kunci publik yang salah atau port UDP yang diblokir. Perbaiki dulu jalur pembuatan lokal dan baru setelah itu melihat ke luar.

Implementasi mana yang seharusnya memiliki perangkat

Dua implementasi dapat menjawab permintaan itu. Modul di dalam kernel mendaftarkan tipe perangkat wireguard, dan implementasi di ruang pengguna seperti wireguard-go menyediakan antarmuka yang sama melalui mekanisme berbeda. Jika modulnya tidak ada, kernel menolak permintaan dengan galat perangkat tidak didukung, dan solusinya adalah memuat modul atau mengarahkan alat ke implementasi di ruang pengguna.

Periksa apa yang benar-benar ada sebelum memilih di antara keduanya. Perintah pertama menunjukkan apakah modul dimuat dan yang kedua bertanya langsung ke kernel:

lsmod | grep wireguard
ip link add wgtest0 type wireguard

Perintah kedua adalah reproduksi terkecil yang mungkin: ia meminta perangkat dan tidak lebih. Jika gagal dengan pesan tipe tidak didukung, bagian yang hilang adalah implementasinya, bukan berkas konfigurasi Anda.

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

Hak istimewa dan batas kontainer

Membuat dan mengonfigurasi perangkat jaringan memerlukan hak istimewa, entah sebagai root atau dengan kemampuan mengelola jaringan. Sesi pengguna biasa tidak dapat melakukannya, dan batasan itu adalah desainnya, bukan rintangan yang harus diakali dengan menjalankan penginstal yang belum Anda periksa.

Di dalam kontainer batasnya berlipat. Kontainer memerlukan akses ke perangkat terowongan dan kemampuan mengonfigurasinya, dan flag yang memberikannya sama dengan yang digunakan kontainer VPN di Linux. Tamu terbatas yang biasanya dapat menjelajah web tetap tidak dapat membuat antarmuka, karena menjelajah tidak memerlukan kemampuan itu. Berikan kemampuan itu kepada layanan yang membutuhkannya, bukan kepada setiap sesi di host.

Selesaikan konflik nama, lalu coba lagi

Antarmuka yang sudah ada tidak otomatis merupakan sisa. Pengelola lain mungkin memiliki nama itu dan sedang memakainya sekarang, jadi periksa dulu sebelum menghapus apa pun:

ip link show wg0
sudo wg show wg0

Jika pemiliknya adalah layanan aktif, konfigurasikan layanan itu alih-alih membuat perangkat kedua. Jika memang sudah usang, hapus melalui alat yang membuatnya, lalu naikkan antarmuka dengan klien atau unit yang terdokumentasi agar konfigurasi dan perangkat tetap sejalan.

Setelah pembuatan berhasil, kegagalan berikutnya milik tahap yang lebih akhir, dan unit yang melaporkan kegagalan setelah perangkat ada adalah masalah yang berbeda dari perangkat yang tidak pernah dibuat. Pisahkan keduanya sebelum mengubah izin lagi.

Artikel terkait