README.Debian
README.debug.md
1Debugging mlvpn
2===============
3
4gdb
5---
6```shell
7sudo gdb -x gdb-cmds.txt --args -c test/client.conf -u ed -v --debug
8```
9
10Debug tokens
11------------
12MLVPN can filter debug messages based on specific tokens using -D argument.
13
14Tokens available:
15
16 - config: configuration file related
17 - control: control socket related (HTTP/json, UNIX socket)
18 - dns: DNS related
19 - net: network related (on line per packet AT LEAST)
20 - privsep: privilage separation
21 - protocol: protocol things (MOST COMMON to use for debugging)
22 - reorder: reordering algorithm
23 - rtt: latency measurements
24 - tuntap: system tuntap
25 - wrr: weighted round robin
26
27
README.md
1=========================================
2MLVPN - Multi-Link Virtual Public Network
3=========================================
4[![Build Status](https://travis-ci.org/zehome/MLVPN.svg?branch=ev)](https://travis-ci.org/zehome/MLVPN)
5[![Coverity Status](https://scan.coverity.com/projects/4405/badge.svg)](https://scan.coverity.com/projects/4405)
6
7author: Laurent Coustet <ed arobase zehome.com>
8
9Take a look at the official documentation on [Read The Docs](http://mlvpn.readthedocs.org/en/latest/)
10
11Introduction
12============
13MLVPN will do it's best to acheive the following tasks:
14
15 * Bond your internet links to increase bandwidth (unlimited)
16 * Secure your internet connection by actively monitoring
17 your links and removing the faulty ones, without loosing
18 your TCP connections.
19 * Secure your internet connection to the aggregation server using
20 strong cryptography.
21 * Scriptable automation and monitoring.
22
23Quick install
24=============
25
26Install debian package
27----------------------
28```sh
29sudo apt-key adv --keyserver pgp.mit.edu --recv 3324C952
30echo "deb http://debian.mlvpn.fr unstable/" >/etc/apt/sources.list.d/mlvpn.list
31sudo apt-get update
32sudo apt-get install mlvpn
33```
34
35Install FreeBSD port
36--------------------
37```sh
38pkg install git libev libsodium
39git clone --branch freebsd https://github.com/zehome/MLVPN mlvpn
40cd mlvpn
41make
42```
43
44Build from source
45-----------------
46```sh
47# Debian
48$ sudo apt-get install build-essential make autoconf libev-dev libsodium-dev
49# OR ArchLinux
50$ sudo pacman -S base-devel git libev libsodium
51$ ./autogen.sh
52$ ./configure
53$ make
54$ make install
55```
56
57Build debian package
58--------------------
59```sh
60$ sudo apt-get install build-essential make autoconf
61$ dpkg-buildpackage -us -uc -rfakeroot
62```
63
64Generating a static binary
65--------------------------
66```sh
67apt-get install flex bison build-essential
68MLVPN_VERSION=2.3.0
69EV_VERSION=4.22
70LIBSODIUM_VERSION=1.0.8
71PCAP_VERSION=1.7.4
72wget http://dist.schmorp.de/libev/libev-${EV_VERSION}.tar.gz
73wget https://github.com/jedisct1/libsodium/releases/download/1.0.8/libsodium-${LIBSODIUM_VERSION}.tar.gz
74wget http://www.tcpdump.org/release/libpcap-${PCAP_VERSION}.tar.gz
75tar xzf libev-${EV_VERSION}.tar.gz
76tar xzf libsodium-${LIBSODIUM_VERSION}.tar.gz
77tar xzf libpcap-${PCAP_VERSION}.tar.gz
78
79echo libev
80(cd libev-${EV_VERSION}
81./configure --enable-static --disable-shared --prefix $HOME/libev/
82make -j4 install)
83
84echo libsodium
85(cd libsodium-${LIBSODIUM_VERSION}
86./configure --enable-static --disable-shared --prefix=$HOME/libsodium/
87make -j4 install)
88
89echo libpcap
90(cd libpcap-${LIBPCAP_VERSION}
91./configure --disable-shared --prefix $HOME/libpcap/
92make -j4 install)
93
94wget https://github.com/zehome/MLVPN/releases/download/${MLVPN_VERSION}/mlvpn-${MLVPN_VERSION}.tar.gz
95tar xzf mlvpn-${MLVPN_VERSION}.tar.gz
96cd mlvpn-${MLVPN_VERSION}
97libpcap_LIBS="-L${HOME}/libpcap/lib -lpcap" libpcap_CFLAGS="-I${HOME}/libpcap/include" libsodium_LIBS="-L${HOME}/libsodium/lib -lsodium" libsodium_CFLAGS=-I${HOME}/libsodium/include libev_LIBS="-L${HOME}/libev/lib -lev" libev_CFLAGS=-I${HOME}/libev/include ./configure --enable-filters LDFLAGS="-Wl,-Bdynamic" --prefix=${HOME}/mlvpn/
98make install
99```
100
101Dependencies
102============
103 - libev
104 - libsodium
105 - libpcap (optional)
106
107Security
108========
109
110Privilege separation
111--------------------
112MLVPN uses privilege separation to keep high privileges operations
113away from the core routing stuff.
114
115Code running as root is very minimalist and highly readable to
116avoid risks as much as possible.
117
118Read more about [privilege separation](http://en.wikipedia.org/wiki/Privilege_separation)
119
120Cryptography
121------------
122 * Encryption: Salsa20 stream cipher
123 * Authentication: Poly1305 MAC
124
125Read more on [salsa20](http://cr.yp.to/salsa20.html) and [libsodium](http://doc.libsodium.org/).
126
127
128Principle of operations
129=======================
130**TODO**
131
132Compatibility
133=============
134Linux, OpenBSD, FreeBSD
135
136Windows is *NOT* supported, but MLVPN runs on routers, so you can
137benefit from MLVPN on *ANY* operating system of course.
138
139Contributors
140============
141 * Laurent Coustet, author and maintainer
142 * Philippe Pepiot, contributor (privilege separation, bugfix)
143 * Ghislain Lévèque, contributor (weight round robin)
144 * Fabien Dupont, contributor (bugfix)
145 * Thomas Soëte, contributor (bugfix)
146 * Frank Denis, contributor (documentation)
147 * Nicolas Braud-Santoni, contributor (documentation)
148 * Stuart Henderson, contributor (OpenBSD port/package)
149
150LICENSE
151=======
152See LICENSE file.
153
154Documentation
155=============
156Documentation is available on [Read The Docs](http://mlvpn.readthedocs.org/en/latest/).
157The manpage is also authored in Markdown, and converted using [ronn](http://rtomayko.github.com/ronn/).
158