OpenVPN和客户端连接脚本

在Debian Wheezy上运行桥接模式的OpenVPN服务器(2.3.2)。 一切工作正常,在客户端连接和访问所需的networking(S)方面。 我试图通过使用客户端连接选项添加一些花里胡哨的声音。 这是openvpnconfiguration文件的相关部分:

script-security 3 system client-connect /etc/openvpn/scripts/clientconnect.sh 

在试图检查脚本实际运行时,clientconnect.sh由以下部分组成:

 #!/bin/bash echo "testing">>/etc/openvpn/scripts/test exit 0 

很简单。

如果我从命令行运行脚本,正如所期望的那样,每次都将“testing”附加到/ etc / openvpn / scripts / test,并返回0。

当我从客户端连接时,我在/ etc / openvpn / scripts / test中得到一个“testing”。 大!

但是,当我断开连接,再次连接,我不会得到另一个“testing”

所以,要检查它的实际运行情况,我将clientconnect.sh中的退出值更改为1

果然, 每次尝试从客户端连接失败,因为脚本返回一个非0值。

为什么它看起来像脚本没有运行?

顺便说一句,如果我重新启动服务器上的openvpn服务,然后再次进行“testing”,但是再次,在后续连接上没有写入任何内容。

任何指针/帮助/神秘咒语都受到感谢! 迪伦

OpenVPN是非常适应networking中断(它真的超越它),所以除非你有客户端configuration中的explicit-exit-notify [n]之类的东西,断开客户端将看起来像服务器的networking中断。

然后,根据你如何configuration超时/保持活动等等,在服务器决定客户端真的离开之前可能会花费很长时间。 在testing中你可能还没有达到这个条件。

validation这一点的方法是启用服务器中的pipe理接口,然后在那里执行telnet localhost 1194 ,并通过执行“status”命令并检查其输出来validation客户端是否真正断开连接 – 在客户端断开连接之后。

另外一种更低技术的方法来testing这个方法,就是将一个脚本挂接到client-disconnect事件,并查看它是否在客户端断开连接时运行。