[LINUX] Lassen Sie uns mit VPN (WireGuard) von außerhalb Ihres Hauses auf Ihren Home Rasp Pie zugreifen.

Einführung

Nach der Pandemie habe ich am 2020/04 [DELL XPS 13 (9300)] [] gekauft. Als Laptop habe ich keine Beschwerden über seine Leistung. Der Bildschirm ist breit (1920 x 1200), die Tastatur ist gut und es gibt nichts zu sagen.

Es ist jedoch immer noch unzureichend bei der Verarbeitung großer Datenmengen. Sie möchten Ihren Heim-Desktop-PC verwenden. (Ich gehe jetzt überhaupt nicht zur Arbeit, also erwarte ich die Zukunft) Aus diesem Grund habe ich beschlossen, eine Umgebung zu erstellen, in der ich mich anmelden kann, indem ich von außerhalb meines Zuhauses ein VPN in meinem Haus einrichte.

Was für VPN verwenden?

Verwenden Sie zunächst Ihren Heimrouter Yamaha RTX830 [] als VPN-Server und das iPhone als VPN-Client. Ich habe versucht, eine Verbindung herzustellen, aber ich konnte überhaupt keine Verbindung herstellen ...

Vielleicht der Unterschied zwischen IKEv1 / v2, ISP-Filter, Mobilfunkbetreiberfilter, Fehlkonfiguration ... usw. Ich denke, ich kann daran denken, aber ich bin müde.

Als ich Google Sensei fragte, [habe ich eine Umgebung geschaffen, in der ich mit WireGuard einen Heimserver über VPN entwickeln kann] [] Er erklärte, wie man mit WireGuard [] auf sehr leicht verständliche Weise ein VPN erstellt.

Deshalb habe ich es auf den Raspberry Pi 4 Model B unter Yamaha RTX830 [] gestellt. Mit [DELL XPS 13 (9300)] [](Ubuntu 20.04-LTS) habe ich WireGuard [] installiert und aus dem Haus genommen Ich werde ein VPN bauen.

1. Installieren Sie Wireguard

WireGuard [] ist eine Peer-to-Peer-Verbindung, daher gibt es kein Server / Client-Konzept. Mit anderen Worten, WireGuard [] muss sowohl auf Raspberry- als auch auf Laptop-PCs installiert sein.

1-1. Wireguard-Installation auf Raspeye

WireGuard-Raspi [] erklärt, wie es auf Raspeye installiert wird.

$ sudo apt-get update
$ sudo apt-get upgrade 
$ sudo apt-get install raspberrypi-kernel-headers
$ echo "deb http://deb.debian.org/debian/ unstable main" | sudo tee --append /etc/apt/sources.list.d/unstable.list
$ sudo apt-get install dirmngr 
$ wget -O - https://ftp-master.debian.org/keys/archive-key-$(lsb_release -sr).asc | sudo apt-key add -
$ printf 'Package: *\nPin: release a=unstable\nPin-Priority: 150\n' | sudo tee --append /etc/apt/preferences.d/limit-unstable
$ sudo apt-get update
$ sudo apt-get install wireguard 
$ sudo reboot

1-2. Installieren von Wireguard unter Ubuntu 20.04-LTS

Es ist einfach, weil es mit apt installiert werden kann.

$ sudo apt update
$ sudo apt install wireguard

2. Paketweiterleitungseinstellungen für Wireguard

Es gibt eine Paketweiterleitungseinstellung für Wireguard [].

2-1. Wireguard-Einstellungen in Raspeye

Stellen Sie so ein, dass Pakete übertragen werden können. Dies liegt daran, dass Wireguard [] einen P2P-Tunnel mit UDP erstellt. So greifen Sie von einem Laptop außerhalb Ihres Hauses auf Ihr Heimnetzwerk zu Dies liegt daran, dass die Raspeltortenseite auch als NAT-Box fungiert.

$ sudo perl -pi -e 's/#{1,}?net.ipv4.ip_forward ?= ?(0|1)/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf 
$ sudo reboot

Überprüfen Sie, ob es richtig eingestellt ist.

$ sysctl net.ipv4.ip_forward 
net.ipv4.ip_forward = 1

3. Generierung von VPN-Schlüsseln

Generieren Sie private und öffentliche Schlüssel für VPN. Generieren Sie Schlüssel sowohl auf Himbeer- als auch auf Laptop-PCs.

Das Protokoll ist P2P, Der Einfachheit halber sei die Raspeltorte der Server und der Laptop der Client.

3-1. Schlüsselgenerierung auf der Raspeye-Seite

$ mkdir wgkeys
$ cd wgkeys/
$ umask 077
$ wg genkey > server_private.key
$ wg pubkey > server_public.key < server_private.key

3-2. Schlüsselgenerierung auf der Laptop-PC-Seite

$ mkdir wgkeys
$ cd wgkeys/
$ umask 077
$ wg genkey > client_private.key
$ wg pubkey > client_public.key < client_private.key

4. VPN-Schlüsseleinstellung

4-1. Tasteneinstellung auf der Raspeye-Seite

Erstellen Sie ein Verzeichnis "/ etc / wireguard" und platzieren Sie die Konfigurationsdatei ("wg0.conf") dort.

$ sudo mkdir /etc/wireguard/
$ sudo vim /etc/wireguard/wg0.conf
[Interface]

# 1.Stellen Sie die IP-Adresse ein, die im virtuellen VPN-Netzwerk verwendet wird.
#Diesmal zum leichteren Verständnis 10.0.0.1/Ich habe es auf 24 gesetzt.
Address = 10.0.0.1/24

# 2.Der Port, an dem WireGuard lauscht. Da es zum Öffnen des Ports des Routers verwendet wird, ändern Sie ihn entsprechend.
#Die Portnummer kann beliebig sein.
ListenPort = 1194

# 3.Privater Schlüssel, der vom Befehl wg generiert wird(Serverseite)Als Zeichenkette eingeben.
PrivateKey = <server private key>

# 4. replace eth0 with the interface open to the internet (e.g might be wlan0 if wifi)
#Ein Befehl, der beim Starten und Beenden funktioniert, wird ausgegeben. Betrachten Sie es vorerst als einen Zauber für Nat.
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]

# 5.Öffentlicher Schlüssel, der vom Befehl wg generiert wird(Client-Seite)Als Zeichenkette eingeben.
PublicKey = <client public key>

# 6.10 virtuelle IPs für den Client zur Verdeutlichung.0.0.2/Auf 32 einstellen.
#Fügen Sie der zulässigen IP hinzu, um eine Verbindung zum Server herzustellen.
AllowedIPs = 10.0.0.2/32

Um von mehreren Peers aus eine Verbindung herstellen zu können Es ist in Ordnung, wenn Sie den Punkt "[Peer]" um den Betrag des Kunden erhöhen.

4-2. Tasteneinstellung auf der Seite des Laptop-PCs

Stellen Sie die Laptop-PC-Seite genauso ein wie die Raspeltorte.

$ sudo mkdir /etc/wireguard/
$ sudo vim /etc/wireguard/wg0.conf

Auf der Laptopseite sind jedoch keine NAT-Einstellungen erforderlich.

[Interface]

# 1.Privater Schlüssel, der vom Befehl wg generiert wird(Client-Seite)Als Zeichenkette eingeben
PrivateKey = <client private key>

# 2.Virtuelle Client-IP
Address = 10.0.0.2/24

[Peer]

# 3.Geben Sie den öffentlichen Schlüssel des Servers als Zeichenfolge ein
PublicKey = <server public key>

# 4.Virtuelle IP des Servers(10.0.0.1/32)Wird der zulässigen IP hinzugefügt, um eine Verbindung zum Client herzustellen.
#Fügen Sie auch den Adressraum des Heimnetzwerks hinzu.
AllowedIPs = 10.0.0.1/32,192.168.0.0/24

# 5.Globale IP des Servers(FQDN ist ebenfalls akzeptabel)Wann
# ListenPort(Derjenige, der 1194 auf der Serverseite entschieden hat)Einstellen.
Endpoint = <server global ip address>:1194

5. Automatischer Start von Wireguard

Heben Sie WireGuard auf der Raspet Pie (Server) -Seite wie folgt an.

$ sudo wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.0.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

WireGuard [] sollte auch automatisch gestartet werden, wenn Raspai gestartet wird.

$ sudo wg-quick down wg0
$ sudo systemctl enable wg-quick@wg0
$ sudo systemctl start wg-quick@wg0

6. Portweiterleitung am Heimrouter

Stellen Sie die Portweiterleitung in Yamaha RTX830 [] ein. Konvertiert die außen empfangene Portnummer "11194" in die Portnummer "1194" von Raspeye und überträgt sie.

pp select 1
ip filter 200100 pass * <Raspeye IP-Adresse> udp * 1194
pp1# ip pp secure filter in ... 200100
no pp select
nat descriptor type 1000 masquerade
nat descriptor masquerade static 1000 1 <Raspeye IP-Adresse> udp 11194=1194

Stellen Sie entsprechend Ihrem Heimrouter ein.

7. VPN-Verbindung / Trennung

Beim Herstellen einer VPN-Verbindung von einem Laptop-PC mit Wireguard [] Führen Sie den Befehl wie folgt aus.

$ sudo wg-quick up /etc/wireguard/wg0.conf

So trennen Sie die VPN-Verbindung:

$ sudo wg-quick down /etc/wireguard/wg0.conf

Zusammenfassung

Jetzt können Sie von außerhalb Ihres Hauses eine Verbindung zu Ihrem Heimnetzwerk herstellen. Jetzt können Sie auf Ihren Desktop-PC zugreifen und große Datenmengen bequem verarbeiten.

Wenn Sie Ihren Desktop-PC nicht ständig am Laufen halten möchten ...

Lesen Sie bitte.

References

Recommended Posts

Lassen Sie uns mit VPN (WireGuard) von außerhalb Ihres Hauses auf Ihren Home Rasp Pie zugreifen.
Aufbau eines VPN-Servers mit Raspberry Pie
Schalten Sie Ihren PC mit Himbeer-Pi ein / aus
GPGPU mit Raspberry Pi
Lass uns Raspberry Pi machen?
DigitalSignage mit Raspberry Pi
Lassen Sie uns GPIO von Raspeye mit Python CGI betreiben
Einfache Einführung in Home Hack mit Raspberry Pi und discord.py
Mutter pflanzt mit Raspberry Pi
Lesen Sie mit Raspberry Pi Ihre Schulregistrierungsnummer aus Ihrem Studentenausweis
Machen wir einen Fahrradcomputer mit Raspberry Pi Zero (W, WH)
Benachrichtigen Sie LINE über die Körpertemperatur vom BLE-Thermometer mit Raspeltorte Nr. 1
Cospas stärkste IoT-Haushaltsgeräte! Betreiben Sie TPLink-Produkte von Raspberry Pi
Benachrichtigen Sie LINE über die Körpertemperatur vom BLE-Thermometer mit Raspeltorte Nr. 2
[Hinweis] Verwenden eines 16x2-stelligen LCD-Zeichens (1602A) von Python mit Raspeye
Machen wir ein IoT-Shirt mit Lambda, Kinesis, Raspberry Pi [Teil 1]
Verwenden Sie vl53l0x mit RaspberryPi (Python)
Servomotorsteuerung mit Raspberry Pi
Serielle Kommunikation mit Raspberry Pi + PySerial
Ausgabe von Raspberry Pi an Line
Betriebssystem-Setup mit Raspberry Pi Imager
Probieren Sie L Chika mit Himbeerpi
Versuchen Sie, 3 Servos mit Raspeye zu bewegen
Verwenden einer Webkamera mit Raspberry Pi
Hinweis: Ich möchte die Heimautomation mit Home Assistant + Raspberry Pi + Sensor Nr. 1 durchführen
Versuchen Sie, den RSS-Feed von arXiv mit Python von Raspeye auf Twitter zu twittern