diff --git a/README.md b/README.md index fe1ee0be..dabb72eb 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,8 @@ You're encouraged to play with it, but I strongly advise against using it for an 2. Clone this repository. 2. `./build` -Note that you can cross compile by specifying the `$GOOS` and `$GOARCH` environment variables. +Note that you can cross-compile for other platforms and architectures by specifying the `$GOOS` and `$GOARCH` environment variables, for example, `GOOS=windows ./build` or `GOOS=linux GOARCH=mipsle ./build`. + The build script sets its own `$GOPATH`, so the build environment is self-contained. ## Running @@ -41,14 +42,26 @@ In practice, you probably want to run this instead: This keeps a persistent set of keys (and by extension, IP address) and gives you the option of editing the configuration file. If you want to use it as an overlay network on top of e.g. the internet, then you can do so by adding the remote devices domain/address and port (as a string, e.g. `"1.2.3.4:5678"`) to the list of `Peers` in the configuration file. -A [Vyatta-based](https://github.com/neilalexander/vyatta-yggdrasil) router configuration is also available. +### Platforms -The code should work out-of-the-box on most Linux distributions (with `iproute2` installed) and macOS. -It should also work on recent versions of Windows, but it depends on the OpenVPN NDIS 5 TAP driver (tested with `tap-windows-9.9.2_3`, not that there issues when using NDIS 6 driver as of `tap-windows-9.21.2`). -Be aware that connectivity issues can occur on Windows if multiple IPv6 addresses from the `fd00::/8` prefix are assigned to the TAP interface. -If this happens, then you may need to manually remove the old/unused addresses from the interface (though the code has a workaround in place to do this automatically in some cases). +#### Linux -You can also advertise a route on your LAN, enabling other devices to access the `fd00::/8` network, as shown in the optional example below. +- Should work out of the box on most Linux distributions with `iproute2` installed. + +#### macOS + +- Tested and working out of the box on macOS 10.13 High Sierra. +- May work in theory on any macOS version with `utun` support (which was added in macOS 10.7 Lion), although this is untested at present. + +#### Windows + +- Tested and working on Windows 7 and Windows 10, and should work on any recent versions of Windows, but it depends on the [OpenVPN TAP driver](https://openvpn.net/index.php/open-source/downloads.html) being installed first. +- Has been proven to work with both the [NDIS 5](https://swupdate.openvpn.org/community/releases/tap-windows-9.9.2_3.exe) (`tap-windows-9.9.2_3`) driver and the [NDIS 6](https://swupdate.openvpn.org/community/releases/tap-windows-9.21.2.exe) (`tap-windows-9.21.2`) driver, however there are substantial performance issues with the NDIS 6 driver therefore it is recommended to use the NDIS 5 driver instead. +- Be aware that connectivity issues can occur on Windows if multiple IPv6 addresses from the `fd00::/8` prefix are assigned to the TAP interface. If this happens, then you may need to manually remove the old/unused addresses from the interface (though the code has a workaround in place to do this automatically in some cases). + +#### EdgeRouter + +- Tested and working on the EdgeRouter X, using the [vyatta-yggdrasil](https://github.com/neilalexander/vyatta-yggdrasil) wrapper package. ## Optional: advertise a prefix locally