• Stars
    star
    364
  • Rank 116,381 (Top 3 %)
  • Language
    C
  • License
    GNU General Publi...
  • Created over 7 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

multithreaded openvpn client

frivpn

A multi-threaded OpenVPN client (WIP)

With Raspberry Pis, ODROIDs and APUs becoming ubiquitous and cheap devices, they are often used and configured as VPN gateways to the Internet. OpenVPN can't use those devices to their full capacity, since it runs single-threaded and quickly maxes out one CPU core due to the lack of hardware-accelerated AES cryptography.

frivpn is multi-threaded and runs on multiple (all) CPU cores, which results in the best possible VPN bandwidth and throughput.

Device OpenVPN frivpn Comment
APU.1D ~30 Mbit/s ~60 Mbit/s DualCore 1GHz AMD G series T40E
ODROID XU4 ~24 Mbit/s ~170 Mbit/s QuadCore 2GHz Cortex-A15
Raspberry Pi 3 ~20 Mbit/s ~?? Mbit/s QuadCore 1.2GHz Cortex-A53
Raspberry Pi 2 ~15 Mbit/s ~?? Mbit/s QuadCore 900MHz Cortex-A7

Installation

Packages

ArchLinux

# yaourt -S frivpn-git

From Source

Dependencies

Debian (stretch)

# apt install build-essential cmake lua5.2 lua5.2-dev lua-posix lua-luaossl \
              lua-cqueues lua-socket libssl-dev liblzo2-dev

Ubuntu 17.10 (artful)

# apt install build-essential cmake lua liblua5.2-dev lua-posix lua-luaossl \
              lua-cqueues libssl-dev liblzo2-dev

ArchLinux

# yaourt -S cmake lua lua-posix lua-luaossl lua-cqueues openssl lzo

Build it

$ git clone https://github.com/znuh/frivpn.git
$ mkdir frivpn/build
$ cd frivpn/build
$ cmake ..
$ make

Run it

The frivpn_client expects a config as the first parameter. See the configs directory for configuration examples.

$ ./frivpn_client.lua configs/ipredator

Troubleshooting & Caveats

While frivpn is generally compatible with any OpenVPN server, it (currently) requires the server to be configured in the following way:

  • TCP protocol (no UDP support as of now)
  • Server cert, but no client certs
  • Username & password auth
  • tls-auth enabled
  • comp-lzo enabled
  • cipher AES-256-CBC
  • auth SHA1

Found an OpenVPN-compatible service that doesn't work with frivpn yet? Open an issue and let us know!

More Repositories

1

re-DECTed

tools for playing with DECT
Python
137
star
2

dashbutton

dashbutton hwrev 2 analysis & exploit stuff
C
124
star
3

simdump

SIM files dumper
C
22
star
4

corona-watch

monitoring the german corona-warn-app server data
Lua
15
star
5

saleae-binparser

Fast parser for Saleae Logic 2 binary export format (Digital only, Linux only)
C
9
star
6

usb2serial-autovtg

USB to serial converter with automatic target voltage detection, buffered IOs, 1.8V to 5V support and backflow current protection
HTML
9
star
7

poweranalysis

differential power analysis
C
8
star
8

unsorted

Znuh's unsorted cra^H^H^Hstuff
C
7
star
9

t962

reflow oven stuff
C
4
star
10

xilprg-hunz

Hunz' fork of xilprg (Xilinx programming tool)
C++
3
star
11

sc-util

simple Glade/GTK hex term for smartcards (Phoenix/SmartMouse compatible readers only)
Perl
2
star
12

co2mon

CO2 Multimon
HTML
2
star
13

open-nexys

Open source FX2 firmware + FPGA code for the Digilent Nexys board
VHDL
2
star
14

nyanpresenter

Simple & crappy presenter w/ NYAN cat progressbar for pdf-based slides
2
star
15

rockpi-pcie

PCIe config/devicetree for RockPi boards w/ recent linux kernels (>=5.0)
Shell
1
star
16

picotools

Picoscope PS5203/5204 tools
C
1
star
17

fnordstream

fnordstream - multiple streams, zero leaks
Go
1
star
18

dpad

drawpad
C
1
star
19

STM32_VCP

Virtual COM port (ACM/CDC device) loopback demo for a STM32F107 (Propox MMstm32F107 mini-module)
C
1
star
20

kicad-chm36

Interactive Web Browser based KiCad PCB to CHM-T36VA Pick&Place File Converter
JavaScript
1
star
21

stm32flash

stm32flash fork
C
1
star
22

pcbs

various printed circuit boards
1
star
23

numcon

numeral systems conversion extension for chrome
JavaScript
1
star