如何在LXD托管的LXC容器中允许/ dev / net / Tun?


9

我正在尝试使Openvpn在LXD / LXC容器中运行,并将进入该容器的流量重定向到VPN。

目的是替换完全可以完成此任务的成熟VM(以及使用LXD的玩具:-)

我设法从主DHCP服务器获得IP,设置了伪装/转发流量的iptables规则,但是当我尝试启动openvpn时,由于缺少(访问)/ dev / net / tun设备而被阻止。

我在ServerFault上看到了这篇文章https://serverfault.com/questions/429461/no-tun-device-in-lxc-guest-for-openvpn,但是它似乎不适用于当前版本的LXC和/或LXD正在管理配置...

编辑:我尝试使用这种咒语,但没有成功:

lxc config set mycontainer raw.lxc 'lxc.cgroup.devices.allow = c 10:200 rwm'

EDIT2:尝试过lxc config device add mycontainer tun unix-char path=/dev/net/tun major=10 minor=200但在下一站/开始时,我得到了

错误:无法配置设备调整:未实现

现在,我什lxc config device remove mycontainer tun至无法抛出相同的未实现错误。容器似乎丢失了...

Answers:


14

你要:

lxc config device add CONTAINER tun unix-char path=/dev/net/tun

1
这解决了ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)我一直试图从容器启动OpenVPN连接的错误。在此提及这一点,是希望将该答案添加到针对该错误的Google搜索中。如果这也解决了@alci的问题,则应接受此答案。
Jonathan Y.

我现在得到的ERROR: Cannot open TUN/TAP dev /dev/net/tun: Operation not permitted (errno=1)不是ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)
Jay _silly_evarlast_ Wren

3

我也在一个没有特权的容器中努力做到这一点。我最终要做的是

mknod /path/to/your/container/root/tun c 10 200
chown 100000:100000 /path/to/your/container/root/tun

然后放在容器内

mkdir /dev/net
ln -s /root/tun /dev/net/tun

这意味着我不必对lxc conf进行任何更改


0

在启动容器之前,需要在主机上制作tun设备: sudo mknod /path/to/your/container/dev/net/tun c 10 200


谢谢。我创建了节点。我将其owner:group更改为100000:100000。但是我仍然不能从容器中看到它……
alci
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.