diff --git a/wireguard/.env b/wireguard/.env new file mode 100644 index 0000000..f36c4de --- /dev/null +++ b/wireguard/.env @@ -0,0 +1,11 @@ +# These top ones are required to be filled out + +# Mullvad keys work here +WIREGUARD_PRIVATE_KEY= +WIREGUARD_ADDRESSES= + +# Optional vars +# Exposed port (default is 51820) +PORT=1984 +# Number of client.conf files you want automatically generated (into /config/peer*/peer*.conf) +PEERS= diff --git a/wireguard/README.md b/wireguard/README.md new file mode 100644 index 0000000..e1c5881 --- /dev/null +++ b/wireguard/README.md @@ -0,0 +1,4 @@ +Changes to the docker-compose and .env files may not affect the previously made wireguard config files. So it is recommended to: +- Stop/Remove the container +- Delete the previous configuration (default location is ./wireguard) +- Start the container diff --git a/wireguard/docker-compose.yml b/wireguard/docker-compose.yml new file mode 100644 index 0000000..385df69 --- /dev/null +++ b/wireguard/docker-compose.yml @@ -0,0 +1,28 @@ +--- +services: + wireguard: + image: lscr.io/linuxserver/wireguard:latest + container_name: wireguard + cap_add: + - NET_ADMIN + - SYS_MODULE #optional + environment: + - PUID=1000 + - PGID=1000 + - TZ=Etc/UTC + - SERVERURL=wg.happylizard.me #optional + - PEERS=${PEERS:-3} + - SERVERPORT=${PORT:-51820} #optional + - PEERDNS=auto #optional + - INTERNAL_SUBNET=10.20.0.0 #optional + - ALLOWEDIPS=0.0.0.0/0 #optional + - PERSISTENTKEEPALIVE_PEERS= #optional + - LOG_CONFS=true #optional + volumes: + - ./wireguard:/config + - /lib/modules:/lib/modules #optional + ports: + - ${PORT:-51820}:${PORT:-51820}/udp + sysctls: + - net.ipv4.conf.all.src_valid_mark=1 + restart: unless-stopped diff --git a/wireguard/wireguard/.donoteditthisfile b/wireguard/wireguard/.donoteditthisfile new file mode 100644 index 0000000..03ab3f5 --- /dev/null +++ b/wireguard/wireguard/.donoteditthisfile @@ -0,0 +1,7 @@ +ORIG_SERVERURL="wg.happylizard.me" +ORIG_SERVERPORT="1984" +ORIG_PEERDNS="10.20.0.1" +ORIG_PEERS="3" +ORIG_INTERFACE="10.20.0" +ORIG_ALLOWEDIPS="0.0.0.0/0" +ORIG_PERSISTENTKEEPALIVE_PEERS="" diff --git a/wireguard/wireguard/coredns/Corefile b/wireguard/wireguard/coredns/Corefile new file mode 100644 index 0000000..e26fbe6 --- /dev/null +++ b/wireguard/wireguard/coredns/Corefile @@ -0,0 +1,6 @@ +. { + loop + errors + health + forward . /etc/resolv.conf +} diff --git a/wireguard/wireguard/peer1/peer1.conf b/wireguard/wireguard/peer1/peer1.conf new file mode 100644 index 0000000..b93ea11 --- /dev/null +++ b/wireguard/wireguard/peer1/peer1.conf @@ -0,0 +1,11 @@ +[Interface] +Address = 10.20.0.2 +PrivateKey = 2Me6IkZWRid7dL7B0uQqyGAgNzVrNbzfWOd8tN2jYmw= +ListenPort = 51820 +DNS = 10.20.0.1 + +[Peer] +PublicKey = eEYoSfzAsXWz++EV7y8h2DS7RubpyiGJojx6V6HgAiI= +PresharedKey = 5WP5+4ZIy6a8ROn/2ZKaYT0m/23sbOHMFvT/euWH/Cw= +Endpoint = wg.happylizard.me:1984 +AllowedIPs = 0.0.0.0/0 diff --git a/wireguard/wireguard/peer1/peer1.png b/wireguard/wireguard/peer1/peer1.png new file mode 100644 index 0000000..2620f1d Binary files /dev/null and b/wireguard/wireguard/peer1/peer1.png differ diff --git a/wireguard/wireguard/peer1/presharedkey-peer1 b/wireguard/wireguard/peer1/presharedkey-peer1 new file mode 100644 index 0000000..d743015 --- /dev/null +++ b/wireguard/wireguard/peer1/presharedkey-peer1 @@ -0,0 +1 @@ +5WP5+4ZIy6a8ROn/2ZKaYT0m/23sbOHMFvT/euWH/Cw= diff --git a/wireguard/wireguard/peer1/privatekey-peer1 b/wireguard/wireguard/peer1/privatekey-peer1 new file mode 100644 index 0000000..8f2d2f9 --- /dev/null +++ b/wireguard/wireguard/peer1/privatekey-peer1 @@ -0,0 +1 @@ +2Me6IkZWRid7dL7B0uQqyGAgNzVrNbzfWOd8tN2jYmw= diff --git a/wireguard/wireguard/peer1/publickey-peer1 b/wireguard/wireguard/peer1/publickey-peer1 new file mode 100644 index 0000000..e05a086 --- /dev/null +++ b/wireguard/wireguard/peer1/publickey-peer1 @@ -0,0 +1 @@ +c+993PShllBNgnR/phaLym8tTW4QMjbeAmh+67ybxDU= diff --git a/wireguard/wireguard/peer2/peer2.conf b/wireguard/wireguard/peer2/peer2.conf new file mode 100644 index 0000000..810c040 --- /dev/null +++ b/wireguard/wireguard/peer2/peer2.conf @@ -0,0 +1,11 @@ +[Interface] +Address = 10.20.0.3 +PrivateKey = 8FM+qjgHlcmWjVKYaPKH8qM7HtfXbcYf0A8lXGJ160E= +ListenPort = 51820 +DNS = 10.20.0.1 + +[Peer] +PublicKey = eEYoSfzAsXWz++EV7y8h2DS7RubpyiGJojx6V6HgAiI= +PresharedKey = bJnoOmSwf9tbLt59nMNRdL98CtC+gMLczbqz/6hBJzo= +Endpoint = wg.happylizard.me:1984 +AllowedIPs = 0.0.0.0/0 diff --git a/wireguard/wireguard/peer2/peer2.png b/wireguard/wireguard/peer2/peer2.png new file mode 100644 index 0000000..9b88ed2 Binary files /dev/null and b/wireguard/wireguard/peer2/peer2.png differ diff --git a/wireguard/wireguard/peer2/presharedkey-peer2 b/wireguard/wireguard/peer2/presharedkey-peer2 new file mode 100644 index 0000000..4a9afb7 --- /dev/null +++ b/wireguard/wireguard/peer2/presharedkey-peer2 @@ -0,0 +1 @@ +bJnoOmSwf9tbLt59nMNRdL98CtC+gMLczbqz/6hBJzo= diff --git a/wireguard/wireguard/peer2/privatekey-peer2 b/wireguard/wireguard/peer2/privatekey-peer2 new file mode 100644 index 0000000..860bf9c --- /dev/null +++ b/wireguard/wireguard/peer2/privatekey-peer2 @@ -0,0 +1 @@ +8FM+qjgHlcmWjVKYaPKH8qM7HtfXbcYf0A8lXGJ160E= diff --git a/wireguard/wireguard/peer2/publickey-peer2 b/wireguard/wireguard/peer2/publickey-peer2 new file mode 100644 index 0000000..afc1f77 --- /dev/null +++ b/wireguard/wireguard/peer2/publickey-peer2 @@ -0,0 +1 @@ +mNTq/XTXXZFtyXc7t1uQ9vdcwneU2XkWrWzjPgRe/1E= diff --git a/wireguard/wireguard/peer3/peer3.conf b/wireguard/wireguard/peer3/peer3.conf new file mode 100644 index 0000000..06b1d0b --- /dev/null +++ b/wireguard/wireguard/peer3/peer3.conf @@ -0,0 +1,11 @@ +[Interface] +Address = 10.20.0.4 +PrivateKey = SNzbsWlC/6+TI74yStzmuzKog6fAPBStdlfffp/nk3c= +ListenPort = 51820 +DNS = 10.20.0.1 + +[Peer] +PublicKey = eEYoSfzAsXWz++EV7y8h2DS7RubpyiGJojx6V6HgAiI= +PresharedKey = YLYvms8UHwE2IkF7WgIrDNDisUK4JveacI5EQpAHHUw= +Endpoint = wg.happylizard.me:1984 +AllowedIPs = 0.0.0.0/0 diff --git a/wireguard/wireguard/peer3/peer3.png b/wireguard/wireguard/peer3/peer3.png new file mode 100644 index 0000000..3700ad2 Binary files /dev/null and b/wireguard/wireguard/peer3/peer3.png differ diff --git a/wireguard/wireguard/peer3/presharedkey-peer3 b/wireguard/wireguard/peer3/presharedkey-peer3 new file mode 100644 index 0000000..3122431 --- /dev/null +++ b/wireguard/wireguard/peer3/presharedkey-peer3 @@ -0,0 +1 @@ +YLYvms8UHwE2IkF7WgIrDNDisUK4JveacI5EQpAHHUw= diff --git a/wireguard/wireguard/peer3/privatekey-peer3 b/wireguard/wireguard/peer3/privatekey-peer3 new file mode 100644 index 0000000..d22b51b --- /dev/null +++ b/wireguard/wireguard/peer3/privatekey-peer3 @@ -0,0 +1 @@ +SNzbsWlC/6+TI74yStzmuzKog6fAPBStdlfffp/nk3c= diff --git a/wireguard/wireguard/peer3/publickey-peer3 b/wireguard/wireguard/peer3/publickey-peer3 new file mode 100644 index 0000000..0fdb525 --- /dev/null +++ b/wireguard/wireguard/peer3/publickey-peer3 @@ -0,0 +1 @@ +w34g7tWb9txMZmluL1VdRH4o0UTJWfOjFrZDKOkdFHQ= diff --git a/wireguard/wireguard/server/privatekey-server b/wireguard/wireguard/server/privatekey-server new file mode 100644 index 0000000..0e583c5 --- /dev/null +++ b/wireguard/wireguard/server/privatekey-server @@ -0,0 +1 @@ ++FCo3yAN1vvpckw4ndWEgA3WtdG7SjaiiJqCResRVlU= diff --git a/wireguard/wireguard/server/publickey-server b/wireguard/wireguard/server/publickey-server new file mode 100644 index 0000000..6c3891f --- /dev/null +++ b/wireguard/wireguard/server/publickey-server @@ -0,0 +1 @@ +eEYoSfzAsXWz++EV7y8h2DS7RubpyiGJojx6V6HgAiI= diff --git a/wireguard/wireguard/templates/peer.conf b/wireguard/wireguard/templates/peer.conf new file mode 100644 index 0000000..d987dba --- /dev/null +++ b/wireguard/wireguard/templates/peer.conf @@ -0,0 +1,11 @@ +[Interface] +Address = ${CLIENT_IP} +PrivateKey = $(cat /config/${PEER_ID}/privatekey-${PEER_ID}) +ListenPort = 51820 +DNS = ${PEERDNS} + +[Peer] +PublicKey = $(cat /config/server/publickey-server) +PresharedKey = $(cat /config/${PEER_ID}/presharedkey-${PEER_ID}) +Endpoint = ${SERVERURL}:${SERVERPORT} +AllowedIPs = ${ALLOWEDIPS} diff --git a/wireguard/wireguard/templates/server.conf b/wireguard/wireguard/templates/server.conf new file mode 100644 index 0000000..757682d --- /dev/null +++ b/wireguard/wireguard/templates/server.conf @@ -0,0 +1,6 @@ +[Interface] +Address = ${INTERFACE}.1 +ListenPort = 51820 +PrivateKey = $(cat /config/server/privatekey-server) +PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth+ -j MASQUERADE +PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth+ -j MASQUERADE diff --git a/wireguard/wireguard/wg_confs/wg0.conf b/wireguard/wireguard/wg_confs/wg0.conf new file mode 100644 index 0000000..9c1f068 --- /dev/null +++ b/wireguard/wireguard/wg_confs/wg0.conf @@ -0,0 +1,25 @@ +[Interface] +Address = 10.20.0.1 +ListenPort = 51820 +PrivateKey = +FCo3yAN1vvpckw4ndWEgA3WtdG7SjaiiJqCResRVlU= +PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth+ -j MASQUERADE +PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth+ -j MASQUERADE + +[Peer] +# peer1 +PublicKey = c+993PShllBNgnR/phaLym8tTW4QMjbeAmh+67ybxDU= +PresharedKey = 5WP5+4ZIy6a8ROn/2ZKaYT0m/23sbOHMFvT/euWH/Cw= +AllowedIPs = 10.20.0.2/32 + +[Peer] +# peer2 +PublicKey = mNTq/XTXXZFtyXc7t1uQ9vdcwneU2XkWrWzjPgRe/1E= +PresharedKey = bJnoOmSwf9tbLt59nMNRdL98CtC+gMLczbqz/6hBJzo= +AllowedIPs = 10.20.0.3/32 + +[Peer] +# peer3 +PublicKey = w34g7tWb9txMZmluL1VdRH4o0UTJWfOjFrZDKOkdFHQ= +PresharedKey = YLYvms8UHwE2IkF7WgIrDNDisUK4JveacI5EQpAHHUw= +AllowedIPs = 10.20.0.4/32 +