通过一台LXC,连接OpenVPN跳转,通过tun方式,结果发现lsmod都找不到tun设备,的确连/dev/net目录都没有,差点都开始怀疑人生的时候,仔细想了下环境影响,LXC毕竟和普通虚拟机是不同的,仔细搜索了下,容器与其宿主机是共用同一个内核,因此肯定是不能像普通linux下加载模块那样modprobe一下,具体加载tun方法如下:
首先找到LXC配置文件,在最后加上下面一行
## for openvpn lxc.cgroup.devices.allow = c 10:200 rwm
然后来进行加载
mkdir /dev/net mknod /dev/net/tun c 10 200 chmod 0666 /dev/net/tun
参数c表示的是字符设备,10和200分别是主设备号和次设备号,这样就可以在程序中使用该驱动了
下面有三个链接,分别是介绍LXC关于OpenVPN配置,还有设备相关原理
http://www.ibm.com/developerworks/cn/linux/l-tuntap http://serverfault.com/questions/429461/no-tun-device-in-lxc-guest-for-openvpn https://wiki.archlinux.org/index.php/OpenVPN_in_Linux_containers