La Fibre

Télécom => Réseau => reseau VPN => Discussion démarrée par: Mihoko-Okayami le 17 février 2021 à 14:37:34

Titre: Quelle technologie VPN choisir afin de servir un service self hosted via un VPS
Posté par: Mihoko-Okayami le 17 février 2021 à 14:37:34
Hello,

J’héberge plusieurs petits services sur des serveurs dans le garage, notamment quelques serveurs de jeu pour des amis et moi-même.
Pour les services web, Cloudflare "gratuit" semble pour le moment suffisant ( protection ddos, non exposition de mon ip perso ),
mais pour les serveurs de jeu, c'est une autre histoire ...

J'ai donc pour projet de prendre un petit VPS à 6,99€ disposant de l'anti-ddos "game" d'OVH ( avec 1vCPU, 2Go RAM, ... ),
et d'y installer un VPN personnel afin d'y connecter mes serveurs de jeu et donc,
d'avoir l'esprit "tranquille" & à moindre cout niveau ddos.

=> Quelle technologie ( PPTP, GRE/IPSec, ... ) conseillez-vous pour cet usage ?
Schéma "vulgaire" : https://pix.milkywan.fr/lDpFFbyL.PNG ( en rouge, la brique que je souhaite ajoute )

Notes :
- A la maison, les serveurs tournent sous Alpine Linux.
- Le VPS que je vise utilise OpenVZ, j'ai modif le container afin d'aussi être sous Alpine Linux, mais limitation au kernel host 4.19.0.
- Pas besoin d'IPv6 ( car de toute façon, pas encore dispo sur mon offre Bouygues 2Gb via réseau Altitude Infrastructure )

Par avance, merci de vos conseils !
Titre: Quelle technologie VPN choisir afin de servir un service self hosted via un VPS
Posté par: Hugues le 17 février 2021 à 14:49:35
GRE ou L2TP, le premier passe pas les NAT, le second oui.

L'avantage c'est que tu n'as pas de chiffrement donc des bonnes perfs et moins de complexité
Titre: Quelle technologie VPN choisir afin de servir un service self hosted via un VPS
Posté par: Mihoko-Okayami le 17 février 2021 à 15:17:52
Merci Hugues  ;) !
Titre: Quelle technologie VPN choisir afin de servir un service self hosted via un VPS
Posté par: kgersen le 17 février 2021 à 19:22:48
on est en 2021: Wireguard (a la mano ou via Tailscale).
c'est 10x plus simple que n'importe quoi d'autre et aussi performant en plus d'être chiffré.

Avec Tailscale , tu mets le client sur toutes les machines concernées et tu peux inviter des amis via leur email ( https://tailscale.com/kb/1084/sharing )

Y'a pas de centralization des flux plus besoin de VPS,  tout ce fait en P2P, tailscale ne servant qu'a configurer les clients Wireguard dans chaque machine.
Ca marche meme d'une machine derriere un  NAT a une autre machine derriere NAT sans ouvrir aucun port.
Titre: Quelle technologie VPN choisir afin de servir un service self hosted via un VPS
Posté par: Darkjeje le 17 février 2021 à 22:12:01
on est en 2021: Wireguard (a la mano ou via Tailscale).
c'est 10x plus simple que n'importe quoi d'autre et aussi performant en plus d'être chiffré.

Avec Tailscale , tu mets le client sur toutes les machines concernées et tu peux inviter des amis via leur email ( https://tailscale.com/kb/1084/sharing )

Y'a pas de centralization des flux plus besoin de VPS,  tout ce fait en P2P, tailscale ne servant qu'a configurer les clients Wireguard dans chaque machine.
Ca marche meme d'une machine derriere un  NAT a une autre machine derriere NAT sans ouvrir aucun port.

Rapide question hors sujet pour toi kgersen.
On peut installer wireguard sur un QNAP sans passer par docker ? Car j'ai pas l'impression que Wireguard soit supporté d'après mes rapides recherches ?
Titre: Quelle technologie VPN choisir afin de servir un service self hosted via un VPS
Posté par: Hugues le 17 février 2021 à 22:36:23
on est en 2021: Wireguard (a la mano ou via Tailscale).
c'est 10x plus simple que n'importe quoi d'autre et aussi performant en plus d'être chiffré.
Je fais du Wireguard aussi, je ne vois pas en quoi c'est plus simple qu'un tunnel stateless comme GRE.
Et le chiffrement fait perdre des perfs, c'est des maths, c'est factuel.

Je ne vois pas en quoi être un 2021 devrait être un prétexte pour faire des usines à gaz qui vont carrément taper des services externes.
Titre: Quelle technologie VPN choisir afin de servir un service self hosted via un VPS
Posté par: kgersen le 18 février 2021 à 08:54:00
Rapide question hors sujet pour toi kgersen.
On peut installer wireguard sur un QNAP sans passer par docker ? Car j'ai pas l'impression que Wireguard soit supporté d'après mes rapides recherches ?

aucune idée. Je ne connais pas les NAS QNAP.
Mais a la vue de https://github.com/ivokub/tailscale-qpkg, je dirais oui (ils utilisent Docker pour build le client tailscale (qui inclus wireguard) mais pas pour le run on dirait. essai avec wireguard-go dans ce cas, il me semble que tailscale l'utilise aussi).

Je fais du Wireguard aussi, je ne vois pas en quoi c'est plus simple qu'un tunnel stateless comme GRE.
Et le chiffrement fait perdre des perfs, c'est des maths, c'est factuel.

Je ne vois pas en quoi être un 2021 devrait être un prétexte pour faire des usines à gaz qui vont carrément taper des services externes.

question de qui fait quoi et de temps a y consacrer. Tout le monde n'est pas forcement toi ou n'a pas forcement le temps ou l'envi de passer des heures a installer puis gérer et maintenir un vps et des configs manuelles.

vu qu'il passe déjà par Clouflare , aka "une usine à gaz qui utilise un service externe", c'est qu'il n'est pas hostile a ce genre de solutions simples et "turnkey".

Le but ici est de donner un max de solutions possibles sachant que la 'meilleure' n'existe pas et dépend de plein de paramètres, notamment humains.

Pour ce qui est des tunnels GRE, j'en ai conseillé pendant longtemps, avant  les années 2000 même. J'en ai mis en place partout jusqu'au jour ou je l'ai regretté fortement a cause du non chiffrement. Même en situation 'perso' et pas pro, je ne recommanderai plus jamais de faire du GRE non chiffré. Chacun a son vécu sur ce sujet.

En plus le besoin exprimé parle de serveurs de jeux vidéo pas de transfert haut-débit...donc  niveau perfs entre un GRE et wireguard ca doit pas se sentir...
Titre: Quelle technologie VPN choisir afin de servir un service self hosted via un VPS
Posté par: Mihoko-Okayami le 18 février 2021 à 09:26:36
Pas vraiment chaud pour un service externe en plus :-X

Au passage, si la solution de me "cacher"derrière un petit VPS low budget avec un tunnel & du port forwarding s'avère réellement concluante,
je pense également m'affranchir de Cloudflare pour servir mon 80/443 via cette solution également ( n'ayant pas un réel besoin de CDN ).

Je vais faire plusieurs essais ( GRE / L2TP / Wireguard ) et voir le niveau de performance ( débit / consommation / stabilité ),
bien qu'avec les performances aléatoires d'un VPS low budget, mes résultats risquent de ne pas être vraiment fiables ...

C'est dommage, du self hosting, il ne me reste plus que le plaisir de maintenir quelques machines ;D c'est tellement la jungle dehors
que sans se protéger derrière ce genre de solutions centralisatrices #OVH ( qui du coup, retire un gros argument au "pourquoi le self hosting" ),
je risque encore de me voir refuser la commande d'extinction des lumières par Siri car quelqu'un test un ip stresser sur mon adresse IP ...

---

Edit : pour Wireguard, le VPS étant sous OpenVz, chargement du module kernel impossible ( try plusieurs petites bidouilles sans succès )
Titre: Quelle technologie VPN choisir afin de servir un service self hosted via un VPS
Posté par: kgersen le 18 février 2021 à 11:31:19
Pas vraiment chaud pour un service externe en plus :-X

oui tailscale n'est qu'un plus pour configurer wireguard, tu peux le faire  a la main directement si tu veux le fun.

coté perf, wireguard sur un VPS OVH 1 core j'atteint les limites de la BP du VPS ( 100 Mbps) avec 30% du cpu avec iperf3.
C'est VPS 2016 SSD 1 donc pas récent.
En direct sans wireguard j'ai 15% du cpu avec iperf3.
donc, a la louche, wireguard rajoute 15% de cpu pour  100Mbps.
Titre: Quelle technologie VPN choisir afin de servir un service self hosted via un VPS
Posté par: Mihoko-Okayami le 18 février 2021 à 11:48:26
En effet, 15% d'utilisation CPU sur un petit VPS, c'est très correct !
Merci pour les informations kgersen.
Titre: Quelle technologie VPN choisir afin de servir un service self hosted via un VPS
Posté par: Douks le 25 février 2021 à 16:53:41
Ben hamachi cébien ?

J'ai fais quelque chose de semblable avec Wireguard (faut d'avoir réussi à monter un tunnel L2TP sans chiffrement. Aheum aheum  :-X). Le serveur est sur une instance stardust et ça tourne correctement, mais le trafic sur celui-ci reste léger.

J'en ai un second pour un (ex) serveur de jeu hébergé sur une brêle OneProvider, toujours avec Wireguard malheureusement (mais vu les perf du serveur, je m'en fiche un peu de l'utilisation du CPU). Les pings affichés en jeu n'ont quasiment pas bougés, ils se sont un peu améliorés pour l'Asie. J'ai même vu des joueurs d'autres pays arriver (hasard ou pas).

Je ne sais pas si c'est considéré comme une façon de faire "propre" par les pros du réseau, mais en tout cas c'est bien pratique pour ajouter un peu de protection ou pour "avoir" plusieurs IP à la maison

Citation de: kgersen
Même en situation 'perso' et pas pro, je ne recommanderai plus jamais de faire du GRE non chiffré.
Mais du coup, si ce qui passe dedans est déjà chiffré à la base (HTTPS au hasard), ça sert à rien de chiffrer au dessus de ça ?!
Titre: Quelle technologie VPN choisir afin de servir un service self hosted via un VPS
Posté par: Mihoko-Okayami le 25 février 2021 à 18:44:38
De mon côté, je ne vous partage pas encore mon retour d’expérience car je galère avec le port forwarding via iptables pour Wireguard  ;D
( le but étant de n'avoir que quelques services de la machine via le tunnel Wireguard )
Titre: Quelle technologie VPN choisir afin de servir un service self hosted via un VPS
Posté par: Douks le 26 février 2021 à 15:47:43
De mon côté, je ne vous partage pas encore mon retour d’expérience car je galère avec le port forwarding via iptables pour Wireguard  ;D
( le but étant de n'avoir que quelques services de la machine via le tunnel Wireguard )
Tu galères sur quoi ?

Si jamais ça peut donner une piste je mets une copie de ce que j'utilises de mon côté pour SRCDS. Avant de me faire fouetter, je précise et j'insiste : c'est juste pour donner un exemple. Il manque potentiellement des trucs, ça pourrait être plus propre/plus sécurisé/plus faire le café/... Des commentaires ne veulent rien dire, des lignes sont fausses (probablement celles en commentaire)

#!/bin/bash
modprobe ip_conntrack
modprobe ip_conntrack_ftp

# Vider les tables actuelles
iptables -F

#Vider les regles
iptables -X

# Tout interdire
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD ACCEPT
iptables -t filter -P OUTPUT ACCEPT

# Sécurité
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -m state --state INVALID -j DROP

# NE pas casser les conn etablies
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

#  Wireguard
iptables -t filter -A INPUT -p tcp --dport 51820 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 51820 -j ACCEPT

#Ping
iptables -t filter -A INPUT -p icmp -j ACCEPT

#SSH
iptables -t filter -A INPUT -p tcp --dport 2244 -j ACCEPT

# PBS
iptables -t filter -A INPUT -p tcp --dport 8007 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 82 -j ACCEPT

# WEB
#iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT

#WEBS
#iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -t nat -D PREROUTING 1
iptables -t nat -D PREROUTING 1
iptables -t nat -D PREROUTING 1
iptables -t nat -D PREROUTING 1
iptables -t nat -D PREROUTING 1
iptables -t nat -D PREROUTING 1
iptables -t nat -D PREROUTING 1
iptables -t nat -D PREROUTING 1
iptables -t nat -D PREROUTING 1
iptables -t nat -D PREROUTING 1
iptables -t nat -D PREROUTING 1
iptables -t nat -D PREROUTING 1
iptables -t nat -D PREROUTING 1
iptables -t nat -D PREROUTING 1
iptables -t nat -D PREROUTING 1

#iptables -t nat -A PREROUTING -i eno1  -p tcp -m multiport ! --dports 53,22,8007,51820 -j DNAT --to-destination 192.168.2.2
#iptables -t nat -A PREROUTING -i eno1  -p udp -m multiport ! --dports 53,22,8007 -j DNAT --to-destination 192.168.2.2

############################################
#                   MAIL
############################################
iptables -t nat -A PREROUTING -i eno1 -p tcp --dport 53 -j DNAT --to-destination 192.168.2.3
iptables -t nat -A PREROUTING -i eno1 -p udp --dport 53 -j DNAT --to-destination 192.168.2.3
iptables -t nat -A PREROUTING -i eno1 -p tcp --dport 25 -j DNAT --to-destination 192.168.2.3
iptables -t nat -A PREROUTING -i eno1 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.3
iptables -t nat -A PREROUTING -i eno1 -p tcp --dport 443 -j DNAT --to-destination 192.168.2.3
iptables -t nat -A PREROUTING -i eno1 -p tcp --dport 587 -j DNAT --to-destination 192.168.2.3
iptables -t nat -A PREROUTING -i eno1 -p tcp --dport 993 -j DNAT --to-destination 192.168.2.3
iptables -t nat -A PREROUTING -i eno1 -p tcp --dport 4190 -j DNAT --to-destination 192.168.2.3

############################################
#                  SRCDS
############################################
iptables -t nat -A PREROUTING -i eno1 -p udp --dport 1200 -j DNAT --to-destination 192.168.2.2
iptables -t nat -A PREROUTING -i eno1 -p udp -m multiport --dport 27000:27015 -j DNAT --to-destination 192.168.2.2
iptables -t nat -A PREROUTING -i eno1 -p tcp -m multiport --dport 27015:27016 -j DNAT --to-destination 192.168.2.2
iptables -t nat -A PREROUTING -i eno1 -p udp --dport 27020 -j DNAT --to-destination 192.168.2.2
iptables -t nat -A PREROUTING -i eno1 -p tcp -m multiport --dport 27030:27039 -j DNAT --to-destination 192.168.2.2

############################################
#                  ISPCONFIG
############################################
#iptables -t nat -A PREROUTING -i eno1 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.4
#iptables -t nat -A PREROUTING -i eno1 -p tcp --dport 8080 -j DNAT --to-destination 192.168.2.4



La répétition de iptables -t nat -D PREROUTING 1 c'est ma façon dégueu de supprimer les règles avant de les recréer sinon elles s'entassent. C'est notamment pour ça que je dis qu'il doit manquer des trucs.
Titre: Quelle technologie VPN choisir afin de servir un service self hosted via un VPS
Posté par: jeremyp3 le 27 février 2021 à 00:32:02

La répétition de iptables -t nat -D PREROUTING 1 c'est ma façon dégueu de supprimer les règles avant de les recréer sinon elles s'entassent. C'est notamment pour ça que je dis qu'il doit manquer des trucs.

en fait il faut refaire ce que tu as fait en haut aussi dans la table nat:
iptables -t nat -f
iptables -t nat -x
Titre: Quelle technologie VPN choisir afin de servir un service self hosted via un VPS
Posté par: kgersen le 27 février 2021 à 18:08:38
Tu peux utiliser ufw en frontal d'iptables si tu galeres avec iptables.

Citer
le but étant de n'avoir que quelques services de la machine via le tunnel Wireguard

exemple:
sudo ufw deny in on wg0
sudo ufw allow in on wg0 to any port 80 proto tcp
sudo ufw allow in on wg0 to any port 81 proto tcp from 192.168.0.0/16
=
block toute entrées sur wg0
autorise le port 80/tcp en entrée sur wg0 depuis n'importe ou
autorise le port 81/tcp en entrée sur wg0 que depuis 192.168.0.0/16

Apres l'évolution d'iptables c'est nftables mais peu de gens s'y mettent...ca peut être l'occasion.

Mais du coup, si ce qui passe dedans est déjà chiffré à la base (HTTPS au hasard), ça sert à rien de chiffrer au dessus de ça ?!

en non chiffré:
- tu vois les IP destinations du trafic HTTPS
- et y'a rarement que HTTPS qui passe, souvent y'a du DNS aussi voir des trucs non prévus et non chiffrés.