Raspydock/README.md
2024-06-24 20:48:13 +02:00

2.8 KiB

Projektarbeit Modul 306 / 300

Gruppenarbeit à la Hermes

RaspyDock

Setup

Wireguard

Wireguard ist eine VPN Lösung und wird in diesem Projekt verwendet, um den Raspberry Pi mit dem VPS zu verbinden. Auf dem VPS und dem Server kann Wireguard mit apt install wireguard installiert werden.

Erstellung Keys

wg genkey | tee privatekey | wg pubkey > publickey

Config VPS

# file: /etc/wireguard/wg0.conf
[Interface]
Address = 10.10.10.1/24
ListenPort = 51820
PrivateKey = PRIVATE_VPS_KEY

[Peer]
PublicKey = PUBLIC_SERVER_KEY
AllowedIPs = 10.10.10.10/32

Config Raspberry Pi

# file: /etc/wireguard/wg0.conf
[Interface]
Address = 10.10.10.10/32
PrivateKey = PRIVATE_DMZ_KEY
DNS = 9.9.9.9, 149.112.112.112

[Peer]
PublicKey = PUBLIC_VPS_KEY
Endpoint = VPS_IP_ADDRESS:51820
AllowedIPs = 10.10.10.1/32
PersistentKeepalive = 25

Inbetriebnahme

Nach erstellen der Config Files müssen diese Befehle eingegeben werden (Auf dem VPS und dem Raspberry Pi):

sudo systemctl enable wg-quick@wg0.service
sudo systemctl start wg-quick@wg0.service

Der Status kann mit dem Befehl sudo systemctl status wg-quick@wg0.service geprüft werden.

VPN Heatlh Check

Health-Check.sh Abgespeichert unter /script/wg-health-check.sh

$> chmod +x /script/wg-health-check.sh
$> crontab -e

-> # m  h    dom  mon  dow  command
-> 5    *    *    *    *    /script/wg-health-check.sh

Dieses Shell Script pingt den Wireguard Gateway 3 Mal hintereinander. Sollte der Ping fehlschlagen, wird der Service neu gestartet

Hostname Ändern

hostnamectl hostname raspydock

DNS Einträge

2 A-Records:

Domain IP
raspydock.ch 85.215.132.141
*.raspydock.ch 85.215.132.141

User vmadmin erstellen

#> useradd vmadmin
#> passwd vmadmin
New password: sml12345
Retype new password: sml12345
passwd: password updated successfully
#> usermod -aG sudo vmadmin

Routing der Requests

VPS

Routing Konfigurieren

IP Forwarding Aktivieren:

$> sudo sysctl -w net.ipv4.ip_forward=1

Die NAT zwischen dem WireGuard Tunnel un dem Internet müssen Maskiert werden

# ens6 ist das LAN Interface mit der öffentlichen IP auf dem VPS
sudo iptables -t nat -A POSTROUTING -o ens6 -j MASQUERADE
IPTables Konfigurieren
# Traffic aus dem Wireguard Tunnel Zulassen
sudo iptables -A INPUT -i wg0 -j ACCEPT

# Verwandte oder bereits bestehende Verbindungen Zulassen
sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

# Traffic von Wireguard zum Server Zulassen
sudo iptables -A FORWARD -i wg0 -o ens6 -d 10.10.10.10 -j ACCEPT