在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事件,并查看它是否在客户端断开连接时运行。