Ayant récemment eu la fibre à 300mbps symétrique chez moi, j'ai décider de supprimer mon serveur dédié que j'avais depuis quelques années pour tout héberger chez moi.
Le problème étant que chez orange, je n'ai pas d'IP fixe. J'aurais bien évidemment pu utiliser un DNS dynamique, ou même créer un script pour utiliser mon nom de domaine chez mon registar, mais je ne me voyais pas exposer mon IP publique directement sur internet.
J'ai donc chercher une autre solution, ma première idée a été de créer un serveur VPN sur un petit VPS chez scaleway, mais les performances n'était pas au rendez-vous. Autant la vitesse de téléchargement du VPS vers mon serveur était correcte, mais dans l'autre sens c'était catastrophique, je dépassais pas les 50ko/s avec une perte de paquet assez importante.
Malgré de nombreux essais, je n'ai pas réussi à améliorer ces performances.
Après beaucoup de recherche, j'ai donc trouvé un moyen via le ssh forwarding, mais de manière inverse.
De base nous utilisons ce système pour pouvoir monter un port externe en local, pour accéder à un service à distance, ou même outrepasser certaines restriction, comme Plex, qui demande un compte premium pour un accès à distance.
Mais avec le reverse forwarding, nous montons un port local, vers un port externe.
Bon allez, on commence
Préparation du VPS
Nous avons un petit paramètre à ajouter sur le service ssh de notre VPS :
GatewayPorts clientspecified
Ce paramètre permet justement l'utilisation du reverse port forwarding. Par défaut il est à no
.
Nous avons deux autres possibilités, yes
ou clientspecified
, le premier permets seulement de monté le port sur toute les interfaces, tandis que le deuxième permet de choisir sur quoi écouter, comme localhost par exemple.
Puis on relance le service :
systemctl restart sshd
Et c'est tout
Sur mon serveur
J'ai par exemple mon jenkins qui tourne sur le port 9010, pour pouvoir le monté sur mon VPS, c'est relativement simple :
ssh -fN -R 9010:localhost:9010 xataz@X.X.X.X
-fN
permets de laisser ssh en arrière plan.-R
permets le montage du port (à l'inverse de -L).RemoteIP:RemotePort:LocalIP:LocalPort
ouDestination:Source
Et voilà, le port est monté sur le VPS.
Si par exemple je veux le monter seulement en localhost :
ssh -fN -R localhost:9010:localhost:9010 xataz@X.X.X.X
Pour faciliter la gestion, j'ai créer un petit service systemd nommé sshf (Oui j'ai été très inspiré) :
[Unit]
Description=SSH forwarding for tunnel for %i
Wants=network-online.target
[Service]
User=xataz
Type=forking
ExecStart=/usr/bin/ssh -i /home/xataz/.ssh/id_rsa -fN -R localhost:%i:localhost:%i xataz@X.X.X.X
Restart=always
[Install]
WantedBy=multi-user.target
Et comme ça il me suffit de lancer le service, et de l'activer :
systemctl start sshf@9010
systemctl enable sshf@9010
Conclusion
Grace à mon reverse proxy que j'ai mis sur le VPS, je peux maintenant accéder à mes services qui sont directement chez moi, et ceux sans exposer mon IP.
Comments
re: Reverse port ssh forwarding
@xataz C’est quoi l’intéret de “planquer son adresse IP” ?
Avec Orange en fibre tu as une ip fixe si tu utilises ton propre routeur et non la box.
re: Reverse port ssh forwarding
@lord @xataz Perso avec Orange fibre et la box, j’ai une IPv4 quasi-fixe (elle a changé une fois en 6 mois suite à un reboot de la box), et une IPv6 fixe (encore heureux).
Et je plussoie, pourquoi s’emmerder à cacher son IP ? Ça change quoi ? breizh.me et tous ses sous-domaines pointent directement sur ma box en v4 (qui renvoie sur mon Pi), et directement sur le Pi en v6.
re: Reverse port ssh forwarding
@breizh @lord @xataz ( /me poke le vrai @xataz )
re: Reverse port ssh forwarding
@xataz
un des intérêts c'est que le serveur d’auto-hébergement peut être mobile !
une panne ? je le pose chez mon {voisin;collègue;parent} et ça remarche direct !
l'inconvénient, c'est qu'il faut que le débit du VPS suive...
@lord c'est quoi ton histoire de ton propre routeur et pas ta bose ? car au final, c'est l'opérateur qui choisi quelle IP il te donne...
@breizh les IP chez orange sont fixe ? je croyais que c'était un service payant 🤔
re: Reverse port ssh forwarding
@Yanux @xataz @breizh C’est la Livebox qui demande le changement d’IP et pas le réseau qui demande à la box de changer d’ip. J’ai la même ip depuis plus de trois ans sans avoir d’option particulière, j’utilise juste un routeur perso.
re: Reverse port ssh forwarding
@Yanux @xataz @lord Mon Pi peut être mobile, la v4 est en DynDNS, la v6 c’est rapide à changer (à priori on peut aussi la faire en DynDNS, mais je me suis pas penché sur la question). D’ailleurs, ça a déjà bougé, quand je suis parti de chez mes parents.
Non les IPv4 chez Orange ne sont pas fixe (un reboot peut la faire changer) par contre la v6 semble l’être. En tout cas, ma v6 a pas bougé pendant 6 mois malgré les reboot. Et la v4 a changé que lors d’un des reboots (sur trois).
re: Reverse port ssh forwarding
@lord@pleroma.lord.re Pour moi l'IP c'est comme mon adresse postale. Même si je ferme bien toute les portes, fenêtres, volets et allume l'alarme, je n'ai pas envie de la rendre publique pour autant.
Par contre je ne savais pas pour l'IP fixe avec un autre modem/routeur, mais j'ai des doutes. Pour moi c'est pas la box qui demande une nouvelle IP, c'est que cette attribution est faite par dhcp, donc effectivement si celle-ci n'a pas été négocié par une autre, il peut te la redonner. Je pense que si tu coupes ton modem pendant 1 jour ou 2, tu auras une nouvelle IP par la suite.
re: Reverse port ssh forwarding
@xatazJ'ai déjà eu une coupure d'une semaine (fibre coupée dans la rue) et j'ai bien récup ma bonne vieille ip4.