- Registriert
- 11. Juni 2010
- Beiträge
- 4.080
- Reaktionspunkte
- 2.847
- Punkte
- 373
Hallo Zusammen,
wie bereits angekündigt, möchte ich euch hier einmal PeerVPN vorstellen.
Im Gegensatz zu OpenVPN ist PeerVPN nicht nach dem Client - Server Prinzip mit Stern Aufbau aufgebaut, sondern man schaft sich eine Full Mesh Topologie.
Für PeerVPN benötigt man keinen zentralen VPN Server was natürlich eine ensprechende Ausfallsicherheit schaft, da jeder Node sowohl Client als auch Server ist. Im Endeffekt bedeutet dies, das dass Peer Netzwerk auch bei einem Ausfall von beispielsweise 3 von 4 Servern erreichbar ist.
Hinzu kommen diverse Vorteile bei der Kommunikation der Nodes untereinander. Auch das hinzufügen weiterer Nodes ist ohne großartige Änderungen ohne weiteres möglich.
Basis für dieses HowTo:
Raspberry Pi mit Raspian lokal mit OScam vorhanden
Ubuntu Server 16.04.x VPS als Cache Instanz vorbereitet
Vorbereitung:
Als erstes stellen wir sicher, dass unsere Systeme aktuell sind und installieren unsere Tools.
Die Installation von PeerVPN:
Zunächst downloaden wir uns den PeerVPN, entpacken diesen und kopieren die Binary:
Im nächsten Schritt müssen wir uns unser Private Shared Key (PSK) erstellen.
PeerVPN erlaubt bist zu 512 Charakter. Den PSK erstellen wir mit dem OpenSSL Nummerngenerator
Nun solltet Ihr eine Reihe zufälliger Zahlen und Zeichen erhalten haben.
Beispiel:
Diesen kopiert Ihr euch nun erst einmal in eine Textdatei, wir brauchen diesen im nächsten Schritt.
Die peervpn.conf füllt Ihr nun mit dem Inhalt:
Nun müsst Ihr noch den Service erstellen:
Inhalt:
Nun noch den Service aktivieren:
Nun müsst Ihr noch das Tap Device erstellen:
Mit ifconfig könnt Ihr eure Ausgabe nun prüfen.
Nun startet den peervpn Dienst
Natürlich müsst Ihr jetzt noch eine entsprechende Portfreigabe in eurem Router für den Port 51223 mit UDP Protokoll eintragen.
Den gleichen Installations- und Einrichtungsprozess nehmt Ihr nun an eurem VPS vor.
Nach dem Start von PeerVPN auf eurem VPS könnt Ihr die Konnektivität ganz einfach prüfen in dem Ihr einfach die VPN IP-Adresse eures Homeservers anpingt:
Wenn dieser Problemlos durchläuft, habt Ihr eine stabile Verbindung.
Nun könnt Ihr auf eurem Homeserver den Cache Reader entsprechend anpassen.
Ihr müsst einzig die Adresse ändern, beschrieben in diesem Beispiel:
Nun erhaltet Ihr euren Cache insgesamt über den PeerVPN stark verschlüsselt ohne große Performance Verluste. Ich habe selbst sogar Performance Gewinn festgestellt, da die Antwortzeiten deutlich schneller sind.
Im großen und ganzen könnt Ihr auch mit euren Tauschpartnern PeerVPN ohne weiteres nutzen und euch zusätzlich absichern.
Wenn Ihr IPTables nutzt, müsst ihr noch eure Regeln erweitern:
wie bereits angekündigt, möchte ich euch hier einmal PeerVPN vorstellen.
Im Gegensatz zu OpenVPN ist PeerVPN nicht nach dem Client - Server Prinzip mit Stern Aufbau aufgebaut, sondern man schaft sich eine Full Mesh Topologie.
Für PeerVPN benötigt man keinen zentralen VPN Server was natürlich eine ensprechende Ausfallsicherheit schaft, da jeder Node sowohl Client als auch Server ist. Im Endeffekt bedeutet dies, das dass Peer Netzwerk auch bei einem Ausfall von beispielsweise 3 von 4 Servern erreichbar ist.
Hinzu kommen diverse Vorteile bei der Kommunikation der Nodes untereinander. Auch das hinzufügen weiterer Nodes ist ohne großartige Änderungen ohne weiteres möglich.
Basis für dieses HowTo:
Raspberry Pi mit Raspian lokal mit OScam vorhanden
Ubuntu Server 16.04.x VPS als Cache Instanz vorbereitet
Vorbereitung:
Als erstes stellen wir sicher, dass unsere Systeme aktuell sind und installieren unsere Tools.
Code:
apt update
apt upgrade -y
apt dist-upgrade -y
apt install nano curl openssl
Die Installation von PeerVPN:
Zunächst downloaden wir uns den PeerVPN, entpacken diesen und kopieren die Binary:
Code:
cd /tmp
curl -LO https://peervpn.net/files/peervpn-0-044-linux-x86.tar.gz
tar xzvf peervpn*
sudo cp /tmp/peervpn*/peervpn /usr/local/bin
sudo cp /tmp/peervpn*/peervpn.conf /etc
Im nächsten Schritt müssen wir uns unser Private Shared Key (PSK) erstellen.
PeerVPN erlaubt bist zu 512 Charakter. Den PSK erstellen wir mit dem OpenSSL Nummerngenerator
Code:
openssl rand -base64 382 | tr -d '\n' | wc
openssl rand -base64 382 | tr -d '\n' && echo
Beispiel:
Code:
ajHpYYMJYtv+m0K6yZbYmk8npPujlcv9QDozQZ06ucV2gsHoMGqyfd50X8OnY6hicj5iFNjDN/9QVTB3nhMOV2uf/kfWCbtskUuk1zHWYZsvy71KnLRhA8W8dnu+NEKdIh28H2qUsiay7On5kOZPcrONvvpHHYbxmFI2G9TyYT+CZWIAxUVvUWl41VycjASmZYaSI6lWgYONopncNfDF5Z6oznPH8ge6sQsszbe1ZjNqLRUrxjgL3fy7SXSLCIrsSuifBvpb36d9y+YPZEbxsMInoK5QEWrpIfxjbMFlndtGc20olhh05h66qzGiimLMivrN8g+PibVaBRUmWavpngUvKYsEEPSc0wrr5ZuvpvBGTTKqPdR+soCndiWPzmwRBW56vBGxed3GNbkgmjDpTSnvNEN+gKPt07drHSbGqfFbdMdsKbjE+IWiqiVO1aviJsNpMhBO/o9uIcKxPmuze6loZKTh7/qjJuY62E//SsgFzDHDhP2w==
Diesen kopiert Ihr euch nun erst einmal in eine Textdatei, wir brauchen diesen im nächsten Schritt.
Code:
Die Konfiguration von PeerVPN:
Jetzt gehts ans Eingemachte, in dem wir die Config bearbeiten.
sudo nano /etc/peervpn.conf
Code:
#Netzwername
networkname DEBPeerVPNTest
#Nutzt bitte euren eben generierten Code!
psk ajHpYYMJYtv+m0K6yZbYmk8npPujlcv9QDozQZ06ucV2gsHoMGqyfd50X8OnY6hicj5iFNjDN/9QVTB3nhMOV2uf/kfWCbtskUuk1zHWYZsvy71KnLRhA8W8dnu+NEKdIh28H2qUsiay7On5kOZPcrONvvpHHYbxmFI2G9TyYT+CZWIAxUVvUWl41VycjASmZYaSI6lWgYONopncNfDF5Z6oznPH8ge6sQsszbe1ZjNqLRUrxjgL3fy7SXSLCIrsSuifBvpb36d9y+YPZEbxsMInoK5QEWrpIfxjbMFlndtGc20olhh05h66qzGiimLMivrN8g+PibVaBRUmWavpngUvKYsEEPSc0wrr5ZuvpvBGTTKqPdR+soCndiWPzmwRBW56vBGxed3GNbkgmjDpTSnvNEN+gKPt07drHSbGqfFbdMdsKbjE+IWiqiVO1aviJsNpMhBO/o9uIcKxPmuze6loZKTh7/qjJuY62E//SsgFzDHDhP2w==
#Port könnt Ihr beliebig wählen. Wir nutzen hier 51223
port 51223
enabletunneling yes
interface peervpn0
#IP-Adresse könnt Ihr selbst definieren. Auf KEINEN Fall 192.x.x.x oder 172.x.x.x
ifconfig4 10.8.0.1/24
#IP-Adresse eures VPS - Beispiel 105.66.22.11
initpeers 105.66.22.11 51223
#Mit local könnt Ihr die Adresse eures PeerVPN definieren. Für einen Homeserver nicht notwendig. Bei #einem VPS von Vorteil. Ihr könnt aber auch einfach die IP eures Raspi zuhause dort eintragen. Entfernt #vorher aber die #
#local
Code:
sudo nano /etc/systemd/system/peervpn.service
Code:
[Unit]
Description=PeerVPN network service
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/usr/local/bin/peervpn /etc/peervpn.conf
[Install]
WantedBy=multi-user.target
Code:
systemctl enable peervpn
Code:
ip tuntap add dev peervpn0 mode tap
ip link ls dev peervpn0
ifconfig peervpn0 10.8.0.1 netmask 255.255.255.0
Code:
peervpn0 Link encap:Ethernet Hardware Adresse 3e:e2:c9:f5:12:5c
inet Adresse:10.8.0.1 Bcast:10.8.0.255 Maske:255.255.255.0
inet6-Adresse: fe80::3ce2:c9ff:fef5:125c/64 Gültigkeitsbereich:Verbindung
UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1
RX-Pakete:20912 Fehler:0 Verloren:0 Ãberläufe:0 Fenster:0
TX-Pakete:21757 Fehler:0 Verloren:0 Ãberläufe:0 Träger:0
Kollisionen:0 Sendewarteschlangenlänge:1000
RX-Bytes:2986924 (2.9 MB) TX-Bytes:1480358 (1.4 MB)
Code:
systemctl start peervpn
Natürlich müsst Ihr jetzt noch eine entsprechende Portfreigabe in eurem Router für den Port 51223 mit UDP Protokoll eintragen.
Den gleichen Installations- und Einrichtungsprozess nehmt Ihr nun an eurem VPS vor.
Code:
#Netzwername
networkname DEBPeerVPNTest
#Nutzt bitte euren eben generierten Code!
psk ajHpYYMJYtv+m0K6yZbYmk8npPujlcv9QDozQZ06ucV2gsHoMGqyfd50X8OnY6hicj5iFNjDN/9QVTB3nhMOV2uf/kfWCbtskUuk1zHWYZsvy71KnLRhA8W8dnu+NEKdIh28H2qUsiay7On5kOZPcrONvvpHHYbxmFI2G9TyYT+CZWIAxUVvUWl41VycjASmZYaSI6lWgYONopncNfDF5Z6oznPH8ge6sQsszbe1ZjNqLRUrxjgL3fy7SXSLCIrsSuifBvpb36d9y+YPZEbxsMInoK5QEWrpIfxjbMFlndtGc20olhh05h66qzGiimLMivrN8g+PibVaBRUmWavpngUvKYsEEPSc0wrr5ZuvpvBGTTKqPdR+soCndiWPzmwRBW56vBGxed3GNbkgmjDpTSnvNEN+gKPt07drHSbGqfFbdMdsKbjE+IWiqiVO1aviJsNpMhBO/o9uIcKxPmuze6loZKTh7/qjJuY62E//SsgFzDHDhP2w==
#Port könnt Ihr beliebig wählen. Wir nutzen hier 51223
port 51223
enabletunneling yes
interface peervpn0
#IP-Adresse könnt Ihr selbst definieren. Auf KEINEN Fall 192.x.x.x oder 172.x.x.x
ifconfig4 10.8.0.2/24
#IP-Adresse eures VPS - Beispiel 105.66.22.11
initpeers eurehomedyn.dyndns.org 51223
#Mit local könnt Ihr die Adresse eures PeerVPN definieren. Für einen Homeserver nicht notwendig. Bei #einem VPS von Vorteil. Ihr könnt aber auch einfach die IP eures Raspi zuhause dort eintragen. Entfernt #vorher aber die #
local 105.66.22.11
Nach dem Start von PeerVPN auf eurem VPS könnt Ihr die Konnektivität ganz einfach prüfen in dem Ihr einfach die VPN IP-Adresse eures Homeservers anpingt:
Code:
ping 10.8.0.1
Nun könnt Ihr auf eurem Homeserver den Cache Reader entsprechend anpassen.
Ihr müsst einzig die Adresse ändern, beschrieben in diesem Beispiel:
Code:
#Entfernen!
#device = cacheserver.dyndns.org,33441
#Ersetzen durch:
device = 10.8.0.2,33441
Im großen und ganzen könnt Ihr auch mit euren Tauschpartnern PeerVPN ohne weiteres nutzen und euch zusätzlich absichern.
Wenn Ihr IPTables nutzt, müsst ihr noch eure Regeln erweitern:
Code:
#Routing
$iptables -A INPUT -i peervpn0 -j ACCEPT
$iptables -A FORWARD -i peervpn0 -j ACCEPT
$iptables -A FORWARD -i peervpn0 -o ens3 -m state --state RELATED,ESTABLISHED -j ACCEPT
$iptables -A FORWARD -i ens3 -o peervpn0 -m state --state RELATED,ESTABLISHED -j ACCEPT
#Masquerading nur nötig, wenn der Server selbst antworten soll aus dem PeerVPN Netzwerk heraus.
#$iptables -t nat -A POSTROUTING -s 10.180.20.0/24 -o eth0 -j MASQUERADE