【问题标题】:How can I connect an OpenVPN server without writing an ovpn file?如何在不编写 ovpn 文件的情况下连接 OpenVPN 服务器?
【发布时间】:2021-08-27 15:59:27
【问题描述】:

我一直在尝试制作一个非常基本的 OpenVPN 客户端包装器。我已经使用 ovpn 文件和一些启动参数使其连接到服务器,但我想在没有写入文件的情况下执行此操作,因为我的程序具有连接文件的文本。有什么方法可以让我无需编写临时 ovpn 文件即可连接?

这是我目前拥有的:

string ServerFileContents = "...";
string UserPassContents = "...";
File.WriteAllText("server.ovpn", ServerFileContents);
File.WriteAllText("userpass.txt", UserPassContents);
string args = "--config server.ovpn --auth-user-pass userpass.txt";
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new 
System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = @"C:\Program Files\OpenVPN\bin\openvpn.exe";
startInfo.Arguments = args;
startInfo.Verb = "runas";
process.StartInfo = startInfo;
process.Start();

理想情况下,我会做类似的事情(我知道这实际上行不通,我只是想表明我的观点):

string args = "--configcontents " + ServerFileContents + " --auth-user-pass-contents " + UserPassContents;

【问题讨论】:

  • [runas] 标签似乎与您的问题无关,因此我已将其删除。如果使用runas 启动 OpenVPN 可执行文件在某种程度上是您不使用配置文件的障碍,请您在您的问题中详细说明这一点,因为您目前所写的内容根本没有遇到。

标签: c# process openvpn processstartinfo


【解决方案1】:

您始终可以将配置文件中通常存在的所有选项作为--option 添加到 OpenVPN 本身。但是需要在文件中包含证书和密钥,因为命令行不支持将它们嵌入到带有 <ca>...</ca> 之类的配置文件中。

另一种选择是使用--config stdin,然后将配置文件写入OpenVPN的标准输入。这可能最接近您想要实现的目标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 2022-10-25
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    • 2019-06-17
    • 1970-01-01
    相关资源
    最近更新 更多