docker-wireguard/README.md

44 lines
1.8 KiB
Markdown
Raw Normal View History

2019-02-14 21:00:51 +01:00
# Wireguard
This is a simple docker image to run a wireguard client.
Wireguard is implemented as a kernel module, which is key to its performance and simplicity. However, this means that Wireguard _must_ be installed on the host operating system for this container to work properly. Instructions for installing Wireguard can be found [here](http://wireguard.com/install).
You will need a configuration file for your Wireguard interface. Many VPN providers will create this configuration file for you. For example, [here](http://mullvad.net/en/download/wireguard-config) is the configuration generator for Mullvad.
2019-02-14 21:15:29 +01:00
Now simply mount the configuration file and run! For example, if your configuration file is located at `/path/to/conf/mullvadus2.conf`:
2019-02-14 21:00:51 +01:00
```bash
2019-02-14 21:15:29 +01:00
docker run --name wireguard \
--cap-add=NET_ADMIN \
-v /path/to/conf/mullvadus2.conf:/etc/wireguard/mullvadus2.conf \
2019-02-14 21:00:51 +01:00
jordanpotter/wireguard
```
Afterwards, you can link other containers to this one:
```bash
2019-02-14 21:15:29 +01:00
docker run -it --rm \
--net=container:wireguard \
2019-02-14 21:00:51 +01:00
appropriate/curl http://httpbin.org/ip
```
## Troubleshooting
### Asymmetric Routing
If you see any errors similar to:
```bash
sysctl: setting key "net.ipv4.conf.all.rp_filter": Read-only file system
sysctl: setting key "net.ipv4.conf.default.rp_filter": Read-only file system
```
Then your host is set to discard packets when the route for outbound traffic differs from the route for incoming traffic. To correct this, you'll want to set these values in `/etc/sysctl.conf`:
```bash
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.all.rp_filter = 2
```
Afterwards, reboot.