From 1a5ae67ff887d29b1d9f5bd332b51e30ce6a6937 Mon Sep 17 00:00:00 2001 From: lemoer <git@irrelefant.net> Date: Mon, 19 Feb 2018 08:01:06 +0100 Subject: [PATCH] docs: add general documentation about vpn protocols (#1330) --- docs/features/fastd_mode.gif | Bin 0 -> 28792 bytes docs/features/vpn.rst | 57 +++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 docs/features/fastd_mode.gif create mode 100644 docs/features/vpn.rst diff --git a/docs/features/fastd_mode.gif b/docs/features/fastd_mode.gif new file mode 100644 index 0000000000000000000000000000000000000000..9f97074ff1c3b3ea0eb2d64a9d351c58aa956a53 GIT binary patch literal 28792 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 literal 0 HcmV?d00001 diff --git a/docs/features/vpn.rst b/docs/features/vpn.rst new file mode 100644 index 000000000..59f4d7c79 --- /dev/null +++ b/docs/features/vpn.rst @@ -0,0 +1,57 @@ +Mesh-VPN +======== + +Gluon integrates several OSI-Layer 2 tunneling protocols to +enable interconnects between local meshes and provide +internetwork access. Available protocols currently are: + +- fastd +- L2TPv3 (via tunneldigger) + +fastd is a lightweight userspace tunneling daemon, that +implements cipher suites that are specifically designed +to work well on embedded devices. It offers encryption +and authentication. Its primary drawback are the necessary +context-switches when forwarding packets. + +L2TPv3 is an in-kernel tunneling protocol that performs well, +but offers no security properties by itself. +The brokering of the tunnel happens through tunneldigger, +its primary drawback being the lack of IPv6 support. + +fastd +----- + +Configurable Cipher +^^^^^^^^^^^^^^^^^^^ + + +From the site configuration fastd can be allowed to offer +toggleable encryption in the config mode with the intent to +increase throughput, although in practice the gain is minimal. + +**Site configuration:** + +1) Install ``gluon-web-mesh-vpn-fastd`` in ``site.mk`` +2) Set ``mesh_vpn.fastd.configurable = true`` in ``site.conf`` + +**Gateway configuration:** + +1) Prepend the ``none`` cipher in fastds method list + + +**Config Mode:** +The resulting firmware will allow users to choose between secure (encrypted) and fast (unencrypted) transport. + +.. image:: fastd_mode.gif + +**Unix socket:** +To confirm whether the correct cipher is being used, fastds unix +socket can be interrogated, after installing for example `socat`. + +:: + + opkg update + opkg install socat + socat - UNIX-CONNECT:/var/run/fastd.mesh_vpn.socket + -- GitLab