Projekt:VPN
Projekt:VPN | |
Betreuer*In | noqqe |
Jahr | 2019 |
Läuft auf | rumpl.k4cg.org |
Status | realisiert |
Generelles
Wir haben ein VPN von einzelnen Maschinen zu unserem Server im Internet aufgebaut.
Dafür haben wir Wireguard benutzt und konfiguriert.
Das nutzen wir beispielsweise um Traffic von der CG auf unseren Server rumpl zu schicken mit Verschlüsselung und auch in die andere Richtung.
Topologie
+--------------------------------------------+ | | | k4cg | | | | +-------+.2 | | | mqtt | | .1 | | ++ +---------+ | +---------------+ | +--------+ |fritzbox|| | internet | | | +------------------>+ |-------------->+ rumpl | | +--------+ +---------+ | | | | |beehive++ | | wireguard | | | | | +---------------+ | +-------+ .3 | | | | | +--------------------------------------------+
Networking
Wichtig!
Wir benutzen innerhalb des VPN Netzwerks 192.168.42.0/24
Bevor eine neue IP Addresse vergeben wird, bitte in Hosts nachsehen ob diese noch frei ist und wenn ja, eure neue IP auch gleich dort in der Tabelle hinterlegen!
Die Verbindungen anzeigen
Ich will hier jetzt keine Doku von Wireguard neu schreiben, aber im Grunde funktioniert das Setup so.
Alle funktionierenden Knoten sollten in dieser Ausgabe auf rumpl auftauchen:
14:48 root@rumpl:~ # wg interface: wg0 public key: fY0GiZHUVGSyuteTwrWTnBpURiGOwtJtP0p4gxBj8UY= private key: (hidden) listening port: 51666 peer: ClL2RRXutD3bYOjmpOvYjc2xCczG5gFM4lcD/s6/iFk= endpoint: 188.174.155.42:64210 allowed ips: 192.168.42.3/32 latest handshake: 42 seconds ago transfer: 695.90 MiB received, 72.74 MiB sent peer: CiEyx82EHuibAc4AvB+BRbTVh9p1mDNIhBQ64mWUMA8= endpoint: 188.174.155.42:57130 allowed ips: 192.168.42.2/32 latest handshake: 47 seconds ago transfer: 20.53 MiB received, 10.10 MiB sent
Ist das nicht der Fall oder ohne Traffic, habt ihr was falsch gemacht.
Wie kann auch meine Gerät in das VPN?
1. Du brauchst auf dem Gerät/VM/IoT Device ein Wireguard
2. Eine Typische Client config eintippen. Der Peer eintrag kann kopiert werden. Ist die Rumpl.
[Interface] ListenPort = 51666 PrivateKey = xxx [Peer] PublicKey = fY0GiZHUVGSyuteTwrWTnBpURiGOwtJtP0p4gxBj8UY= AllowedIPs = 192.168.42.0/24 Endpoint = 213.95.154.150:51666
und in eure wg0.conf
eingfügen, vorher wahrscheinlich noch ein wg genkey
damit ihr ein Private/Public Keypair generiert.
3. Ihr braucht jemand der sich auf der rumpl einloggen kann und die nixos configuration.nix editieren darf. Schlüsselinhaber haben diesen Zugang meist.
networking.wireguard.interfaces.wg0 = { ips = [ "192.168.42.1/24" ]; privateKey = "xxx"; listenPort = 51666; peers = [ { allowedIPs = [ "192.168.42.2/32" ]; # mqtt.fritz.box publicKey = "CiEyx82EHuibAc4AvB+BRbTVh9p1mDNIhBQ64mWUMA8="; } { allowedIPs = [ "192.168.42.3/32" ]; # beehive.fritz.box publicKey = "ClL2RRXutD3bYOjmpOvYjc2xCczG5gFM4lcD/s6/iFk="; } ]; };
Danach folgt noch ein
nixos-rebuild switch
4. VPN sollte funktionieren
Mittels
ssh rumpl ping 192.168.42.X
kann das verifiziert werden.
Hilfe, mein Port kommt nicht durch
Das liegt daran, dass wir dedizierte Firewallregeln haben.
Im Moment darf man sich nur auf folgende Ports verbinden:
networking.firewall.interfaces.wg0 = { allowedTCPPorts = [ 8086 ]; # InfluxDB };
Wenn weitere Dienste Ports brauchen ist dieses Array zu erweitern.