So erstellen Sie ein VPN auf Ubuntu 20.04 Verwenden von Drahtguard
- 1175
- 376
- Lana Saumweber
WireGuard ist ein modernes und sehr einfaches Einrichten von VPN, das auf mehreren Betriebssystemen erhältlich ist. Die Anwendung ist im Ubuntu 20 verfügbar.04 offizielle Repositorys, daher ist es auch sehr einfach zu installieren. Im Gegensatz zu anderen Software wie OpenVPN, die auf der Verwendung von SSL-Zertifikaten basiert, basiert WireGuard auf der Verwendung von Schlüsselpaaren. In diesem Tutorial sehen wir, wie man in wenigen einfachen Schritten einen VPN -Server und einen Client -Peer auf der neuesten stabilen Version von Ubuntu konfiguriert.
In diesem Tutorial lernen Sie:
- So installieren Sie Drahtguard auf Ubuntu 20.04 FOSSA FOSSA
- So erstellen Sie öffentliches und privates Schlüsselpaar
- So konfigurieren Sie den Server und einen Client -Peer
- Wie man den gesamten eingehenden Verkehr zum VPN umleitet
Softwareanforderungen und Konventionen verwendet
Kategorie | Anforderungen, Konventionen oder Softwareversion verwendet |
---|---|
System | Ubuntu 20.04 FOSSA FOSSA |
Software | Wireguard |
Andere | Wurzelprivilegien |
Konventionen | # - erfordert, dass gegebene Linux -Befehle mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mit Verwendung von ausgeführt werden können sudo Befehl$ - Erfordert, dass die angegebenen Linux-Befehle als regelmäßiger nicht privilegierter Benutzer ausgeführt werden können |
Installation
WireGuard ist offiziell im Repository von Ubuntu 20 im „Universum“ erhältlich.04, deshalb können wir es über installieren geeignet
. Die verfügbare Version ist im Moment des Schreibens 1.0.20200319-1ubuntu1
:
$ sudo apt installieren Sie Wireguard
Das System wird uns auffordern, zu bestätigen, dass wir das Programm und seine Abhängigkeiten installieren möchten, und den Betrieb in Sekundenschnelle abschließen.
Schlüssel erzeugen
Wir müssen eine Öffentlichkeit und einen privaten Schlüssel für jede Maschine generieren, die wir in unserem VPN verwenden möchten. Der private Schlüssel sollte auf der Maschine geheim gehalten werden. Der öffentliche wird verwendet, um von den anderen Kollegen auf die Maschine zuzugreifen.
Um die Schlüssel zu generieren, können wir die verwenden wg
Dienstprogramm. In der Drahtguard -Konfigurationsdatei müssen wir auf den privaten Schlüssel der Maschine verweisen, während der öffentliche für die anderen Kollegen verwendet wird. Beachten Sie, dass wir die Schlüssel direkt verweisen, sodass wir sie theoretisch nicht in Dateien speichern müssen. Wir werden es jedoch trotzdem tun, nur aus Bequemlichkeit.
Um den privaten Schlüssel für unseren Server zu generieren, müssen wir die verwenden Genkey
Unterbefehl von wg
. Der Befehl gibt den erstellten Taste an aus Stdout
; Um den Schlüssel zu einer Datei zu schreiben, können wir die Leistung von Shell -Umleitungen verwenden:
$ wg genekey> server_private_key
Der Befehl generiert den Schlüssel und speichert es auf die server_private_key
Datei, aber die folgende Warnung erheben:
Warnung: Schreiben in die weltweit zugängliche Datei. Erwägen Sie die Ummask auf 077 und versuchen Sie es erneut.
Dies liegt daran, dass mit dem Standardbenutzer Ummask (002
) Die Dateien werden im Modus erstellt 664
, So sind weltlesbar, was nicht empfohlen wird. Um dieses Problem zu lösen, können wir entweder die in der aktuelle Shell -Sitzung verwendete Ummask ändern, bevor wir die Dateien erstellen:
$ ummask 077
Oder ändern Sie die Dateienberechtigungen auf 600
Nach der Schöpfung. Hier werden wir uns für die letztere Lösung entscheiden.
Sobald unser privater Schlüssel fertig ist, können wir die generieren öffentlich Eine, die darauf basiert. Um die Aufgabe zu erfüllen, verwenden wir die Pubkey
Unterbefehl von wg
. Genauso wie zuvor verwenden wir Shell -Umleitungen: Erstens, um den Inhalt der zu bestehen server_private_key
Datei an der Stdin
des Befehls und dann und um den generierten Schlüssel zum Umbau zu server_public_key
Datei:
$ wg pubrkey server_public_key
Um etwas zu tippen, können wir beide Schlüssel mit nur einem Befehl erzeugen |
(Rohr-) Bediener und der Tee
Befehl:
$ WG Genkey | tee server_private_key | WG Pubkey> server_public_key
Die Ausgabe des Befehls auf der linken Seite des Rohroperators (|
) wird an die Standardeingabe des Programms auf der rechten Seite übergeben. Der Tee
Befehl, ermöglichen wir uns stattdessen, die Ausgabe eines Befehls sowohl in eine Datei als auch in die Standardausgabe umzuleiten (mehr über Shell -Umleitungen hier).
Sobald unsere Schlüssel fertig sind, können wir die Serverkonfigurationsdatei erstellen.
Serverkonfigurationsdatei
Um unsere Drahtguard -Installation zu konfigurieren, können wir eine Konfigurationsdatei erstellen, die aufgerufen wurde wg0.Conf
mit dem folgenden Inhalt:
[Schnittstelle] privateKey = Adresse = 10.0.0.1/24 Hörport = 51820
Beachten Sie, dass der Name der Datei willkürlich ist, aber auf dem Namen basieren sollte, den wir für unsere Schnittstelle verwenden werden, wg0
in diesem Fall. Dieser Name wird beim Starten des Dienstes verwiesen, wie wir unten sehen werden.
In unserem Beispiel. Die [Schnittstelle]
Der Abschnitt der Konfigurationsdatei enthält die folgenden Felder:
- Privat Schlüssel
- Adresse
- Hören
Der Privat Schlüssel Der Feldwert ist nichts anderes als der private Schlüssel, den wir zuvor generiert haben.
Im Adresse Feld Wir haben die Adresse angegeben, die der Schnittstelle im VPN zusammen mit der Subnetzmaske mit der Subnetzmaske zugewiesen wurde CIDR Notation. In diesem Fall haben wir verwendet 10.0.0.1/24
, Unsere WireGuard "Server" -Ade innerhalb des VPN ist also 10.0.0.1
, Welches ist in der verfügbaren Adressen, die von Adressen stammen 10.0.0.1
Zu 10.0.0.254
.
Schließlich in der Hören Feld haben wir angegeben, was Port WireGuard für eingehenden Verkehr anhören wird. Die Regel, die den Datenverkehr zuzulassen, muss auch unserer Firewall hinzugefügt werden. Wir werden dies im nächsten Abschnitt tun.
Wir können jetzt die Berechtigungen der Dateien ändern und sie in die verschieben /etc/Wireguard
Verzeichnis:
$ chmod 600 server_public_key server_private_key wg0.conf $ sudo mv server_private_key server_public_key wg0.conf /etc /Wireguard
Wir können jetzt mit dem beginnen WG-Quick
Service, in dem der Name der Drahtguard -Schnittstelle nachher angibt @
im Einheitsnamen. Was ist diese Notation?? Es ist eine Funktion von Systemd: damit können wir mehrere Einheitendateien auf der Basis einer „Vorlage“ generieren und den Wert übergeben, der in der Vorlage nach dem ersetzt wird @
Symbol im Namen der Einheit. Dies ist der Inhalt der [email protected]
Einheit:
[Einheit] Beschreibung = Wireguard über WG-Quick (8) für %i AFTER = NETWORK-ONLINE.Ziel NSSS-Lookup.Target wants = network-online.Ziel NSSS-Lookup.Zieldokumentation = MAN: WG-Quick (8) Dokumentation = MAN: WG (8) Dokumentation = https: // www.Wireguard.com/documentation = https: // www.Wireguard.com/QuickStart/documentation = https: // git.ZX2C4.com/Wireguard-Tools/über/Src/Man/WG-Quick.8 Dokumentation = https: // git.ZX2C4.com/Wireguard-Tools/über/src/mAN/wg.8 [Service] type = OneShot remaFterExit = yes execstart =/usr/bin/wg-quick %i execStop =/usr/bin/wg-quick %ICOMEL ICEMOLE = WG_ENDPOPT_RESOLUTION_RETRIES = Infinity [Install] Wantedby = Multi-Benutzer.Ziel
Der Wert, den wir nach dem angeben werden @
im Einheitsnamen beim Starten oder Anhalten ersetzen Sie es %ich
im ExecStart
Und ExecStop
Linien. In diesem Fall werden wir verwenden wg0
:
$ sudo systemctl aktivieren-jetzt wg-quick@wg0
Mit dem obigen Befehl haben wir den Dienst gestartet und machen auch so, dass automatisch beim Boot gestartet wird. Um zu überprüfen, ob unsere Konfiguration angewendet wurde, können wir die ausführen wg
Befehl. Die erzeugte Ausgabe sollte Informationen über die anzeigen wg0
Schnittstelle:
$ sudo WG Schnittstelle: WG0 PUBLIC KEY: NNX3ZPCV9D2DTGHDSOYGBNR64ZG5JTJ4Z4T2SE759V4 = Privatschlüssel: (Hidden) Höranschluss: 51820
Machen wir nun fort.
Firewall- und Netzwerk -Setup
In diesem Tutorial werde ich die Verwendung von annehmen UFW
. Wie bereits erwähnt, müssen wir eine Regel hinzufügen, um eingehenden Verkehr über den in der Konfigurationsdatei angegebenen Port zuzulassen, 51820
. Wir tun es, indem wir einen sehr einfachen Befehl ausführen:
$ sudo ufw erlauben 51820/UDP
Wir müssen auch die Paketweiterleitung auf unserem System zulassen. Um die Aufgabe zu erfüllen, entfernen wir den Kommentar aus der Zeile 28
des /etc/sysctl.Conf
Datei, damit es so aussieht:
# Überzeugen Sie die nächste Zeile, um die Paketweiterleitung für IPv4 -Netz zu aktivieren.IPv4.ip_forward = 1
Um die Änderungen effektiv zu gestalten, ohne das System neu zu starten, müssen wir den folgenden Befehl ausführen:
$ sudo sysctl -p
Im nächsten Schritt konfigurieren wir den Client.
Client -Schlüsselgeneration
Lassen Sie uns nun das System, das wir als Client verwenden möchten. Wir müssen Drahtguard darauf installieren. Sobald wir fertig sind, können wir genauso wie auf dem Server ein Schlüsselpaar generieren:
$ WG Genkey | tee client_private_key | WG Pubkey> client_public_key
Genau wie wir die serverseitig erstellen, erstellen wir die wg0.Conf
Konfigurationsdatei. Diesmal mit diesem Inhalt:
[Schnittstelle] privateKey = Adresse = 10.0.0.2/24 [Peer] publicKey = Endpoint =: 51820 erlaubt = 0.0.0.0/0
Wir haben bereits die Bedeutung der in der enthaltenen Felder gesehen Schnittstelle
Abschnitt, wenn wir die Serverkonfiguration generiert haben. Hier haben wir die Werte gerade an unseren Kunden angepasst (es wird die haben 10.0.0.2
Adresse im VPN).
In dieser Konfiguration haben wir einen neuen Abschnitt verwendet, [Peer]
. Darin können wir die Informationen relativ zu einem Peer angeben, in diesem Fall die, die wir als „Server“ verwenden, verwenden. Die Felder, die wir verwendet haben, sind:
- Öffentlicher Schlüssel
- Endpunkt
- Erlaubt
Im Öffentlicher Schlüssel Feld geben wir die an öffentlich Schlüssel des Peer, in diesem Fall der öffentliche Schlüssel, den wir auf dem Server generiert haben.
Der Endpunkt ist die öffentliche IP -Adresse oder das Hostname des Peer, gefolgt von einem Dickdarm und der Hafennummer, auf die der Peer hört (in unserem Fall 51820
).
Schließlich der Wert, der an die überging Erlaubt Feld ist eine von Kommas getrennte Liste von IP-Adressen und Subnetzmaske mit CIDR-Notation. Nur der an den Peer gerichtete Verkehr, der aus den angegebenen Adressen stammt. In diesem Fall haben wir verwendet 0.0.0.0/0
Als Wert: Es funktioniert als "Catch-All" -Werte, sodass der gesamte Datenverkehr an den VPN-Peer (den Server) gesendet wird.
Genau wie wir serverseitig, setzen wir die entsprechenden Berechtigungen und verschieben die Schlüssel und die Konfigurationsdatei in die /etc/Wireguard
Verzeichnis:
$ chmod 600 client_public_key client_private_key wg0.conf $ sudo mv client_public_key client_private_key wg0.conf /etc /Wireguard
Mit der Konfigurationsdatei können wir den Dienst starten:
$ sudo systemctl aktivieren-jetzt wg-quick@wg0
Endlich, das [Peer]
Abschnitt zu unserem Client muss zu der zuvor erstellten Konfigurationsdatei hinzugefügt werden Server. Wir anhängen Der folgende Inhalt dazu:
[Peer] publicKey = erlaubte und 10.0.0.2/32
Zu diesem Zeitpunkt starten wir den Service neu:
$ sudo systemCTL Neustart WG-Quick@WG0
Die Informationen über den zugehörigen Peer sollten nun in der Ausgabe der Ausgabe gemeldet werden wg
Befehl:
$ sudo wg interface: wg0 public key: nNx3Zpcv9D2dtgHDsoYGBNr64zG5jTJ4Z4T2sE759V4= private key: (hidden) listening port: 51820 peer: t5pKKg5/9fJKiU0lrNTahv6gvABcmCjQq5gF3BxwiDQ= allowed ips: 10.0.0.2/32
Zu diesem Zeitpunkt sollten wir aus dem "Client" -System in der Lage sein, den Server auf dem zu pingen 10.0.0.1
Adresse:
$ ping -c 3 10.0.0.1 Ping 10.0.0.1 (10.0.0.1) 56 (84) Daten Bytes. 64 Bytes von 10.0.0.1: ICMP_SEQ = 1 TTL = 64 Time = 2.82 ms 64 Bytes von 10.0.0.1: ICMP_SEQ = 2 TTL = 64 Time = 38.0 ms 64 Bytes von 10.0.0.1: ICMP_SEQ = 3 TTL = 64 Time = 3.02 ms --- 10.0.0.1 Ping-Statistik --- 3 Pakete übertragen, 3 empfangen, 0% Paketverlust, Zeit 2003ms RTT min/avg/max/mdev = 2.819/14.613/37.999/16.536 ms
Schlussfolgerungen
In diesem Tutorial haben wir gesehen.04 FOSSA FOSSA. Die Software ist wirklich einfach zu installieren und zu konfigurieren, insbesondere im Vergleich zu anderen Lösungen, wie zum Beispiel OpenVPN.
Wir haben gesehen, wie die öffentlichen und privaten Schlüssel für unser Setup generiert werden und wie Sie sowohl den Server als auch einen Client konfigurieren, damit der gesamte Datenverkehr in das VPN weitergeleitet wird. Nach der angegebenen Anweisung haben Sie ein funktionierendes Setup. Weitere Informationen finden Sie auf der Projektseite.
Verwandte Linux -Tutorials:
- Dinge zu installieren auf Ubuntu 20.04
- Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
- So richten Sie einen OpenVPN -Server auf Ubuntu 20 ein.04
- Basic Ubuntu 22.04 OpenVPN -Client/Server -Verbindungsanschluss -Setup
- Ubuntu 20.04 Tricks und Dinge, die Sie vielleicht nicht wissen
- Ubuntu 20.04 Leitfaden
- Dinge zu installieren auf Ubuntu 22.04
- FTP -Clientliste und -installation auf Ubuntu 20.04 Linux…
- Ubuntu 20.04: WordPress mit Nginx -Installation
- Die 8 besten Ubuntu -Desktop -Umgebungen (20.04 fokale Fossa…
- « So installieren Sie Lubuntu Desktop auf Ubuntu 20.04 fokale Fossa Linux
- Temporärer Fehler auflösen Fehler bei Ubuntu 20.04 fokale Fossa Linux »