Inverser le sens d’une connexion TCP IP via SSH Port Foward

Inverser une connexion TCP IP permet notamment d’imaginer des architectures de connexion différentes entre une DMZ et un réseau interne.

Un exemple avec un site web publique qui aurais besoin de se connecter ponctuellement à un backoffice sur un réseau interne (ERP par exemple).

DMZ > Firewall > Serveur

Avec l’inversion; il est possible de s’abstenir d’ouvrir un port entrant depuis la DMZ vers le réseau interne.

DMZ > Relais < Firewall < Serveur

En effet, au lieu de se connecter directement au serveur cible depuis la DMZ; on va passer par un serveur relais. Ce serveur relais diffusera le service du réseau interne via un tunnel SSH sortant.

Pour parfaire la technique; il est à noter que le pont SSH peut évidemment très facilement n’être ouvert que pendant une synchronisation. Dans cette éventualité; il s’agit de prévoir l’absence du service du côté client (try/retry). Permettant de lancer la synchronisation dès disponibilité du service (initiée depuis le réseau interne).

Mise en œuvre avec SSH Port Fowarding

Configuration du serveur relais

En guise de machine relais; un simple Linux avec serveur SSH suffit.

Ajouter (ou modifier) le paramètre suivant dans le fichier /etc/ssh/sshd_config

GatewayPorts yes

Penser à relancer le service sshd après cette modification.

Cela permet d’autoriser l’accès depuis l’extérieur du serveur relais aux services partagés via le port fowarding.

Configuration du SSH Port Fowarding

Sur la machine qui porte le service à diffuser (ou un autre ayant accès à la ressource) :

ssh -R [Futur port du service sur le serveur relais]:[IP interne du service]:[Port interne du service] [utilisateur serveur relais]@[IP du serveur relais]

Et voilà le tunnel est ouverte et le restera le temps de la connexion SSH.

Ouverture

Il est également possible d’utiliser cette technique pour contourner des restrictions systèmes – attention: je ne peux que vous encourager à ne l’utiliser que légitimement ! -.

De façon classique; pour diffuser un service sur internet, il suffit de procéder à une redirection de port sur le routeur de votre opérateur.

Client > Routeur > Serveur

Si vous n’avez pas accès à l’administration du routeur; il vous reste possible de mettre en place la même logique décrite ci-dessus pour publier votre service.

Client > Relais < Routeur < Serveur

Sources

Documentation : SSH port forwarding – Example, command, server config

Jeedom & De Dietrich Diematic 3 Modbus RTC

Interfacer (en lecture/écriture) une chaudière De Dietrich (GTU 1205V par ex.) avec contrôleur Diematic 3 à Jeedom en filaire (via Modbus).

Interfacer (en lecture/écriture) une chaudière De Dietrich (GTU 1205V par ex.) avec contrôleur Diematic 3 à Jeedom en filaire (via Modbus).

Attention : Cet article contient des instructions techniques dont un mauvais usage pourrait au mieux dérégler votre chaudière au pire la rendre inutilisable. Je ne pourrais en aucun cas être tenu responsable et n’assure aucun support technique. De même vous pourrez sans doute oublier votre garantie De Dietrich / contrat de maintenance.

Pour information cette chaudière n’est pas compatible avec les thermostats connectés type « Netatmo » etc, …

Exemple non exhaustif de résultat. Le Modbus De Dietrich contient absolument tout !
Et en version statistique

Prérequis

Connaissances

  • Informatique général (dont dev PHP)
  • Raspberry PI (installation et configuration générale; dont shell linux)
  • Jeedom (installation et configuration générale)
  • Electricité & électronique général (base)

Matériel

Logiciel

  • Jeedom (ma version actuelle: 4.0.25)
    • Plugin Modbus RTU – en beta (5€)

Procédure

Branchement

Avertissement: Coupez l’interrupteur différentiel général avant toute intervention électrique!

Schéma Min DIN Modbus De Dietrich
Schéma de raccordement du Mini DIN
  • Couper votre câble Mini DIN sur une extrémité et connecter à l’adaptateur Modbus
Adpatateur modbus USB
En situation (chez moi: Rouge +, Blanc -, Noir GND )
  • Connecter l’autre extrémité du câble à votre chaudière
Prise Modbus De Dietrich

Vérification liaison Modbus

Depuis Windows

  • Brancher l’adaptateur Modbus à votre machine et recherchez son port COM. Note : Sous Windows 10 pas besoin d’installer de pilote
  • Installer et lancer le logiciel « Modscan » (version démo) sur votre PC
  • Faire Connection => Connect et suivre la configuration de l’image ci-dessous
Modscan De Dietrich
  • Vous devriez voir les valeurs du « Holding Register » évoluer (ne pas s’inquiéter des erreurs éventuelles) – Note: la chaudière a le Device ID « 10 »

Note: il existe un autre logiciel qui semble plus intuitif: Modbus Doctor

Depuis Linux

  • Brancher l’adaptateur Modbus à votre machine et rechercher son port tty. Note : pas besoin d’installer de pilote normalement
  • Installer https://github.com/epsilonrt/mbpoll (non conseillé sur le raspberry Pi du Jeedom; surcharge de dépendance inutile)
  • Adapter la commande suivante pour afficher le réseau modbus (ne pas s’inquiéter des erreurs éventuelles)

mbpoll -a 10 -b 9600 -d 8 -s 1 -P none -t 3 -o 5.00 -l 100 -r 1 -c 100 /dev/ttyUSB0

Configuration Jeedom

  • Brancher l’adaptateur RTU à votre Jeedom
  • Installer le plugin « Modbus RTU » depuis le store Jeedom (payant)
  • Lancer l’installation des dépendances
  • Démarrer le Daémon
Jeedom Modbus RTC configuration
  • Ajouter un nouvel équipement dans le plugin et configurer ainsi:
    • Note: Sélectionner le « modèle » va écraser la zone « Communication »
    • Note 2: Il est possible de se connecter à un linux distant également (non testé)
Jeedom Modbus RTC De Dietrich

Voici la table des données que vous allez pouvoir récupérer et écrire à partir de maintenant:

Jeedom Modbus RTC De Dietrich
Exemple de configuration Lecture / Ecriture pour 1 et 2 decimal

Si l’écriture ne fonctionne pas voici des fichiers de remplacement:

https://blog.winckel.fr/wp-content/uploads/2020/03/modbusrtu_diff.zip

Source et remerciements :

Cette article s’inspire principalement des sources ci-dessous. L’objectif étant de faire « l’état de l’art » sur le sujet. Du hardware au software en passant par le contenu du BUS.