# Projektarbeit Modul 306 / 300 Gruppenarbeit à la Hermes ## RaspyDock - [01 Projektinitialisierungsantrag](Hermes/01%20Projektinitialisierungsantrag.md) - [02 Initialisierungs Studie](Hermes/02%20Initialisierungs%20Studie.md) ## 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 ```yaml # 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 ```yaml # 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): ```bash 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](Wireguard/health-check.sh) > Abgespeichert unter `/script/wg-health-check.sh` ```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 ```sh #> 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: ```sh $> sudo sysctl -w net.ipv4.ip_forward=1 ``` Die NAT zwischen dem WireGuard Tunnel un dem Internet müssen Maskiert werden ```sh # ens6 ist das LAN Interface mit der öffentlichen IP auf dem VPS sudo iptables -t nat -A POSTROUTING -o ens6 -j MASQUERADE ``` ##### IPTables Konfigurieren ```sh # 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 ```