WireGuard tidak dapat membuat antarmukanya: kernel atau izin?
Pembuatan antarmuka gagal sebelum peer mana pun melakukan handshake. Baca pesan galat untuk membedakan modul yang hilang dari batas hak istimewa atau dari pemilik antarmuka yang sudah ada.
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 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 |
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.