web-dev-qa-db-ja.com

OpenVPN-エラー:TUN / TAP dev / dev / net / tunを開けません:そのようなファイルまたはディレクトリはありません(errno = 2)

このエラーに関しては多くの質問があり、適切に機能する推奨の手動修正がありますが、永続的な解決策はありません。これを恒久的に解決するにはどうすればよいですか? OpenVPNクライアントを使用してOpenVPNサーバーに接続することで、debian wheezyサーバーでこの問題が発生しています。

推奨される修正は以下のとおりです。/dev/netは自動的には作成されないようで、もちろん再起動するたびに消えます。

mkdir -p /dev/net
mknod /dev/net/tun c 10 200
chmod 600 /dev/net/tun
1
Joe

可能な解決策は、起動時に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が正常に起動するはずです。

0
natxo asenjo