From 2b6a0869932990df34c4f74efc335c277a4ab460 Mon Sep 17 00:00:00 2001 From: Dennis Schwerdel Date: Fri, 12 Aug 2016 10:07:02 +0200 Subject: [PATCH] Updated tutorial --- Point-to-Point-Tutorial.md | 60 +++++++++++++++++++++---------- imgs/point_to_point_scenario.dia | Bin 0 -> 2385 bytes imgs/point_to_point_scenario.png | Bin 0 -> 26252 bytes 3 files changed, 42 insertions(+), 18 deletions(-) create mode 100644 imgs/point_to_point_scenario.dia create mode 100644 imgs/point_to_point_scenario.png diff --git a/Point-to-Point-Tutorial.md b/Point-to-Point-Tutorial.md index 1801874..4ca159f 100644 --- a/Point-to-Point-Tutorial.md +++ b/Point-to-Point-Tutorial.md @@ -1,12 +1,11 @@ -## Goals -* Connect several single nodes via a VPN -* Nodes should be able to reach each others even through NATs -* Traffic should be secured with a password -* Nodes should be accessible by IP addresses and names like `NODE.myvpn` +## Scenario +![imgs/point_to_point_scenario.png](Point to point scenario) + +Three single nodes should be connected via a secure VPN. `node1` and `node3` have fixed addresses but `node2` has a dynamic address that changes regularly. -## Preparations -To be able to set up the VPN, at least one node needs to be reachable by an +#### Note +To be able to set up the VPN, at least one node needs to have a be reachable by an unchanging address of hostname. This is normally not the case with common DSL uplinks (they change addresses every day). Please see [[Dynamic DNS]] for a solution. @@ -16,9 +15,9 @@ a solution. The actual VpnCloud setup is pretty simple. A new network config in `/etc/vpncloud` has to be created on each node. -There is an example file to start with in `/etc/vpncloud/example.net`. +There is an example file in `/etc/vpncloud/example.net.disabled` that explains all the parameters. - $> sudo cp /etc/vpncloud/example.net /etc/vpncloud/mynet.net + $> sudo cp /etc/vpncloud/example.net.disabled /etc/vpncloud/mynet.net Now that file has to edited to change a few values: @@ -26,21 +25,38 @@ Now that file has to edited to change a few values: The following values have to be modified: -- **PEERS**: This is a list of all peers that this node should connect to. - Only unchanging addresses can be used here. Several addresses can be appended - and separated by spaces like `"node1.dyndns.org:3210 node2.dyndns.org:3210"`. - All nodes that have an unchanging address should be listed here. +- **peers**: This is a list of all peers that this node should connect to. + Only unchanging addresses can be used here. -- **SHARED_KEY**: This is a shared password for all nodes that secures the +- **shared_key**: This is a shared password for all nodes that secures the communication. It must be the same on all nodes and of course it should be a strong password. -- **IFUP**: `ifconfig $IFNAME 10.0.0.X/24 mtu 1400` where `X` is different for +- **ifup**: `ifconfig $IFNAME 10.0.0.X/24 mtu 1400` where `X` is different for every node. It is good idea to use incrementing numbers here and to track the assigned numbers and nodes in a list. -- **ENABLED**: This needs to be set to `1` when everything is finished so the - network is started automatically. +This leads to the following configuration files: + +#### Node1 + peers: + - node3.example.com + shared_key: "mysupersecretkey" + ifup: "ifconfig $IFNAME 10.0.0.1/24 mtu 1400" + +#### Node2 + peers: + - node1.example.com + - node3.example.com + shared_key: "mysupersecretkey" + ifup: "ifconfig $IFNAME 10.0.0.2/24 mtu 1400" + +#### Node3 + peers: + - node1.example.com + shared_key: "mysupersecretkey" + ifup: "ifconfig $IFNAME 10.0.0.3/24 mtu 1400" + After the config file has been set up correctly, VpnCloud needs to be restarted: @@ -48,8 +64,16 @@ After the config file has been set up correctly, VpnCloud needs to be restarted: If you want to, you can [[associate names with the nodes|Naming Hosts]]. Please note that this procedure has to be done on all nodes. + ## Testing the network When everything has been setup properly, the connection can be checked using the `ping` command: - $> ping NAME.myvpn + $node1> ping 10.0.0.2 + $node2> ping 10.0.0.3 + $node3> ping 10.0.0.1 + + +## Advanced settings +- **crypto**: This setting defines the used encryption method. Options are `chacha20` (the default) and `aes256`. Both are pretty secure but `aes256` is only supported on newer CPUs (check support with `vpncloud -V`). If all nodes support `aes256` the method can be changed and might bring some speed improvements. +- **magic**: This setting can be changed to hide the protocol header and make VpnCloud undetectable. This setting must be the same on all nodes. diff --git a/imgs/point_to_point_scenario.dia b/imgs/point_to_point_scenario.dia new file mode 100644 index 0000000000000000000000000000000000000000..5cfa20fe874d90eb1f44ddd719bcd293dbbd6d85 GIT binary patch literal 2385 zcmV-X39j}ZiwFP!000021MOW~Z{xTXexF}qcwSl{!|;AtZ?eD)&+Qp&})P0tG#pBFAWFI<%0EYqyWf~eSroTh24gQP?)vXwp^C!Yne5wTs}LZ{b$ z8x=*mr~S7$=uQ zNzqyLPu*0%`F0$Gzdqhl8p_%lr-)E$rrGgR#C#QnI^QE^>tz~hx~qy^?i=;Za)%B~ zd23_Bb`Wv!q_e8}udh?}sCvN_x3iGWr&$t8nz^ zG`97;*dpUm6kd&gg6jje*+o;K;liyETc)pKC4jg<#v0mKF(k$6FN;(`phvKMfdjwx- z3jzV(eozanI~~pMie@klPV9-93H837K!70ZqAL!}lFlmImVk9@6~faXZlgFp0Ak(N zJ`N(kOCN4(4Ep_+%F$z$7f-R?1klN9QN5TguB@Fkj~c%?THf5HS@fSYDS~)s=Qhlk zqhSmy7SYTfNWPj{TThQq9;EVSN$>mk{^xHsJdaxQyiqpXKT!Wb{U40_aR<~7 zB_bDy1A@3`_J^{>VV3#@LFfW0z>yTarvCQhH?aS}{sa3D?0+o#leX+nuwgCBUL_rS zWPgWL;!Fqwid*s*020z;^6zB$2J#=se<1&X{AC1N zAw*aaB5NHGu|a7fE)WJ3GU78JVys4KqsGRHq?}HW1cEwal2Ujg6WdX}(Mjk!bW%5K zib}vGb;di9__THznVT&)n^Tv*(77O@4M9X(U9EW-y|Wba)>141@=<@CRU0$7S6d-ND1F!+|fPmL5wq^v2R zAorPuVv#UM&gfuJOpI?Ysc_~gpZY{&5U$uqx6lT@~xDWaq(~y-_vDs&Ja1%*>0B`->Ev=(&eMei!RxzPlfI zBRI&;XDQ-im`SZaOS&eeujymW^r~7jl2tPSgiki2hK-m3;et&t0$4agB7%8cmTlFs zLqhTbAhsr()MH2<15VYOk33PIr)d`I>}>QA8KKW^HX|@w(U%|$rREj%uGZ%*{M;A^lnp6$XNA zf(%y?^MA?uz)?0a%zUANn$AZ}+XCs8n%=JR57g9|SA*IowK5>x{xP5H*#<<2a+?}= zZo#5Vfp?^x4WM6k&xSBFYu6&>n$S}H>TAdzvl&>b+Z6c9h}Vp zOYZ5LWJ>?tYJw5UOy~KKJaD$;fm*>FjFUdPPOY=02?CJ2?ZIBH zlV=n}9Z9(j>%G`=_OGA+HZaur8LCbyhvcSrWvKGn{khibPiueA_4?EANRlM*_k92W D3Ne#q literal 0 HcmV?d00001 diff --git a/imgs/point_to_point_scenario.png b/imgs/point_to_point_scenario.png new file mode 100644 index 0000000000000000000000000000000000000000..1ce506f2f6d8429c0a9dbb01e5b9221ef627ef5d GIT binary patch literal 26252 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