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