Sur la redirection de port, l’interface de la Fritz-Box s’ouvre.
Situation suivante : Nextcloud ou un serveur web Apache fonctionne sur mon serveur domestique. La redirection de port est configurée. Le domaine externe pointe avec un CNAME vers l’adresse de la Fritzbox ou du routeur.
Le problème : redirection de port, la Fritzbox s’annonce
En déplacement, tout fonctionne. Depuis l’extérieur, je peux y accéder avec “subdomain.domain.de”. Ce n’est que dans le réseau domestique que l’interface utilisateur de la Fritzbox apparaît. Bien sûr, je peux utiliser l’adresse IP dans le réseau interne, mais par exemple pour le client Nextcloud sur l’ordinateur portable, c’est stupide, car j’ai alors une autre adresse de serveur en interne qu’en externe.
Une possibilité est de reconfigurer le serveur Apache pour qu’il ne fonctionne pas sur le même port que la Fritzbox. Mais je ne voulais pas, alors j’ai cherché une possibilité de rediriger un port local. C’est-à-dire que dans l’exemple, je libère le port 8443 via la Fritzbox et je le redirige vers le serveur. Cependant, le serveur fonctionne sur le port 443 (https).
Rediriger le port local
La solution est “socat”, le logiciel permet de rediriger un port local vers un autre port local. Commençons par installer le logiciel :
sudo apt update sudo apt install socat
Ensuite, nous redirigeons le port 8443 vers 443 :
socat tcp-listen:8443,reuseaddr,fork tcp:localhost:443
Jusqu’ici tout va bien, mais la redirection disparaît dès que la commande est terminée. Nous pouvons noter un & à la fin, un processus est alors lancé, mais seulement tant que l’ordinateur ne redémarre pas.
Créer un service Systemd
Pour exécuter maintenant le script au démarrage du système, nous créons un script. Il a le contenu suivant, important que & à la fin.
#!/bin/bash socat tcp-listen:8443,reuseaddr,fork tcp:localhost:443 &
Nous pouvons par exemple créer le script sous /root/socat.sh et le rendre ensuite exécutable :
sudo vim /root/socat.sh sudo chmod +x /root/socat.sh
Nous allons maintenant créer un service. Nous y créons un nouveau fichier texte :
sudo vim /etc/systemd/system/socat.service
Le contenu ressemble à ceci, à adapter si nécessaire :
[Unité] Description=socat script [Service] ExecStart=/root/socat.sh Type=oneshot RemainAfterExit=yes [Install] WantedBy=multi-user.target
Ensuite, nous pouvons activer le service :
sudo systemctl daemon-reload sudo systemctl enable socat.service
C’est terminé ! Après le redémarrage, le service est maintenant disponible. Si ce n’est pas le cas, nous pouvons le vérifier avec la commande suivante :
sudo systemctl status socat.service