OpenVPN di VPS: tidak ada perangkat /dev/net/tun untuk dibuka
Konfigurasi biasanya baik-baik saja: tamu tidak melihat perangkat tun. Bedakan VM dari kontainer dengan kernel bersama, lalu perbaiki lapisan yang memiliki kernel.
Start pertama gagal dengan pesan tentang /dev/net/tun atau perangkat TUN/TAP yang tidak dapat dibuka. Sertifikat belum dibaca, jadi tidak ada yang dicurigai di profil. Daemon meminta kernel sebuah objek yang tidak dimiliki tamu ini.
Objek itu adalah perangkat karakter yang didukung oleh modul tun. Apakah Anda dapat membuatnya bergantung pada siapa yang memiliki kernel.
Apa yang diminta daemon kepada kernel
OpenVPN membuka /dev/net/tun dan meminta antarmuka kepada driver. Driver adalah modul tun, dan node perangkat adalah pegangan yang dipakai ruang pengguna untuk mencapainya. Jika modul tidak dimuat, node bisa hilang atau pembukaan bisa gagal. Tidak satu pun dari kedua kondisi itu diperbaiki dengan menyunting server.conf.
Baca galat itu pertama sebagai pertanyaan platform. Galat konfigurasi muncul setelah perangkat dibuka, bukan sebelumnya.
VM atau tamu dengan kernel bersama
Di KVM, Xen, atau mesin virtual penuh lainnya Anda yang mengendalikan kernel. Anda dapat memuat modul dan membuat node. Di OpenVZ, Virtuozzo, atau kontainer bergaya LXC tamu berbagi kernel host, sehingga root di dalamnya tidak dapat memuat modul yang belum dimuat host.
Kegagalan yang sama karena itu punya dua pemilik yang sangat berbeda. Pada kasus pertama Anda dapat memperbaikinya dari dalam instans. Pada kasus kedua Anda meminta host, atau penyedia, membuka sesuatu.
Jalankan ls -l /dev/net/tun, lsmod | grep tun, dan ip -brief link show sebelum memutuskan Anda berada di kasus yang mana.
Di VM, muat modul saat boot
Pada mesin virtual, modprobe tun biasanya membuat node perangkat. Periksa apakah node itu muncul, lalu jadikan pemuatan permanen melalui konfigurasi modul distribusi alih-alih mengandalkan perintah yang diketik sekali. Node yang hilang setelah reboot menjadi tiket yang sama bulan depan.
Periksa juga apakah kernel yang Anda boot memiliki modul itu sama sekali. Kernel vendor yang dipangkas bisa saja tidak memilikinya.
Jika node ada tetapi pembukaan masih gagal, izin dan nomor major/minor perangkat adalah tersangka berikutnya. Itu perbaikan lokal, bukan permintaan ke penyedia.
Di kontainer, host memiliki perangkat
Di kontainer, perangkat dan kemampuan adalah dua persyaratan terpisah. Runtime harus meneruskan /dev/net/tun, dan kontainer memerlukan kemampuan jaringan untuk membuat antarmuka. Runtime tanpa root yang tidak memberikan keduanya akan terus menghasilkan galat pembukaan yang sama, bagaimanapun profil ditulis. Banyak host OpenVZ menampilkan tombol TUN/TAP di panel pelanggan, dan mengaktifkannya plus restart sering kali menjadi seluruh solusinya.
Tanyakan dua pertanyaan tepat kepada penyedia: apakah modul tun dimuat di host, dan apakah perangkat tersedia di dalam instans ini? Tiket yang kabur mendapat jawaban yang kabur.
Mengapa membangun ulang modul jarang membantu
Membangun modul di dalam tamu jarang membantu. Kompilasi memerlukan konfigurasi kernel yang sedang berjalan persis, dan /proc/config.gz bersifat opsional dan sering tidak ada pada image minimal. Bahkan modul yang berfungsi tidak dapat disisipkan ke kernel yang tidak dimiliki kontainer.
Setelah perangkat muncul, mulai ulang layanan dan pastikan antarmukanya sebelum menguji lalu lintas. Melihat tun0 menunjukkan bahwa daemon telah membuka perangkat. Itu belum mengatakan apa pun tentang penerusan, aturan firewall, atau rute yang diterima klien.
Itu pertanyaan terpisah dengan bukti terpisah. Perangkat yang hilang adalah kegagalan prasyarat; tunnel yang ada tetapi tidak membawa apa pun adalah kegagalan kebijakan.