通过php脚本选择OpenVPN配置文件

时间:2016-11-29 10:56:23

标签: php curl proxy vpn openvpn

我在自己的专用云服务器(ubuntu)上使用openvpn。因此,我通过执行this教程中编写的所有步骤创建了一个界面。当我使用本教程中描述的终端时,一切正常。此外,当我尝试通过curl curl_setopt($ch, CURLOPT_INTERFACE, "tun0");连接到接口时,它工作正常。但是因此我必须在运行php脚本之前在终端中执行以下语句:

openvpn "path/to/my/file.ovpn"

当我想要更改IP地址时,我必须再次执行上述语句,但使用另一个file.ovpn

但我想在我的php脚本中更改file.ovpn,如:

exec('sudo openvpn path/to/my/file.ovpn');

但这不起作用。我总是得到错误curl error: Could not resolve host: tun0。那么我做错了什么?这甚至可能吗?

现在,配置文件位于根文件夹中。那可能是授权/访问问题?

1 个答案:

答案 0 :(得分:0)

最有可能的情况是,sudo失败了,它试图要求输入密码并且你没有给它任何密码,或者PHP运行的用户不在sudo文件中而且它出错了。在这种情况下,羞于忽视stderr并且没有注意到它。

在任何情况下,如果php以用户身份运行" www-data",请将此添加到/ etc / sudoers

www-data ALL=(ALL) NOPASSWD: /usr/bin/openvpn path/to/my/file.ovpn

只需将用户运行的用户php替换为www-data(在linux中,最常见的是,用户称为www-data),/ usr / bin / openvpn用openvpn二进制文件所在的位置替换 和警告,这允许用户以root身份运行准确的命令/usr/bin/openvpn path/to/my/file.ovpn而无需密码。我相信这会解决你的问题。