在 Google 上搜索了几天,我还是找不到问题的正确答案。在阅读了大量脚本可能性后,我找到了 OpenVPN。
我有一个运行 Debian 7.8 的客户端,带有 OpenVPN 2.2.1 x86_64-linux-gnu。
连接工作正常,一切都很好。但是 - 我需要安装一些 NFS 驱动器,然后才能启动连接(我猜是“启动”)。
但是 - 然后当我尝试启动一个脚本时,遇到了这个错误:
Tue Jun 23 10:44:55 2015 /usr/share/openvpn/script-to-start.sh tun0 1500 1542 192.168.2.6 192.168.2.5 init
Tue Jun 23 10:44:55 2015 WARNING: Failed running command (--up/--down): could not execute external program
Tue Jun 23 10:44:55 2015 Exiting
我在配置文件中添加了以下设置:
script-security 2
up /usr/share/openvpn/script-to-start.sh
down /usr/share/openvpn/script-to-stop.sh
查看完整设置文件在这里。
我正在尝试运行的脚本(目前仅用于测试)是:
#/bin/bash
grep vpn /var/log/syslog > /home/USERNAME/test.txt
clear
echo "Good morning, world."
(2017年更新:- #/bin/bash 行中缺少“!”标记。不要复制/粘贴上面的行,因为这是问题所在)
我也用“#!/bin/sh”进行了测试,以确保万无一失。毕竟,我测试了权限和所有权:
如您所见,我在“up”和“down”命令之前添加了“script-security 2”。OpenVPN 以 root 身份运行,并由 init.d 脚本启动,但即使我尝试使用完整命令运行它,也会收到相同的错误。
参见以下示例(带有和不带有 sudo):
sudo openvpn --remote SERVERDOMAIN --dev tun1 --ifconfig 192.168.2.2 192.168.2.1 --tls-client --ca /etc/openvpn/easy-rsa/keys/ca.crt --cert /etc/openvpn/easy-rsa/keys/TITLE.crt --key /etc/openvpn/easy-rsa/keys/TITLE.key --reneg-sec 60 --verb 5 --script-security 2 --up /usr/share/openvpn/script-to-start.sh
如果我自己使用 SU 和 Sudo 运行这个小脚本,一切都会顺利进行,不会出现任何问题。
重点是我需要运行此命令来安装几个 NFS 驱动器,但现在我被锁定了。所以我需要一些帮助 - 我在丹麦论坛上尝试过,但没有成功。
sudo mount 192.168.2.1:/media/usb1/sync /home/USERNAME/sync
在线手册没有那么有用 - 现在我需要您的帮助。
答案1
我遇到了同样的问题,幸运的是我找到了解决方案。
以下是我检查过的内容:
- 文件夹的权限
- openvpn访问脚本的权限
- 脚本必须列出所使用的任何命令的完整路径(例如
grep
,您可以在命令前/bin/grep
输入来找到完整路径)which
- 改用
script-security 2 system
答案2
只是为了澄清一下:我忘记了“!“(感叹号)。这就能解释一切了。
#!/bin/bash
答案3
我遇到了类似的问题。就我而言,似乎down /etc/openvpn/update-resolv-conf
缺少更新 DNS 的权限。它给出以下错误:
error: os x route delete command failed: external program exited with error status: 77
经过仔细搜索,我更新了.ovpn
文件中的两行:
# Downgrade privileges after initialization (non-Windows only)
user your_user_name
group your_group_name
# I write admin here. But I also believe that a lower privilege might also work.
答案4
检查运行 openvp 守护进程的用户名以及chown
脚本文件夹或文件。