Dezentrales/P2P virtuelles privates Netzwerk (VPN)

Ich habe OpenVPN verwendet, um ein Netzwerk zwischen ein paar Computern zu verwalten, aber es braucht einen zentralen Server und alle Daten müssen darüber laufen. Darüber hinaus bedeutet das Ändern des zentralen Servers möglicherweise, dass das gesamte Netzwerk aktualisiert wird.

Ich suche nach einem dezentralen (P2P) Open-Source-VPN-Netzwerk, das keinen zentralen Server benötigt. Anforderungen:

  • Kein zentraler Server (alle Peers sind gleichberechtigt).
  • Sicher - alle Daten müssen verschlüsselt werden. Peers, die eine Verbindung herstellen dürfen, sollten verwaltet werden, indem ihnen ein signiertes Zertifikat gegeben wird, das andere überprüfen können.
  • Einige Peers haben keine öffentliche IP-Adresse (und diese kann sich dynamisch ändern, da einige von ihnen mobil sein könnten); die Software sollte in der Lage sein, dies festzustellen und Peers den Datenverkehr nach Bedarf weiterleiten zu lassen.
  • Es soll möglich sein, Gegenstellen im internen Netz feste IP-Adressen zu geben.
  • Die Software muss aktiv gewartet werden (um Sicherheitsprobleme zu beheben).
  • Wenn möglich, geringe Auswirkungen auf Speicher und CPU.
  • Ich suche kein Social VPN , insbesondere möchte ich nicht, dass sich das System auf ein soziales Netzwerk stützt.
  • Linux- und Windows-Unterstützung.
  • Das System soll als Systemdienst laufen, ohne eine GUI zur Verwaltung zu benötigen.
  • Optionale IPv6-Unterstützung wäre von Vorteil (einige Peers können eine öffentliche IPv6-Adresse haben, aber keine IPv4-Adresse).
  • Optional auch internes DNS, damit alle Rechner mit lokalen Namen angesprochen werden können.

Antworten (1)

Tor

Zuerst dachte ich, Tor wäre die Lösung für Sie, aber es ist ein offenes Netzwerk: Jeder kann beitreten, also funktioniert Ihre "sichere" Anforderung nicht.

Zinn

Also würde ich vorschlagen, einen Blick auf Tinc zu werfen . Es handelt sich um ein P2P-VPN, bei dem Peers über öffentliche Schlüssel authentifiziert werden und einige NAT-Transversal unterstützen , obwohl es möglicherweise nicht so gut mit Hosts umgeht, die Adressen ändern, da diese in der Konfiguration fest codiert sind. Es hat auch volle IPv6-Unterstützung. Kurze Grundierung:

apt-get install tinc
mkdir -p /etc/tinc/net0/hosts
cat >> /etc/tinc/net0/tinc.conf <<EOF
Name = host
Mode = switch
Address = host.example.com
EOF
tinc -n net0 generate-keys
cat >> /etc/tinc/net0/tinc-up <<EOF
ifconfig $INTERFACE 172.16.242.43 netmask 255.255.255.255 up
EOF
chmod +x /etc/tinc/net0/tinc-up
tincd -d4 -D -n net0

Führen Sie dies auf jedem Host durch, ändern Sie tinc.confund tinc-upnach Bedarf. Das hostsVerzeichnis enthält Kopien von jedem Host tinc.confund die gemeinsame Nutzung dieser Konfiguration erfolgt außerhalb des Bandes (z. B. habe ich Git verwendet).

Beachten Sie auch, dass es einige ernsthafte Sicherheitsprobleme mit Tinc gab und mir nicht klar ist, ob das Sicherheitsdesign solide ist.

Drahtschutz

Wenn ich jetzt bei Null anfangen würde, würde ich mir Wireguard ansehen, das eine bessere Roaming-Unterstützung und eine solide Kryptographie bietet. Ihr Schnellstart ist ausgezeichnet und beläuft sich im Wesentlichen auf:

apt install wireguard-dkms wireguard-tools
ip link add dev wg0 type wireguard
ip address add dev wg0 10.0.0.1/8
umask 077
wg genkey | tee /etc/wireguard/private.key | wg pubkey > /etc/wireguard/public.key
wg set wg0 listen-port 51820 private-key /etc/wireguard/private.key peer $(cat /etc/wireguard/peers/peer0.pub) allowed-ips 10.0.0.2/32 endpoint 192.0.2.1:51820
ip link set up dev wg0

Dies setzt voraus, dass der öffentliche Schlüssel des anderen bereits generiert und in gespeichert wurde /etc/wireguard/peers/peer0.pub. Dieser Peer sollte unter erreichbar sein 192.0.2.1und eine ähnliche Konfiguration mit 10.0.0.2zugewiesen auf der wg0Schnittstelle haben.

Habe Spaß!