c++ - 如何在 C++ 中创建 OpenVPN 客户端?(不是一个 tun/tap 经理,一个真正的客户)
问题描述
OpenVPN3 库的工作方式是在主机系统上创建一个 TUN/TAP 接口。例如,在 Android 上,不可能同时创建两个不同的 VPN 连接,但我确实需要能够在我的 Android 应用程序(可能还有 iOS 和 macOS 等其他系统)上同时使用 2 个或更多连接,Linux,紫红色)。
我正在阅读OpenVPN3 源代码。当然,它可以修改为用作 C++ 中的库以打开直接连接而无需调用系统,但恐怕我最终会遇到不安全的事情。编写安全的加密代码非常困难。
我不能使用其他VPN协议,它必须是OpenVPN。
还有其他选择吗?既然OpenVPN是基于OpenSSL的,那不就是通过OpenSSL连接,然后给服务器发包吗?(当然要正确解释 .ovpn 客户端文件)
还有另一种我想念的方法吗?
更新:
我打开了一个问题,开发人员说我可以创建一个 TunBuilder 接口。有人知道从哪里开始吗?那里有数以百万计的课程
解决方案
在 github 上还有另一个项目,称为OpenVPN,它似乎不是您引用的那个。这一切都是在 C++ 中使用 OpenSSL 完成的。这个构建看起来像是在相当新的 Microsoft Visual Studio (2017) 上进行的——所以至少所有的分支都不是陈旧的!:) 我认为这个项目可能更接近你正在寻找的东西。
推荐阅读
- python - 如何大写列表中的特定元素(python)
- c# - 分页接收记录的SQL查询
- python - 用其他数据框列中的值替换数据框列值
- solr - 带有 docID 的 Apache SOLR 异常
- drag-and-drop - 如何使用列表视图在 swiftUI 中创建两列列表?
- spring-boot - Spring Integration - 无法查看 MessageHandler、MessageChannel 和 MessageSource 的指标
- java - 如何强制 jGraphX 使用直线
- python - 如何整合来自不同计算机的 celery 日志。芹菜
- python - 如何拆分某些字符而不是其他字符?
- python - 通过 EC2 从 python 加载数据帧到雪花