[LINUX] Accédons à votre tarte à la râpe domestique depuis l'extérieur de votre maison avec VPN (WireGuard)

introduction

Après la pandémie, j'ai acheté [DELL XPS 13 (9300)] [] le 2020/04. En tant que PC portable, je n'ai rien à redire sur ses performances. L'écran est large (1920x1200), le clavier est bon, et il n'y a rien à dire.

Cependant, il est encore insuffisant pour traiter d'énormes données, Vous voudrez utiliser votre ordinateur de bureau à la maison. (Je ne sors pas du tout pour le travail maintenant, donc j'anticipe l'avenir) Par conséquent, j'ai décidé de créer un environnement dans lequel je peux me connecter en configurant un VPN chez moi depuis l'extérieur de chez moi.

Que utiliser pour VPN?

Dans un premier temps, utilisez votre routeur domestique Yamaha RTX830 [] comme serveur VPN et iPhone comme client VPN. J'ai essayé de me connecter, mais je n'ai pas pu me connecter du tout ...

Peut-être la différence entre IKEv1 / v2, filtre ISP, filtre d'opérateur mobile, mauvaise configuration ... etc. Je pense que je peux y penser, mais je suis fatigué.

En pensant ainsi, lorsque j'ai demandé à Google Sensei, [j'ai créé un environnement dans lequel je peux développer un serveur domestique via VPN avec WireGuard] [] Il a expliqué comment construire un VPN en utilisant WireGuard [] d'une manière très simple à comprendre.

Donc, je l'ai mis sur le Raspberry Pi 4 Model B sous Yamaha RTX830 []. Avec [DELL XPS 13 (9300)] [](Ubuntu 20.04-LTS) que j'ai installé WireGuard [] et je l'ai sorti de la maison Je vais construire un VPN.

1. Installez Wireguard

WireGuard [] est une connexion Peer to Peer, il n'y a donc pas de concept serveur / client. En d'autres termes, WireGuard [] doit être installé sur les PC Raspberry et portables.

1-1. Installation du Wireguard sur Raspeye

WireGuard-Raspi [] explique comment l'installer sur Raspeye.

$ 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. Installation de Wireguard sur Ubuntu 20.04-LTS

C'est facile car il peut être installé avec apt.

$ sudo apt update
$ sudo apt install wireguard

2. Paramètres de transfert de paquets pour Wireguard

Il existe un paramètre de transfert de paquets pour Wireguard [].

2-1. Paramètres Wireguard dans Raspeye

Réglez pour que les paquets puissent être transférés. En effet, Wireguard [] crée un tunnel P2P avec UDP, Pour accéder à votre réseau domestique à partir d'un ordinateur portable à l'extérieur de votre domicile En effet, le côté râpe à tarte fonctionne également comme une boîte NAT.

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

Vérifiez s'il est correctement réglé.

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

3. Génération de clé VPN

Générez des clés privées et publiques pour VPN. Générez des clés sur les PC Raspberry et portables.

Le protocole est P2P, Pour plus de commodité, laissez le côté râpe à tarte être le serveur et le PC portable le client.

3-1. Génération de clé côté Raspeye

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

3-2. Génération de clé côté ordinateur portable

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

4. Réglage de la clé VPN

4-1. Réglage des touches côté Raspeye

Créez un répertoire / etc / wireguard et placez-y le fichier de configuration ( wg0.conf).

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

# 1.Définissez l'adresse IP utilisée dans le réseau virtuel de VPN.
#Cette fois pour une compréhension facile 10.0.0.1/Je l'ai mis à 24.
Address = 10.0.0.1/24

# 2.Le port sur lequel WireGuard écoute. Puisqu'il est utilisé pour ouvrir le port du routeur, changez-le de manière appropriée.
#Le numéro de port peut être n'importe quoi.
ListenPort = 1194

# 3.Clé privée générée par la commande wg(Du côté serveur)Entrez sous forme de chaîne de caractères.
PrivateKey = <server private key>

# 4. replace eth0 with the interface open to the internet (e.g might be wlan0 if wifi)
#Une commande qui fonctionne au démarrage et à l'arrêt est émise. Pensez-y comme un sort pour nat pour le moment.
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.Clé publique générée par la commande wg(Côté client)Entrez sous forme de chaîne de caractères.
PublicKey = <client public key>

# 6.10 adresses IP virtuelles pour le client pour plus de clarté.0.0.2/Réglez sur 32.
#Ajoutez à l'adresse IP autorisée pour vous connecter au serveur.
AllowedIPs = 10.0.0.2/32

Pour pouvoir se connecter à partir de plusieurs pairs Ce n'est pas grave si vous augmentez l'élément de [Peer] du montant du client.

4-2. Réglage des touches côté ordinateur portable

Réglez le côté du PC portable de la même manière que la tarte à la râpe.

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

Cependant, aucun paramètre NAT n'est requis du côté de l'ordinateur portable.

[Interface]

# 1.Clé privée générée par la commande wg(Côté client)Entrez sous forme de chaîne de caractères
PrivateKey = <client private key>

# 2.IP virtuelle du client
Address = 10.0.0.2/24

[Peer]

# 3.Entrez la clé publique du serveur sous forme de chaîne de caractères
PublicKey = <server public key>

# 4.IP virtuelle du serveur(10.0.0.1/32)Est ajouté à l'adresse IP autorisée pour se connecter au client.
#Ajoutez également l'espace d'adressage du réseau domestique.
AllowedIPs = 10.0.0.1/32,192.168.0.0/24

# 5.IP globale du serveur(Le nom de domaine complet est également acceptable)Quand
# ListenPort(Celui qui a décidé 1194 côté serveur)Mettre en place.
Endpoint = <server global ip address>:1194

5. Démarrage automatique de Wireguard

Soulevez WireGuard côté tarte à la râpe (serveur) comme suit.

$ 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

Fait démarrer WireGuard [] automatiquement au démarrage de Raspai.

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

6. Redirection de port sur le routeur domestique

Définissez la redirection de port dans Yamaha RTX830 []. Convertit le numéro de port «11194» reçu à l'extérieur en numéro de port «1194» de Raspeye et le transfère.

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

Réglez en fonction de votre routeur domestique.

7. Connexion / déconnexion VPN

Lors de l'établissement d'une connexion VPN depuis un ordinateur portable avec Wireguard [] Exécutez la commande comme suit.

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

Pour déconnecter la connexion VPN:

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

Résumé

Vous pouvez désormais vous connecter à votre réseau domestique depuis l'extérieur de votre domicile. Vous pouvez désormais accéder à votre ordinateur de bureau et gérer confortablement d'énormes quantités de données.

Si vous ne voulez pas que votre ordinateur de bureau fonctionne tout le temps ...

Lisez s'il vous plaît.

References

Recommended Posts

Accédons à votre tarte à la râpe domestique depuis l'extérieur de votre maison avec VPN (WireGuard)
Construire un serveur VPN avec Raspberry Pie
Allumez / éteignez votre PC avec Raspberry Pi
GPGPU avec Raspberry Pi
Faisons Raspberry Pi?
DigitalSignage avec Raspberry Pi
Exploitons GPIO de Raspeye avec Python CGI
Introduction facile au piratage domestique avec Raspberry Pi et discord.py
Plantes Mutter avec Raspberry Pi
Lisez votre numéro d'inscription scolaire à partir de votre carte d'étudiant avec Raspberry Pi
Faisons un ordinateur de vélo avec Raspberry Pi Zero (W, WH)
Notifier LINE de la température corporelle du thermomètre BLE avec la tarte à la râpe # 1
Les appareils électroménagers IoT les plus puissants de Cospa! Exploitez les produits TPLink de Raspberry Pi
Avertir LINE de la température corporelle du thermomètre BLE avec la tarte à la râpe n ° 2
[Remarque] Utilisation d'un écran LCD à 16 caractères à 2 chiffres (1602A) de Python avec Raspeye
Faisons une chemise IoT avec Lambda, Kinesis, Raspberry Pi [Partie 1]
Utilisez vl53l0x avec RaspberryPi (python)
Commande de servomoteur avec Raspberry Pi
Communication série avec Raspberry Pi + PySerial
Sortie du Raspberry Pi vers la ligne
Configuration du système d'exploitation avec Raspberry Pi Imager
Essayez L Chika avec raspberrypi
Essayez de déplacer 3 servos avec Raspeye
Utiliser une webcam avec Raspberry Pi
Remarque: je souhaite faire de la domotique avec Home Assistant + Raspberry Pi + capteur # 1
Essayez de tweeter le flux RSS d'arXiv sur Twitter avec python de Raspeye