在Proxmox/LXC容器中配置Debian 9 OpenVPN的实用技巧

本文详细介绍了在Proxmox虚拟化环境的非特权LXC容器中配置OpenVPN服务时遇到的常见问题及解决方案,包括TUN设备挂载、系统服务启动等关键技术要点。

在Proxmox/LXC容器中配置Debian 9 OpenVPN的实用技巧

当我尝试将OpenVPN设置迁移到新Proxmox服务器的容器时,遇到了多个问题。通过互联网搜索提供的解决方案要么无效,要么已经过时。因此,我决定将所需的所有内容整合到一篇博客文章中,指导如何在Proxmox/LXC容器内的Debian 9上设置OpenVPN。

将TUN设备引入非特权容器

由于确实应该在非特权模式下运行容器,使用以下典型解决方案无法工作:

1
lxc.cgroup.devices.allow: c 10:200 rwm

在特权模式下运行容器是个糟糕的主意,但幸运的是,有一个原生LXC解决方案。

停止容器:

1
pct stop <containerid>

将以下行添加到/etc/pve/lxc/<containerid>.conf

1
lxc.mount.entry = /dev/net/tun dev/net/tun none bind,create=file

启动容器:

1
pct start <containerid>

现在OpenVPN将能够创建tun设备。可以使用以下命令进行测试运行:

1
openvpn --config /etc/openvpn/blabla.conf

将OpenVPN配置文件添加到"自动启动"

您需要将OpenVPN文件放入/etc/openvpn/目录,并使用.conf扩展名。添加新文件后,需要运行:

1
systemctl daemon-reload

然后重新启动OpenVPN服务。

现有配置文件的更改不需要systemd重新加载。

在非特权容器中让systemd启动OpenVPN

现在OpenVPN可以手动运行,但无法通过"init"脚本运行。在日志文件中会看到以下错误消息:

1
daemon() failed or unsupported: Resource temporarily unavailable (errno=11)

要解决此问题,请编辑/lib/systemd/system/openvpn@.service,并在以下行前添加#

1
LimitNPROC=10

现在使用systemctl daemon-reload重新加载systemd,它应该可以正常工作。

希望这些信息/技巧能帮助您比我更快地解决问题。如果您知道在LXC/Proxmox中的Debian 9容器中运行OpenVPN的其他技巧/解决方案,请发表评论!谢谢!


评论

Bill McGonigle — 2018年9月13日 感谢提供这些信息。在Proxmox 5.2中,我需要使用create=dir。不确定有什么区别,但使用create=file时pct甚至无法启动容器。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计