lxd 非特权容器上的 PPTPD

lxd 非特权容器上的 PPTPD

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

在哪里:

  1. mypptpcontainer是您的 LXD 容器的名称。
  2. mypppdevice只是此 LXD 设备的名称。选择任意名称。
  3. 其余部分指定了 unix 字符设备的特性。

相关内容