OpenVPN in Linux containers

通过一台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

发表回复