openvpn 的 lxc guest 中没有 tun 设备

openvpn 的 lxc guest 中没有 tun 设备

我正在尝试在 lxc 客户端中设置 openvpn 服务器。但是,容器中似乎没有可用的 tun 设备。

在容器内启动 openvpn 出现以下错误:

Tue Sep 18 13:04:18 2012 Note: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)
Tue Sep 18 13:04:18 2012 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Tue Sep 18 13:04:18 2012 /sbin/ifconfig  10.6.0.1 pointopoint 10.6.0.2 mtu 1500
SIOCSIFADDR: No such device
: ERROR while getting interface flags: No such device
SIOCSIFDSTADDR: No such device
: ERROR while getting interface flags: No such device
SIOCSIFMTU: No such device
Tue Sep 18 13:04:18 2012 Linux ifconfig failed: external program exited with error status: 1
Tue Sep 18 13:04:18 2012 Exiting

在我的容器配置中,我看到以下内容:

#tun
lxc.cgroup.devices.allow = c 10:200 rwm

我认为这为容器启用了 tun 设备,但是 modprobe tun 给了我另一个错误:

FATAL: Could not load /lib/modules/3.2.0-30-generic/modules.dep: No such file or directory

我猜想我的容器缺少某些权限或其他东西。有人能告诉我是什么吗?

答案1

我不熟悉龙芯,请尝试以下命令:

# mkdir /dev/net 
# mknod /dev/net/tun c 10 200 
# chmod 666 /dev/net/tun

答案2

上述答案实际上现在不适用于 的当前版本lxc。手动创建 的字符设备mknod没有任何效果 - 该设备在容器内不可见。需要使用autodev中的功能。lxc

lxc.mount.entry = /dev/net dev/net none bind,create=dir

lxc.cgroup2.devices.allow = c 10:200 rwm

  • 在 Alpine Linux 容器中(没有systemd),我使用:

lxc.cgroup.devices.deny = a

lxc.cgroup.devices.allow = c 10:200 rwm

lxc.hook.autodev = sh -c "modprobe tun; cd ${LXC_ROOTFS_MOUNT}/dev; mkdir net; mknod net/tun c 10 200; chmod 0666 net/tun"

顺序很重要——deny必须是第一个。

答案3

除了 quanta 的答案之外。还要确保 lxc 配置中有此行:

mknod /dev/net/tun c 10 200

这是正确的语法:

#tun
lxc.cgroup.devices.allow = c 10:200 rwm

答案4

根据我们的托管服务提供商 EURO-SPACE 的建议,这些是如何在 Proxmox LXC 容器上启用 TUN/TAP 的步骤:

  1. 确保您的容器是特权的,如果不是,则备份该容器,然后恢复它并检查“特权容器”。

  2. 关闭容器并编辑位于 /etc/pve/lxc/CTID.conf 下的配置文件(CTID 是容器的 ID)

  3. 在文件末尾添加以下行:

    lxc.cgroup.devices.allow:c 10:200 rwm

    lxc.hook.autodev:sh -c“modprobe tun;cd ${LXC_ROOTFS_MOUNT}/dev;mkdir net;mknod net/tun c 10 200;chmod 0666 net/tun”

  4. 保存配置文件并启动容器。

  5. 通过运行以下命令确保 TUN 已启用:

    猫/ dev / net / tun

这应该输出以下内容:

cat:/dev/net/tun:文件描述符处于错误状态

现在您可以运行VPN。

相关内容