如何测试OpenVPN隧道是否已建立?

时间:2012-09-27 07:22:08

标签: openvpn

要测试OpenVPN隧道设置,我需要在尝试发送之前检测新启动的OpenVPN守护程序何时建立了隧道(或尝试并失败这样做)隧道上的东西。

1 个答案:

答案 0 :(得分:5)

基于timeout tail的优秀方式:

ssh hostname '
    sleep 5 &
    timerPID=$!;
    tail -n0 -F --pid=$timerPID /var/log/messages | grep openvpn | while read -r line;
    do
        if echo "$line" | grep -qF -e "Initialization Sequence Completed" -e "Connection refused";
        then
            kill $timerPID;
            break;
        fi;
    done &
    /etc/init.d/openvpnA start &
    wait $timerPID'

那是:

  1. 连接到VPN客户端或服务器
    1. 异步启动计时器
    2. 收集包含openvpn的异步日志行,直到计时器终止
      1. 查找连接成功或被拒绝的迹象
        1. 杀掉计时器
        2. 退出循环
    3. 启动守护程序
    4. 等待计时器死亡
  2. 它似乎有用,但是对OpenVPN不熟悉我不确定这是否是检测连接状态的正确方法。由于我是唯一一个使用该机器的人,我认为由于早期的流程启动而导致grep成功的计时问题的可能性可以忽略。但我猜测只有熟悉OpenVPN代码的人才能真正回答这个问题:目前的测试是否足以确定连接是成功还是被拒绝?