1

C# を使用して、openvpn 経由でリモート サーバーに接続しようとしています。無事接続できました。しかし、切断は正しく機能していないようです。アプリを閉じると、インターネットにアクセスできなくなります。TAP アダプターを手動で無効にしてから、アプリを再度実行できるようにする必要がありました。「ルート プリント」を確認したところ、はい、Tap がインターネットより先に来ているため、ネットにアクセスできませんでした。

次を使用して接続します:openvpn --config client.ovpn --ca certificate.cer --auth-user-pass user.txt

私の切断コードは次のとおりです。

    public void DisconnectServer()
    {
        // Write the logs
        if (sb != null)
            IOUtility.WriteToFile(sb.ToString(), "ConnectionLogs.log");
        processInfo = null;
        if (process != null)
        {
            //process.Close();
            if (!process.HasExited)
            {
                process.CancelOutputRead();
                ProcessThreadCollection ptc = process.Threads;
                Console.WriteLine("////// PROCESSED THREAD = " + ptc.Count);
                for (int i = 0; i > ptc.Count; i++)
                {
                    ProcessThread pt = ptc[i];
                    pt.Dispose();
                    ptc.Remove(pt);
                    Console.WriteLine("REmoed Thread @ " + i);
                }
                process.CloseMainWindow();
                process.Kill();
            }
        }

        sb = null;
        connected = false;
    }

この問題についてネットで検索したところ、管理を使用して openvpn を安全に終了することがわかりました。しかし、管理コードの実行方法がわかりません。開始中に追加しました:openvpn --config ca.ovpn --ca cert.cer --management 127.0.0.1 12345 次に、openvpnを閉じるためにSIGTERMシグナルを与える方法。新しいコマンドで、試してみました: openvpn --management-signal SIGTERM しかし、うまくいきません。

OpenVpn はサービスとしてインストールされないため、 --service 属性は使用できないと思います。

誰かが切断のどこで間違っているのか教えてもらえますか? 管理信号コードの処理方法。これは、openvpn サーバーから切断する最良の方法です。openvpn 自体も終了できますか?

親切に私を助けてください。インターネットで多くのことを検索し、いくつかの助けを見つけましたが、まだ成功していません. この問題で立ち往生。

ありがとう

4

1 に答える 1

1

ありがとうございます、

私は解決策を見つけましたが、これが私が成功した方法です:

            foreach (Process p in Process.GetProcesses())
        {
            if (p.ProcessName.StartsWith("openvpn"))
            {
                p.Kill();
                Console.WriteLine("Killed Process");
                break;
            }
        }

そのスレッドとすべてを操作する代わりに、上記のコードが問題の解決に役立ちました。

これが他の人にも役立つことを願っています。

于 2011-02-17T13:11:53.000 に答える