Skip to main content

A pure Python SSL VPN client implementation

Project description

项目概述

PySslvpn是一个功能完整的开源Python SSL VPN客户端,支持连接通用SSL VPN服务器,具备多配置管理、自动重连、网络配置自动清理等高级功能。 基于纯Python完整实现的SSL VPN客户端。这个方案使用Python进行TLS通信,并包含完整的VPN客户端功能,作者是zouhong

安装

从PyPI安装(推荐)

pip install pysslvpn

从源码安装

# 克隆仓库
git clone https://github.com/proyy/PySslvpn.git
cd PySslvpn

# 安装依赖
pip install -r requirements.txt

# 安装包
pip install .

使用

命令行使用

安装后可以直接使用 pysslvpn 命令:

# 连接VPN服务器
sudo pysslvpn connect --server vpn.example.com --port 443 --username user --password pass

# 使用已保存的配置连接
sudo pysslvpn connect --config myvpn

# 启用自动重连
sudo pysslvpn connect --server vpn.example.com --username user --password pass --auto-reconnect --max-retries 5

# 列出所有保存的配置
pysslvpn list

# 保存配置
pysslvpn save myvpn --server vpn.example.com --username user

# 删除配置
pysslvpn delete myvpn

# 设置默认配置
pysslvpn set-default myvpn

从源码运行

# 安装依赖
pip install tlslite-ng python-tun-tap

# 运行客户端
sudo python cli.py connect vpn.example.com -u your_username

带参数运行:

bash sudo python cli.py connect vpn.example.com -u your_username -p your_password --port 8443 --ignore-cert

使用已保存的配置:

bash sudo python cli.py connect --config my_config

启用自动重连:

bash sudo python cli.py connect vpn.example.com -u your_username --auto-reconnect --max-retries 5 --retry-delay 10 功能特性 ✅ 纯Python实现:使用tlslite-ng进行TLS通信

✅ 通用SSL VPN协议:支持标准SSL VPN服务器

✅ 完整的认证流程:用户名/密码认证

✅ 证书错误处理:可配置忽略无效证书

✅ 动态配置接收:接收服务器下发的路由和DNS

✅ 自动资源清理:断开时清理所有网络配置

✅ TUN接口管理:自动创建和配置虚拟接口

✅ 多配置管理:支持多个VPN配置的保存、切换和管理

✅ 自动重连机制:连接中断时自动重连,可配置重试次数和延迟

✅ 完整CLI界面:支持子命令模式,提供友好的命令行交互

协议说明 这个实现使用简单的应用层协议:

数据包格式:5字节头部(1字节类型 + 4字节长度) + 载荷

包类型:

0: IP数据包

1: 控制消息

2: 认证数据

3: 配置信息

配置管理

PySslvpn支持多配置管理,可以保存多个VPN服务器配置:

# 保存配置
sudo python cli.py save my_config vpn.example.com -u username -p password --port 8443

# 列出所有配置
sudo python cli.py list

# 删除配置
sudo python cli.py delete my_config

# 设置默认配置
sudo python cli.py set-default my_config

CLI命令参考

  • connect: 连接VPN服务器
  • list: 列出所有保存的配置
  • save: 保存新的VPN配置
  • delete: 删除指定的配置
  • set-default: 设置默认配置

注意事项

权限要求:需要root权限创建TUN设备和管理网络配置

证书安全:生产环境不应使用--ignore-cert选项

平台支持:主要在Linux上测试,其他Unix系统可能需要调整

服务器兼容:需要服务器端实现相同的协议格式

自动重连:启用自动重连时,确保网络环境稳定,避免无限重连

这个实现提供了完整的SSL VPN客户端功能,可以连接支持标准SSL VPN协议的服务器,并正确处理路由、DNS等网络配置。

开源协议

本项目采用 GNU General Public License v3.0 (GPL-3.0) 开源协议。

重要条款:

  • 您可以自由使用、修改和分发本软件
  • 任何基于本软件的衍生作品必须采用相同的开源协议
  • 必须提供完整的源代码
  • 禁止商业使用

完整的协议条款请参阅 LICENSE 文件。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pysslvpn-1.0.0.tar.gz (20.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pysslvpn-1.0.0-py3-none-any.whl (18.9 kB view details)

Uploaded Python 3

File details

Details for the file pysslvpn-1.0.0.tar.gz.

File metadata

  • Download URL: pysslvpn-1.0.0.tar.gz
  • Upload date:
  • Size: 20.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.11

File hashes

Hashes for pysslvpn-1.0.0.tar.gz
Algorithm Hash digest
SHA256 ee597b100a6fe1e3df708b9139c1c2c998228ba6460d53ae1a68fb4f6521a966
MD5 841f4b9db4024e1c11b2100e4afb85fa
BLAKE2b-256 437ea403d680941a92f80612534ed61a121c91f63cba52e91bfbbdc6dd8786b4

See more details on using hashes here.

File details

Details for the file pysslvpn-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: pysslvpn-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 18.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.11

File hashes

Hashes for pysslvpn-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 00d7459c9be3befc5acd4f1b6120c0679df7d4dc9774316d9c53ebe993660d62
MD5 bd8da6e56baffa2a068150f052de8bf5
BLAKE2b-256 2d496db0cafbf3465c28e363fb7ab1435feefb962c90de567bca23ec2b90f9fa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page