流行的 StrongSwan VPN 解决方案的官方 Android 端口。

# 特点和限制#

* 使用 Android 4+ 提供的 VpnService API。某些制造商的设备似乎缺乏对此的支持 - StrongSwan VPN 客户端无法在这些设备上运行!
* 使用 IKEv2 密钥交换协议(*不*支持 IKEv1)
* 使用 IPsec 进行数据流量(*不*支持 L2TP)
* 全面支持通过 MOBIKE(或重新验证)改变的连接性和移动性
* 支持用户名/密码 EAP 身份验证(即 EAP-MSCHAPv2、EAP-MD5 和 EAP-GTC)以及 RSA/ECDSA 私钥/证书身份验证来验证用户身份,还支持带有客户端证书的 EAP-TLS
* 通过使用 RFC 4739 中定义的两轮身份验证来支持组合 RSA/ECDSA 和 EAP 身份验证
* VPN 服务器证书根据用户在系统上预安装或安装的 CA 证书进行验证。用于验证服务器身份的 CA 或服务器证书也可以直接导入到应用程序中。
* 如果 VPN 服务器支持,则支持 IKEv2 分段(strongSwan 从 5.2.1 开始支持)
* 分割隧道允许仅通过 VPN 发送某些流量和/或排除其中的特定流量
* 每个应用程序 VPN 允许限制 VPN 连接到特定应用程序,或排除它们使用它
* IPsec 实现目前支持 AES-CBC、AES-GCM、ChaCha20/Poly1305 和 SHA1/SHA2 算法
* 密码当前以明文形式存储在数据库中(仅当与配置文件一起存储时)
* VPN 配置文件可以从文件导入
* 通过企业移动管理 (EMM) 支持托管配置

详细信息和变更日志可以在我们的文档中找到:https://docs.strongswan.org/docs/5.9/os/androidVpnClient.html

#权限#

* READ_EXTERNAL_STORAGE:允许在某些 Android 版本上从外部存储导入 VPN 配置文件和 CA 证书
* QUERY_ALL_PACKAGES:在 Android 11+ 上需要选择要排除/包含在 VPN 配置文件和可选 EAP-TNC 用例中的应用程序

# 服务器配置示例 #

示例服务器配置可以在我们的文档中找到:https://docs.strongswan.org/docs/5.9/os/androidVpnClient.html#_server_configuration

请注意,应用程序中使用 VPN 配置文件配置的主机名(或 IP 地址)*必须*作为 subjectAltName 扩展名包含在服务器证书中。

# 反馈 #

请通过 GitHub 发布错误报告和功能请求:https://github.com/strongswan/strongswan/issues/new/choose
如果您这样做,请提供有关您的设备的信息(制造商、型号、操作系统版本等)。

密钥交换服务写入的日志文件可以直接从应用程序内部发送。