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

126 lines
2.8 KiB
Markdown

# 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
```