Jump to Navigation

如何在lxc容器中使用tun/tap设备

tun/tap需要用到/dev/net/tun设备文件,

默认情况下lxc不会创建/dev/net/tun设备文件。

在启动使用tun/tap的程序时,会报类似以下的错误,

  1. Error: /dev/net/tun character device not found or unavailable.
  2. You might try to run this command to load it:
  3. $ modprobe tun
  4. (you must be root to do that).

可以使用systemd的自动设备创建机制,创建一个脚本autodev
放在/var/lib/lxc/yourcontainer/目录下:

  1. #!/bin/bash
  2.  
  3. cd ${LXC_ROOTFS_MOUNT}/dev
  4. mkdir net
  5. mknod net/tun c 10 200
  6. chmod 0666 net/tun

设置这个文件的可执行权限:

  1. chmod +x autodev

最后,在容量的config文件最后,添加以下内容,

  1. lxc.hook.autodev=/var/lib/lxc/yourcontainer/autodev
  2.  
  3. # /dev/net/tun
  4. lxc.cgroup.devices.allow = c 10:200 rwm

重启动容器后,出现/dev/net/tun设备文件,像使用tun/tap设备的程序可以执行了。

更多信息请见https://wiki.archlinux.org/index.php/Lxc-systemd.

TODO,还未解决的问题:
lxc使用bridge模式网络配置。
lxc使用dhcp模式获取IP。
lxc使用aufs模式的容器。

Category:

添加新评论

Plain text

  • 不允许HTML标记。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.


Main menu 2

Story | by Dr. Radut