parent
154c7208c3
commit
fcd2565b47
@ -0,0 +1,29 @@
|
||||
# Wireguard proxy setup
|
||||
|
||||
This is for a server that is inside of a firewall or behind a NAT gateway
|
||||
that doesn't have a static IP address. A cheap $6/month DigitalOcean droplet
|
||||
can be created that will route *all* internet traffic to the server, allowing
|
||||
it to change IP.
|
||||
|
||||
* On both proxy and the server:
|
||||
|
||||
```
|
||||
sudo apt install wireguard-tools net-tools
|
||||
wg genkey \
|
||||
| sudo tee /etc/wireguard/wg0.key \
|
||||
| wg pubkey \
|
||||
| sudo tee /etc/wireguard/wg0.pub
|
||||
sudo chmod -R go-rwx /etc/wireguard
|
||||
```
|
||||
|
||||
* Copy `wireguard/wg0-proxy.conf` to `/etc/wireguard/wg0.conf` on the proxy
|
||||
* On the **proxy** edit `/etc/wireguard/wg0.conf`:
|
||||
* Change `${SERVER_PUBKEY}` to the public key that was output on the server
|
||||
|
||||
* Copy `wireguard/wg0-server.conf` to `/etc/wireguard/wg0.conf` on the server.
|
||||
* On the **server** edit `/etc/wireguard/wg0.conf`:
|
||||
* Change `${PROXY_IP}` to the public IP address of the proxy (two places)
|
||||
* Change `${PROXY_PUBKEY}` to the public key output on the proxy (two places)
|
||||
* Change `${SERVER_GW}` to the gateway address used to reach the internet from the server
|
||||
|
||||
* On both machines run `sudo wg-quick up /etc/wireguard/wg0.conf`
|
@ -0,0 +1,33 @@
|
||||
[Interface]
|
||||
Address = 192.168.4.1/24
|
||||
ListenPort = 51820
|
||||
|
||||
PostUp = wg set %i private-key /etc/wireguard/%i.key
|
||||
|
||||
# Enable IP masquerading for the remote host
|
||||
PostUp = echo 1 > /proc/sys/net/ipv4/ip_forward
|
||||
PostUp = iptables -A FORWARD -i %i -j ACCEPT
|
||||
PostUp = iptables -A FORWARD -o %i -j ACCEPT
|
||||
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
||||
|
||||
# accept the wireguard connection
|
||||
PostUp = iptables -t nat -A PREROUTING -i eth0 -p udp --dport 51820 -j ACCEPT
|
||||
|
||||
# redirect ssh to port 23
|
||||
PostUp = iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 23 -j REDIRECT --to-port 22
|
||||
|
||||
# redirect *all* traffic to the wg tunnel
|
||||
PostUp = iptables -t nat -A PREROUTING -i eth0 -p all -j DNAT --to-destination 192.168.4.2
|
||||
|
||||
# Tear down the proxy
|
||||
PostDown = iptables -D FORWARD -i %i -j ACCEPT
|
||||
PostDown = iptables -D FORWARD -o %i -j ACCEPT
|
||||
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
|
||||
|
||||
PostDown = iptables -t nat -D PREROUTING -i eth0 -p udp --dport 51820 -j ACCEPT
|
||||
PostDown = iptables -t nat -D PREROUTING -i eth0 -p tcp --dport 23 -j REDIRECT -to-port 22
|
||||
PostDown = iptables -t nat -D PREROUTING -i eth0 -p all -j DNAT --to-destination 192.168.4.2
|
||||
|
||||
[Peer]
|
||||
PublicKey = ${SERVER_PUBKEY}
|
||||
AllowedIPs = 192.168.4.2/32
|
@ -0,0 +1,28 @@
|
||||
# wg0-server.conf
|
||||
#
|
||||
# This is the configuration for the server hidden behind the wireguard proxy.
|
||||
# It routes all internet traffic via the proxy, with the exception of traffic
|
||||
# to the proxy itself. It is still accessible on the local network.
|
||||
#
|
||||
# When moving this to a new machine:
|
||||
# * Update the PostUp route so that the proxy address has an explicit route via the local gateway
|
||||
# * Update the PownDown to delete the explicit route and restore the default gw
|
||||
# * Update the Peer PublicKey and Endpoint with the proxy key and address
|
||||
#
|
||||
[Interface]
|
||||
PostUp = wg set %i private-key /etc/wireguard/%i.key
|
||||
Address = 192.168.4.2/24
|
||||
|
||||
# Delete the default gateway and add an explicit route for the wireguard tunnel
|
||||
PostUp = route add ${PROXY_IP} gw ${SERVER_GW} || echo "wrong route"
|
||||
PostUp = route del default || echo "no default"
|
||||
PostUp = route add default gw 192.168.4.1
|
||||
|
||||
PostDown = route del ${PROXY_IP}
|
||||
PostDown = route add default gw ${SERVER_GW}
|
||||
|
||||
[Peer]
|
||||
PublicKey = ${PROXY_PUBKEY}
|
||||
Endpoint = ${PROXY_IP}:51820
|
||||
AllowedIPs = 0.0.0.0/0
|
||||
PersistentKeepalive = 25
|
Loading…
Reference in new issue