如何在linux中載入tun模組?

如何在linux中載入tun模組?

我無法tun在我的 ArchLinux 盒子中加載該模組。我正在嘗試連接 OpenVPN,但日誌顯示:

nm-openvpn[6662]: Note: Cannot open TUN/TAP dev /dev/net/tun: No such device (errno=19)

lsmod | grep tun

不返回任何內容:

如果我運行:

sudo modprobe tun

它返回失敗,但沒有錯誤訊息,並且 lsmod 仍然沒有tun.該模組似乎tun.ko.gz存在,因為/lib/modules/.

我真的不知道還能嘗試什麼。

答案1

這個答案可能有點晚了,但我自己也遇到了這個問題,正如所描述的那樣。

執行 OpenVPN 會產生:

Note: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)

運行tunctl會產生:

Failed to open '/dev/net/tun' : No such file or directory

且該命令沒有輸出:

lsmod | grep tun

嘗試tun透過以下方式新增模組時:

modprobe tun

modprobe將退出並顯示失敗錯誤代碼 (1),並且沒有任何變更。

我找到了另一種透過 啟動 tun 模組的方法insmod。首先使用以下命令找到模組:

find /lib/modules/ -iname 'tun.ko.gz'

然後將 insmod 與返回的路徑一起使用(我只有一個匹配項),例如:

insmod /lib/modules/3.6.9-1-ARCH/kernel/drivers/net/tun.ko.gz

對我來說,運行該命令有效,並且tunctlOpenVPN 之後工作正常。

答案2

當我嘗試在 OVH Cloud VPS 上執行 openvpn 時,我遇到了類似的問題,openvpn 抱怨找不到 TUN 介面。

modprobe 將始終返回未找到模組:

$ sudo modprobe tun
FATAL: Module tun not found.

最後,我發現 tun 不是一個模組,而是內建在核心中,所以我要解決的問題是創建了丟失的目錄和點頭:

$ sudo mkdir /dev/net
$ sudo mknod /dev/net/tun c 10 200

然後openvpn就可以找到並使用tun設備了。

需要注意的是,之後 modprobe 仍然會回傳錯誤,因為 tun 不是模組。

$ sudo modprobe tun
FATAL: Module tun not found.

答案3

在Arch linux中安裝networkmanager-vpncNetworkManager-vpnc套件將解決問題

答案4

我遇到了一個問題,我的/lib/modules/.../modules.alias不包含該行

alias char-major-10-200 tunode_tunnel

因此,即使您已經完成mknod /dev/net/tuntun.ko在 中的某個位置/lib/modules/...,它也不會加載,除非modules.alias有正確的咒語。

相關內容