quand on a une box qui ne fait pas le PAT et un autre serveur Web 

 

ATTENTION !

Un autre problème détecté : la configuration est perdue au redémarrage.

Une correction est apportée à ce problème...

 

ATTENTION !

La méthode donnée auparavant (utilisant le port 8083) pose un problème de conflit avec les périphériques ZWave qui utilisent aussi ce port.

Je vous donne une nouvelle méthode qui fonctionne à tous les coups !!!

 

Introduction – Présentation

Voici une question qui a été posée sur des forums et pour laquelle les solutions proposées ne fonctionnent pas pour mon cas.
Plus précisément, il est possible d’accéder à la box Jeedom de l’extérieur de son réseau local en transférant les requêtes reçues par la box Internet vers la box Jeedom.
Tout va bien tant que l’on utilise le port 80 (standard HTTP) uniquement pour la domotique.
Les choses se corsent quand ce port est déjà utilisé par un serveur WEB et qu’on ne souhaite pas lui attribuer un port autre que le port standard.
Ceci peut être résolu, avec la plupart des box Internet en translatant non seulement l’adresse IP mais aussi le port TCP utilisé.

Dans ce cas, il suffit d’utiliser la table de transfert suivante (sur la box Internet) :

Port d’entrée Adresse de sortie Port de sortie
80 <IP du serveur Web> 80
8080 <IP de la Jeedom> 80

 

 

 

Pour les box qui ne transfèrent pas le port TCP

La procédure que je vais proposer doit fonctionner pour les box Internet qui ont la même lacune que la box de Numéricable : elle propose le NAT (transfert d’adresse IP) sans offrir le PAT (transfert de port TCP/UDP). Si vous voulez la solution sans chercher à comprendre, cliquez ici.

Voici donc un réseau local illustrant cette problématique :

 Accs Jeedom extrieur avec Box Numericable et autre serveur Web

Avec la table de DHCP fixe suivante (sur la box Internet) :

Serveur Web 192.168.0.50
Jeedom 192.168.0.40
PC Portable 192.168.0.10
Tablette 192.168.0.11
Smartphone 192.168.0.12

 

 

 

 

 

Nous allons attribuer le port 8080 à la Jeedom. Dans le cas d’une box n’offrant pas le PAT, nous avons la table de transfert suivante (sur la box Internet) :

Port d’entrée Adresse de sortie
80 <IP du serveur Web>
8080 <IP de la Jeedom>

 

 

 
Mais cette solution ne fonctionne pas. En effet, la Jeedom n’écoute pas le port 8080.

J'avais pensé à modifier les ports d'écoute, mais en réalité, il suffit de rediriger (en local) le port choisi vers le port 80 de la jeedom grâce aux IPTABLES.
Mais quel port utiliser ?
Si on liste les règles d'IPTABLES, on s'aperçoit que les ports ouverts au préroutage commencent à 10079. Je vais donc choisir le port 10080.

Il faut donc ajouter une règle IPTABLES afin de faire ceci (connexion SSH sur la Jeedom) :

jeedom@jeedom:/$ sudo iptables -t nat -I PREROUTING -d 192.168.0.40 -p tcp --dport 10080 -j DNAT --to 192.168.0.40:80

Il faut ensuite sauvegarder cette règle :

jeedom@jeedom:/$ sudo -s iptables-save -c

 

Enfin, il faut que cela fonctionne en entrée : nous allons donc configurer la Box pour qu'elle translate les requètes sur le port 10080 vers l'adresse IP de la Jeedom :

Port d’entrée

Adresse de sortie
80 <IP du serveur Web>
10080 <IP de la Jeedom>

 

Tentons maintenant d’accéder à la Jeedom avec un navigateur du réseau local :

http://192.168.0.40

Et cela fonctionne !!!

Essayons maintenant de l’extérieur :

http://A.B.C.D:10080

(en remplaçant A.B.C.D par l’adresse IP publique de la box Internet)

 

Mais cela ne fonctionne pas après un redémarrage de la box !
Il faudrait saisir cette commande à chaque démarrage ou... demander à la box de lancer cette commande à chaque démarrage.

Le plus simple pour ce faire est d'ajouter la commande au script "/etc/rc.local".

Pour cela, il faut lancer un éditeur pour ce fichier :

jeedom@jeedom:/$ sudo nano /etc/rc.local

 

Ensuite, il faut y ajouter les lignes en gras et rouge dans le fichier :

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Add to nat 10080 port to 80 port
iptables -t nat -I PREROUTING -d 192.168.0.48 -p tcp --dport 10080  -j DNAT --to 192.168.0.48:80

 

exit 0

Pour sauvegarder le fichier, faire "[CTRL]+[X]", puis "Y" et "[ENTRER]".

 

Pour résumer

Voyons donc ce que ça donne en modifiant tous les paramètres :

    • Tableau des transferts d’adresses (sur la configuration NAT de la box Internet) :

Port d’entrée Adresse de sortie
80 <IP du serveur Web>
10080 <IP de la Jeedom>

 

 

 

 

    • Configuration d'IPTABLES (en se connectant en SSH à la Jeedom) :

jeedom@jeedom:/$ sudo nano /etc/rc.local

 

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Add to nat 10080 port to 80 port
iptables -t nat -I PREROUTING -d 192.168.0.48 -p tcp --dport 10080  -j DNAT --to 192.168.0.48:80

 

exit 0

 

"[CTRL]+[X]", puis "Y" et "[ENTRER]"

   
© Le Farfadet fou !!!