qwj / python-vpn

VPN Server implemented in pure Python. (For Research Purposes Only)
MIT License
362 stars 102 forks source link
esp ike ikev1 ikev2 ipsec lightweight psk python tunnel vpn wireguard

python-vpn

|made-with-python| |PyPI-version| |Hit-Count| |Downloads| |Downloads-month| |Downloads-week|

.. |made-with-python| image:: https://img.shields.io/badge/Made%20with-Python-1f425f.svg :target: https://www.python.org/ .. |PyPI-version| image:: https://badge.fury.io/py/pvpn.svg :target: https://pypi.python.org/pypi/pvpn/ .. |Hit-Count| image:: http://hits.dwyl.io/qwj/python-vpn.svg :target: https://pypi.python.org/pypi/pvpn/ .. |Downloads| image:: https://pepy.tech/badge/pvpn :target: https://pepy.tech/project/pvpn .. |Downloads-month| image:: https://pepy.tech/badge/pvpn/month :target: https://pepy.tech/project/pvpn .. |Downloads-week| image:: https://pepy.tech/badge/pvpn/week :target: https://pepy.tech/project/pvpn

VPN Server implemented in pure Python. (For Research Purposes Only)

Introduction

All VPN softwares are stupid, clumsy and hard to configure. So comes python-vpn.

Press "RETURN" to start, "CTRL+C" to stop.

QuickStart

.. code:: rst

$ pip3 install pvpn Successfully installed pvpn-0.2.1 $ pvpn -p yourpassword Serving on UDP :500 :4500... ^C $ pvpn -wg 9000 Serving on UDP :500 :4500... Serving on UDP :9000 (WIREGUARD)... ^C

Open server's UDP port :500 :4500 to your device. In device's system setting, add an "IPSec" (iOS) or "IPSec IKE PSK" (Android) node, write down the server address and password "yourpassword". Connect.

If you prefer wireguard VPN, specify "-wg (port)" parameter and open server's (port) UDP port to your device. Paste the printed server public key to wireguard client settings, write down the server address:port. Connect.

You should modify the default password "test" with a good one. See "pvpn -h" for more options.

Features

Protocols

+-------------------+----------------+-------------------+----------------+------------------+ | Protocol Name | Name in iOS | Name in Android | Name in MacOS | Name in Windows | +===================+================+===================+================+==================+ | L2TP PSK ✔ | L2TP | "L2TP/IPSec PSK" | L2TP/IPSec | L2TP | +-------------------+----------------+-------------------+----------------+------------------+ | IKEv1 PSK ✔ | IPsec [1] | "IPSec Xauth PSK" | Cisco IPSec | IPSec | +-------------------+----------------+-------------------+----------------+------------------+ | IKEv2 PSK ✔ | IKEv2 [2] | "IPSec IKEv2 PSK" | IKEv2 | IKEv2 | +-------------------+----------------+-------------------+----------------+------------------+ | WireGuard ✔ | WireGuard App [3] | +-------------------+----------------+-------------------+----------------+------------------+

| [1] Do not use certificates | [2] Turn off "user authentication" | [3] Turn off "preshared key"

Examples

Specifications

IPSec/ESP

IKE/ISAKMP

IKEv2

Diffie Hellman

L2TP

WireGuard