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

本文详细介绍了在Proxmox的LXC非特权容器中配置Debian 9 OpenVPN的步骤和解决方案,包括TUN设备设置、配置文件自动启动及systemd服务调整等关键技术点。

在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

然后再执行 service openvpn restart。 现有配置文件的更改不需要systemd重新加载。

让systemd在非特权容器内启动openvpn

现在OpenVPN可以手动运行,但不能通过“init”脚本运行。您会在日志文件中看到以下错误消息:

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

要解决此问题,请编辑

1
/lib/systemd/system/openvpn@.service

并在以下行前添加 #

1
LimitNPROC=10

现在使用以下命令重新加载systemd:

1
systemctl daemon-reload

它应该可以工作了。

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


评论

  1. Bill McGonigle — 2018年9月13日
    谢谢。在Proxmox 5.2中,我需要使用 create=dir。我不确定区别是什么,但使用 create=file 时pct甚至无法启动容器。
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计