このエラーに関しては多くの質問があり、適切に機能する推奨の手動修正がありますが、永続的な解決策はありません。これを恒久的に解決するにはどうすればよいですか? OpenVPNクライアントを使用してOpenVPNサーバーに接続することで、debian wheezyサーバーでこの問題が発生しています。
推奨される修正は以下のとおりです。/dev/netは自動的には作成されないようで、もちろん再起動するたびに消えます。
mkdir -p /dev/net
mknod /dev/net/tun c 10 200
chmod 600 /dev/net/tun
可能な解決策は、起動時にtun
カーネルモジュールをロードするようにシステムを構成することだと思います。これを行うには、/etc/modules
ファイルにtun
モジュール名をリストします。
# echo tun >> /etc/modules
udev
は、 作成し、 ロードされたカーネルモジュールと接続されたハードウェアデバイスに従って、デバイスノードを/dev
フォルダーに維持します。ブート時にtun
カーネルモジュールをロードすることにより、システムはすべての起動時に/dev/net/tun
デバイスノードを作成すると考えています。
お役に立てば幸いです。
編集:私は少し時代遅れです。 Vagrant Cloud Webサイト で公開されているDebian Wheezyイメージを起動した後、udev
が実際に既存のデバイスノードに関する権限、所有権、シンボリックリンクを処理することがわかりました。デバイスノードは実際にはカーネル自体によって作成され、devtmpfs
疑似ファイルシステムを介してユーザースペースに公開されます。
devtmpfs
ファイルシステムは、initramfs時にマウントされます。 grub
がinitramfsをメモリに抽出すると実行されるファイル/usr/share/initramfs-tools/init
は、devtmpfs
ファイルシステムを/dev
にマウントし、標準のtmpfs
ファイルシステム(失敗した場合)。
さらに、devtmpfs
ファイルシステムを使用できるようにするため、Debian WheezyカーネルはCONFIG_DEVTMPFS=y
を有効にして出荷されます。
debian wheezyは2018年5月以降サポートされなくなりました( https://www.debian.org/releases/wheezy/ )。2020年には本番環境で使用しないでください。
これで、問題を一時的に解決するコマンドを追加し、それらのコマンドを@rebootニックネーム(man 5 crontab)でルートcrontabに追加するbashスクリプトを追加できます。
したがって、次のようなものを使用して、ファイルシステムのどこかにbashスクリプトを作成します。
#!/bin/bash
mkdir -p /dev/net
mknod /dev/net/tun c 10 200
chmod 600 /dev/net/tun
/etc/init.d/openvpn restart
755の権限で保存し、ルートのcrontabを変更します。
# crontab -e
このコンテンツで少なくとも
@reboot /path/to/where/you/saved/the/script
再起動後、openvpnが正常に起動するはずです。