Openvpn
lxc 來賓中沒有用於 openvpn 的 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
我假設我的容器中缺少一些許可或其他東西。有人能告訴我它是什麼嗎?
我不熟悉lxc,但請嘗試以下命令:
# mkdir /dev/net # mknod /dev/net/tun c 10 200 # chmod 666 /dev/net/tun
上面的答案現在實際上不適用於目前版本的
lxc
. 手動創建一個mknod
沒有效果的字元設備 - 該設備在容器內不可見。需要使用其中的autodev
功能lxc
。
- 對於具有Linux Containers 中 OpenVPN 的 Arch Linux Wiki上的LXC 配置,
systemd
請參閱LXC Config。- 在一個 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
必須是第一位的。