CmuLab: README

File README, 4.3 kB (added by pgunn@cs.cmu.edu, 1 month ago)

Release notes for MetaVPN

Line 
1 This documentation is of low quality -- I'll replace it with something better when I get time. Sorry -- Pat
2
3 Summary
4 ---------------------
5
6 MetaVPN is a tool that wraps the configuration details of using
7 OpenVPN so people with only a conceptual understanding of VPNs
8 can use it. The details of setting up an OpenVPN instance are
9 wrapped, and people can easily create and manage multiple VPNs at
10 the same time. The details of getting a configuration/SSLkey pairing
11 for the user are also handled.
12
13 State of the code
14 ----------------------
15
16 Beta. Users should be willing to tweak some simple configuration
17 parameters at the head of the relevant scripts as appropriate for
18 their network. This is still easier than learning OpenVPN.
19
20 Prerequisites
21 ----------------------
22 Perl 5.8 or higher
23 Nonstandard perl modules: SDBM_File, MLDBM, File::Copy, File::Path, Archive::Tar, CGI, DBI
24         Some of these modules may not be needed depending on which utilities
25         you intend to use
26 You do not need Emulab to use MetaVPN (using the "loosely managed" key management)
27
28 Files
29 ----------------------
30         docs/   - Development documentation, unlikely to be of interest.
31         ezpurge - Script to completely remove the configuration
32                 database and files for all VPNs
33         metavpn - Primary script, creates, configures, and manages VPNs
34         metv_import_openvpn_keys - For those going with a
35                 tightly-managed VPN, this imports the node keys into
36                 the emulab database
37         metv_direct_keygen - For those going with a loosely-managed VPN,
38                 this generates a configuration tarball for a given client
39         serve_openvpn_keys.cgi - For those going with a tightly-managed
40                 VPN, this serves the node keys to clients using a CGI
41                 interface
42         openvpn-clients.cfg - Template openvpn config for clients, used
43                 by both serve_openvpn_keys and metv_direct_keygen
44
45 Details
46 -----------------------
47 MetaVPN is a wrapper for the OpenVPN software. OpenVPN is a popular
48 VPN server. It is a powerful package with a steep learning curve
49 and a lack of tools to automate common tasks. MetaVPN attempts to
50 lessen the learning curve down to understanding VPN basics, as well
51 as reduce the labour needed to configure each VPN. OpenVPN clients must
52 each have a unique key permitting them access (and identifying them),
53 as well as a configfile with settings that approriately match that on
54 the server.
55
56 MetaVPN can function in two environments, tightly integrated and loosely
57 integrated. In the first, MetaVPN has a single shared instance that
58 manages VPNs from potentially a number of people, typically on ops.
59 OpenVPN client keys are stored inside the database on boss, and clients
60 can use a simple wget-wrapping client to request a configuration tarball
61 needed to
62 allow them to join the VPN. In the second, MetaVPN can be run on an
63 experimental node (or even a non-testbed system outside the Emulab
64 environment). In this instance, the person managing that VPN will use
65 metv_direct_keygen to directly make tarballs for all clients.
66
67 In either environment, the user can use metavpn to see the state of all
68 configured VPNs, bring them up or down, add new client keys, create new
69 VPNs, or archive/delete VPNs.
70
71 Getting Started
72 -----------------------------
73 After unpacking the software, look at the head of each script that
74 you intend to use, changing any paths or other configuration details
75 to your liking. In each script, any configuration you may need to
76 change exists before the call to main(). Look at the "test1" script
77 for simple commands that you might run to setup a VPN. MetaVPN will
78 need to be run as root if it is to actually bring VPNs up or down -
79 otherwise it will only be able to create configurations and manage
80 nodekeys.
81
82 Future Development/Bugs
83 -----------------------------
84 Right now, tap VPNs (Layer 2) are the only kind configurable with this tool.
85 tun VPNs (Layer 3) will be supported in a future version provided a sensible
86 way to manage bridging, avoid IP collisions, etc. can be found. Some
87 configuration variables that are presently hardcoded in the head of
88 several scripts will be used into the databases MetaVPN uses so the
89 scripts themselves will not need to change so much on a per-site basis.
90 Documentation will be improved, and a tutorial covering a simple usage
91 will be written.