WireGuard tidak dapat mencipta antara mukanya: kernel atau kebenaran?
Penciptaan antara muka gagal sebelum mana-mana rakan sebaya menghantar jabat tangan. Baca ralat untuk membezakan modul yang hilang daripada sempadan keistimewaan atau daripada pemilik antara muka sedia ada.
WireGuard gagal mencipta antara mukanya, jadi tiada peranti untuk dikonfigurasikan, tiada kunci untuk ditukar dan tiada jabat tangan untuk dinyahpepijat. Kegagalan kekal sepenuhnya pada mesin setempat, dan teks ralat memberitahu bahagian mana timbunan setempat yang menolak. Membacanya dengan betul lebih pantas daripada memasang semula konfigurasi rakan sebaya. Lapisan boleh dipisahkan, dan mesej menamakan lapisan yang menolak.
Ralat berlaku sebelum mana-mana rakan sebaya bercakap
Mencipta antara muka ialah satu permintaan netlink kepada kernel untuk peranti jenis wireguard. Kernel sama ada mempunyai pemacu yang memahami jenis itu atau tidak, dan jawapannya kembali serta-merta. Tiada paket meninggalkan mesin semasa langkah ini, sebab itu alamat titik akhir dan kunci pelayan tidak boleh menjadi punca.
Urutan itu penting untuk diagnosis. Jika arahan itu tidak pernah mencipta peranti, masalahnya tidak mungkin kunci awam yang salah atau port UDP yang disekat. Betulkan dahulu laluan penciptaan setempat dan barulah melihat ke luar.
Pelaksanaan mana yang sepatutnya memiliki peranti
Dua pelaksanaan boleh menjawab permintaan itu. Modul di dalam kernel mendaftarkan jenis peranti wireguard, dan pelaksanaan di ruang pengguna seperti wireguard-go menyediakan antara muka yang sama melalui mekanisme berbeza. Jika modul tiada, kernel menolak permintaan itu dengan ralat peranti tidak disokong, dan penyelesaiannya ialah memuatkan modul atau mengarahkan alat kepada pelaksanaan di ruang pengguna.
Periksa apa yang benar-benar ada sebelum memilih antara keduanya. Arahan pertama menunjukkan sama ada modul dimuatkan dan yang kedua bertanya kepada kernel secara langsung:
lsmod | grep wireguard
ip link add wgtest0 type wireguard
Arahan kedua ialah pembiakan terkecil yang mungkin: ia meminta peranti dan tidak lebih. Jika ia gagal dengan mesej jenis tidak disokong, bahagian yang hilang ialah pelaksanaan, bukan fail 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 |
Keistimewaan dan sempadan kontena
Mencipta dan mengkonfigurasi peranti rangkaian memerlukan keistimewaan, sama ada sebagai root atau dengan keupayaan mentadbir rangkaian. Sesi pengguna biasa tidak dapat melakukannya, dan sekatan itu ialah reka bentuknya, bukan halangan yang perlu dielakkan dengan menjalankan pemasang yang belum anda semak.
Di dalam kontena sempadan itu berganda. Kontena memerlukan akses kepada peranti terowong dan keupayaan mengkonfigurasinya, dan bendera yang memberikannya sama dengan yang digunakan kontena VPN pada Linux. Tetamu terhad yang biasanya boleh melayari web masih tidak dapat mencipta antara muka, kerana melayari tidak memerlukan keupayaan itu. Berikan keupayaan itu kepada perkhidmatan yang memerlukannya, bukan kepada setiap sesi pada hos.
Selesaikan konflik nama, kemudian cuba lagi
Antara muka yang sudah wujud bukan secara automatik sisa. Pengurus lain mungkin memiliki nama itu dan sedang menggunakannya sekarang, jadi periksa dahulu sebelum memadam apa-apa:
ip link show wg0
sudo wg show wg0
Jika pemiliknya ialah perkhidmatan aktif, konfigurasikan perkhidmatan itu daripada mencipta peranti kedua. Jika ia benar-benar lapuk, keluarkannya melalui alat yang menciptanya, kemudian naikkan antara muka dengan klien atau unit yang didokumenkan supaya konfigurasi dan peranti kekal sejajar.
Setelah penciptaan berjaya, kegagalan berikutnya milik peringkat yang lebih lewat, dan unit yang melaporkan kegagalan selepas peranti wujud ialah masalah berbeza daripada peranti yang tidak pernah dicipta. Pisahkan kedua-duanya sebelum mengubah kebenaran lagi.