Ubuntu-18.04 (amd64) 上有 lxd-3.0.3 unprivileged(由 root 启动的 uid shift 容器)。容器中有 Ubuntu-16.04.5 (amd64)。如何配置 pptpd?似乎 ppp0 接口有问题。不可用。
以下是日志片段:
2 月 13 日 19:21:22 blabla100 pppd[25943]: 插件 /usr/lib/pptpd/pptpd-logwtmp.so 已加载。 2 月 13 日 19:21:22 blabla100 pppd[25943]: 无法打开 /dev/ppp 设备:没有此文件或目录 2 月 13 日 19:21:22 blabla100 pptpd[25927]: modprobe: 错误:../libkmod/libkmod.c:586 kmod_search_moddep() 无法打开 moddep 文件 '/lib/modules/ 2 月 13 日 19:21:22 blabla100 pptpd[25927]: modprobe: 严重错误:在目录 /lib/modules 中未找到模块 ppp_generic 2 月 13 日 19:21:27 blabla100 pptpd[25927]: /usr/sbin/pppd: 您需要通过以下方式创建 /dev/ppp 设备节点 2 月 13 日 19:21:27 blabla100 pptpd[25927]: 以 root 身份执行以下命令: 2 月 13 日 19:21:27 blabla100 pptpd[25927]: mknod /dev/ppp c 108 0 2 月 13 日 19:21:27 blabla100 pppd[25935]: 您需要通过以下方式创建 /dev/ppp 设备节点 以 root 身份执行以下命令: mknod /dev/ppp c 108 0
所以我想我必须在主机上创建 /dev/ppp,但如何允许仅在这个容器中访问它,而不是其他容器。
答案1
/dev/ppp
主机上的Unix 字符设备是您访问 内核模块的方式ppp.ko
。因此,您需要让 LXD 将该字符设备链接到 LXD 容器中。操作方法如下:
$ lxc config device add mypptpcontainer mypppdevice unix-char source=/dev/ppp uid=0 gid=0 mode=0600
在哪里:
mypptpcontainer
是您的 LXD 容器的名称。mypppdevice
只是此 LXD 设备的名称。选择任意名称。- 其余部分指定了 unix 字符设备的特性。