From 011bf3b9f4ef9470ae97fd2b93857a2bdd4f94cb Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Thu, 26 Dec 2019 12:19:23 +0100 Subject: README: consolidate with INSTALL and rewrite Signed-off-by: Jason A. Donenfeld --- README.md | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 70 insertions(+), 3 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index b8301e2..db5a4d5 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,77 @@ -# WireGuard — fast, modern, secure kernel VPN tunnel -#### by [Jason A. Donenfeld](mailto:Jason@zx2c4.com) of [Edge Security](https://www.edgesecurity.com/) +# [wireguard-tools](https://git.zx2c4.com/wireguard-tools/about/) — tools for configuring [WireGuard](https://www.wireguard.com/) -WireGuard is a novel VPN that runs inside the Linux Kernel and utilizes **state-of-the-art cryptography**. It aims to be faster, simpler, leaner, and more useful than IPsec, while avoiding the massive headache. It intends to be considerably more performant than OpenVPN. WireGuard is designed as a general purpose VPN for running on embedded interfaces and super computers alike, fit for many different circumstances. It runs over UDP. +This supplies the main userspace tooling for using and configuring WireGuard +tunnels, including the +[`wg(8)`](https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8) and +[`wg-quick(8)`](https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8) +utilities. This project supports Linux, OpenBSD, FreeBSD, macOS, Windows, and +Android. **More information may be found at [WireGuard.com](https://www.wireguard.com/).** +## Building + + $ cd src + $ make + +On Linux, [`libmnl`](https://netfilter.org/projects/libmnl/index.html) is +required. On Windows, the [MinGW](http://www.mingw.org/) compiler is required. +On other platforms, only a sane libc is required. + +## Installing + + # make install + +This command takes into account several environment variables: + + * `PREFIX` default: `/usr` + * `DESTDIR` default: + * `BINDIR` default: `$(PREFIX)/bin` + * `LIBDIR` default: `$(PREFIX)/lib` + * `MANDIR` default: `$(PREFIX)/share/man` + * `BASHCOMPDIR` default: `$(PREFIX)/share/bash-completion/completions` + * `RUNSTATEDIR` default: `/var/run` + * `PKG_CONFIG` default: `pkg-config` + + * `WITH_BASHCOMPLETION` default: [auto-detect] + * `WITH_WGQUICK` default: [auto-detect] + * `WITH_SYSTEMDUNITS` default: [auto-detect] + +The first section is rather standard. The second section is not: + + * `WITH_BASHCOMPLETION` decides whether or not bash completion files for the + tools are installed. This is just a nice thing for people who have bash. + If you don't have bash, or don't want this, set the environment variable + to `no`. If you'd like to force its use, even if bash-completion isn't + detected in `DESTDIR`, then set it to `yes`. + + * `WITH_WGQUICK` decides whether or not the wg-quick(8) script is installed. + This is a very quick and dirty bash script for reading a few extra + variables from wg(8)-style configuration files, and automatically + configures the interface. If you don't have bash, you probably don't want + this at all. Likewise, if you already have a working network management + tool or configuration, you probably want to integrate wg(8) or the direct + WireGuard API into your network manager, rather than using wg-quick(8). + But for folks who like simple quick and dirty scripts, this is nice. If you'd + like to force its use, even if bash isn't detected in DESTDIR, then set it + to `yes`. + + * `WITH_SYSTEMDUNITS` decides whether or not systemd units are installed for + wg-quick(8). If you don't use systemd, you certainly don't want this, and + should set it to `no`. If systemd isn't auto-detected, but you still would + like to install it, set this to `yes`. + +If you're a simple `make && make install` kind of user, you can get away with +not setting these variables and relying on the auto-detection. However, if +you're writing a package for a distro, you'll want to explicitly set these, +depending on what you want. + +## `contrib/` + +The `contrib/` subdirectory contains various scripts and examples. Most of these +are not immediately useful for production use, but should provide inspiration for +creating fully-featured tools. See the `README` in each directory. + ## License This project is released under the [GPLv2](COPYING). -- cgit v1.2.3-59-g8ed1b