【问题标题】:Select OpenVPN configuration file via php script通过 php 脚本选择 OpenVPN 配置文件
【发布时间】:2017-04-13 08:15:33
【问题描述】:

我在自己的专用云服务器 (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。那么我做错了什么?这甚至可能吗?

目前配置文件位于根文件夹中。那么可能是授权/访问问题?

【问题讨论】:

    标签: php curl proxy vpn openvpn


    【解决方案1】:

    最有可能的是,sudo 失败,它尝试询问密码而您没有提供任何密码,或者 PHP 运行的用户不在 sudo 文件中并且它出错了。在这种情况下,你会因为忽略 stderr 而没有注意到它而感到羞耻。

    无论如何,如果 php 以用户 "www-data" 运行,请将其添加到 /etc/sudoers

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-16
      • 2021-04-06
      • 1970-01-01
      • 1970-01-01
      • 2015-03-24
      • 2019-08-24
      相关资源
      最近更新 更多