在Proxmox/LXC容器中设置OpenVPN的实用技巧与解决方案
当我尝试将OpenVPN设置迁移到新Proxmox服务器的容器中时,遇到了多个问题,通过互联网搜索找到的解决方案要么无效,要么已经过时。因此,我决定将所需的一切内容整合到一篇博客文章中,介绍如何在Proxmox/LXC容器内的Debian 9上设置OpenVPN。
将TUN设备添加到非特权容器
由于您确实应该在非特权模式下运行容器,因此典型的添加/允许解决方案:
|
|
将无法工作。在特权模式下运行容器是一个非常糟糕的主意,但幸运的是,有一个原生的LXC解决方案。
使用以下命令停止容器:
|
|
将以下行添加到/etc/pve/lxc/<容器ID>.conf:
|
|
使用以下命令启动容器:
|
|
现在OpenVPN将能够创建tun设备。只需使用以下命令进行测试运行:
|
|
将OpenVPN配置文件添加到“自动启动”
您需要将OpenVPN文件放入/etc/openvpn/目录中,并使用.conf扩展名。如果您添加了新文件,需要在执行service openvpn restart之前运行:
|
|
现有配置文件的更改不需要重新加载systemd。
在非特权容器中让systemd启动OpenVPN
现在OpenVPN可以手动工作,但无法通过“init”脚本启动。您会在日志文件中看到以下错误消息:
|
|
要解决此问题,请编辑/lib/systemd/system/openvpn@.service并在LimitNPROC=10前添加#注释符号。
现在使用systemctl daemon-reload重新加载systemd,它应该可以工作。
希望这些信息/技巧能帮助您比我更快地解决问题。如果您知道在LXC/Proxmox中的Debian 9容器中运行OpenVPN的其他技巧/解决方案,请写下评论!谢谢!
评论
Bill McGonigle — 2018年9月13日
感谢提供此信息。在Proxmox 5.2中,我需要使用create=dir。我不确定区别是什么,但使用create=file时pct甚至无法启动容器。