Hermes | ||
Server | ||
VPS | ||
Wireguard | ||
.gitignore | ||
ChatGPT-WireGuard.md | ||
README.md | ||
users.md |
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