system_administration:networking:ssh_remote_port_forwarding_for_4g

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
system_administration:networking:ssh_remote_port_forwarding_for_4g [2022/03/18 15:01] – ↷ Page moved from system_administration:ssh_remote_port_forwarding_for_4g to system_administration:networking:ssh_remote_port_forwarding_for_4g azizsystem_administration:networking:ssh_remote_port_forwarding_for_4g [2023/08/17 13:14] (current) – [Créer la redirection depuis le client] aziz
Line 1: Line 1:
 +{{tag> network ssh}} 
 +
 +
 ====== Accéder à un serveur derrière un router 4G en Algérie ====== ====== Accéder à un serveur derrière un router 4G en Algérie ======
  
-[[https://unix.stackexchange.com/a/115906|{{ :system_administration:ssh_remote_port_forwarding.png?400 |}}]]+[[https://unix.stackexchange.com/a/115906|{{ :system_administration:ssh_remote_port_forwarding.png?400 }}]]
  
-En Algérie,  un serveur connecté à  internet à travers un  router 4G +En Algérie,  un serveur connecté à  internet à travers un  router 4G n'est pas accessible depuis l'extérieur (en dehors du LAN).
-n'est pas accessible depuis l'extérieur (en dehors du LAN).+
  
-C'est le cas  notamment avec l'opérateur [[https://www.djezzy.dz/entreprises/offres/pack-djezzy-modem-pro/|Djezzy]]. Même  en ouvrant et +C'est le cas  notamment avec l'opérateur [[https://www.djezzy.dz/entreprises/offres/pack-djezzy-modem-pro/|Djezzy]]. Même  en ouvrant et en redirigeant les  ports nécessaires pour une connexion  SSH ou HTTP, le serveur demeure inaccessible.
-en redirigeant les  ports nécessaires pour une connexion  SSH ou HTTP, +
-le serveur demeure inaccessible.+
  
-Il est donc  probable que les adresses IP rapportées  sur ce type de +Il est donc  probable que les adresses IP rapportées  sur ce type de modems ou en utilisant la ligne de commande soient non-adressables.
-modems ou en utilisant la ligne de commande soient non-adressables.+
  
-Une démarche  quelque peu  compréhensible si  on considère  que cela +Une démarche  quelque peu  compréhensible si  on considère  que cela permet de protéger les  devices téléphoniques, principaux clients de ce type de réseau.
-permet de protéger les  devices téléphoniques, principaux clients de +
-ce type de réseau.+
  
 Comment accéder à un serveur dans ces conditions. Comment accéder à un serveur dans ces conditions.
Line 21: Line 18:
 ===== Redirection de ports à travers un serveur distant avec SSH ===== ===== Redirection de ports à travers un serveur distant avec SSH =====
  
-Cette technique utilise la fonctionnalité de tunneling apportée en +Cette technique utilise la fonctionnalité de tunneling apportée en natif sur OpenSSH.
-natif sur OpenSSH.+
  
 +==== Paramétrage du serveur distant ====
  
-Nous initions  une connexion  depuis le serveur  en 4G  (Serveur A) +Par défaut le serveur distant n'ouvre la redirection que sur son interface locale ((https://serverfault.com/a/997135)). Ceci est insuffisant.  
-vers un serveur accessible et proprement adressable (Serveur B). Le + 
-Serveur fonctionnera  alors comme une passerelle  pour accéder au +Nous devons donc paramétrer le serveur ssh pour  que le port forwardé soit accessible sur l'interface publique avec l'instruction suivante dans le fichier de  configuration ''/etc/ssh/sshd_config'': 
-Serveur A.+ 
 +<code ini> 
 +GatewayPorts clientspecified 
 +</code> 
 + 
 + 
 +==== Créer la redirection depuis le client ==== 
 + 
 +Nous initions  une connexion  depuis le serveur  en 4G  (Serveur Hidden) vers un serveur accessible et proprement adressable (Serveur Visible). Le **Serveur Visible** fonctionnera  alors comme une passerelle  pour accéder au **Serveur Hidden**.
  
 <code bash> <code bash>
-ssh -N -f -R 11122:localhost:22 limiteduser@64.212.113.165+ssh -N -f -g -R *:11122:localhost:22 limiteduser@ip.serveur.visible
 </code> </code>
  
 +Avec cette  commande nous donnons accès au port 22  du **Serveur  Hidden** à travers le port 11122 du **Serveur Visible**.
  
-Avec cette  commande nous ouvrons  l'accès ssh  sur le Serveur  A à +L'utilisateur **limiteduser** est restreint et a **/bin/false** comme shell.
-travers le port 11122 du Serveur B.+
  
-Donc, avec la commande suivante, nous accéderons au port 22 du serveur A.+Donc, avec la commande suivante, nous nous connectons au port 22 du **Serveur  Hidden**.
  
 <code bash> <code bash>
-ssh -p 11122 userb@64.212.113.165+ssh -p 11122 userServeurHidden@ip.serveur.visible
 </code> </code>
  
-Pour maintenir  ce tunnel ouvert,  nous pouvons nous aider  avec un +Pour maintenir  ce tunnel ouvert,  nous pouvons nous aider  avec un cron job qui  testera le fonctionnement et qui  relancera le tunnel si celui-ci venait à être coupé. (( 
-cron job qui  testera le fonctionnement et qui  relancera le tunnel +[[https://www.harding.motd.ca/autossh/|autossh]]   fait théoriquement ce travail  mais les résultats n'étaient pas satisfaisants 
-si celui-ci venait à être coupé. (([[https://www.harding.motd.ca/autossh/|autossh]] fait théoriquement ce travail  +))
-mais les résultats n'étaient pas satisfaisants)) +
  
 <code bash keep_tunnel_alive.sh> <code bash keep_tunnel_alive.sh>
Line 63: Line 67:
     # ... aident à optimiser les conditions de connexion     # ... aident à optimiser les conditions de connexion
     # voir man ssh     # voir man ssh
-    timeout 60 ssh -N -f -o ControlMaster=auto \+    timeout 60 ssh -N -f -g -o ControlMaster=auto \
             -o ControlPath=/tmp/%u:%r@%h:%p \             -o ControlPath=/tmp/%u:%r@%h:%p \
             -o ControlPersist=120m \             -o ControlPersist=120m \
Line 70: Line 74:
             -o ServerAliveInterval=60 \             -o ServerAliveInterval=60 \
             -o ServerAliveCountMax=3 \             -o ServerAliveCountMax=3 \
-            -R 11122:localhost:22 \+            -R *:11122:localhost:22 \
             limiteduser@64.212.113.165             limiteduser@64.212.113.165
 fi fi
 </code> </code>
  
-Dans ce script à lancer par cron on peut intier d'autres connexions +Dans ce script à lancer par cron on peut initier d'autres connexions pour donner  accès à d'autres  ports comme une application  web par exemple.
-pour donner  accès à d'autres  ports comme une application  web par +
-exemple.+
  
 ==== Références utiles ==== ==== Références utiles ====
-  * https://www.booleanworld.com/guide-ssh-port-forwarding-tunnelling/ +  * [[https://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.multiple-links.html]] 
-  * http://linux-ip.net/html/adv-multi-internet.html +  * [[https://www.booleanworld.com/guide-ssh-port-forwarding-tunnelling/]] 
-  * http://linux-ip.net/html/tools-ip-rule.html +  * [[https://unix.stackexchange.com/a/22794]] 
-  * https://unix.stackexchange.com/questions/4420/reply-on-same-interface-as-incoming +  * [[http://linux-ip.net/html/adv-multi-internet.html]] 
-  * +  * [[http://linux-ip.net/html/tools-ip-rule.html]] 
 +  * [[https://unix.stackexchange.com/questions/4420/reply-on-same-interface-as-incoming]] 
 +  * [[https://www.ordinoscope.net/index.php/Informatique/Linux/R%C3%A9seau/Iproute/Recettes/Plusieurs_subnets_%26_plusieurs_routes]] 
 + 
  • system_administration/networking/ssh_remote_port_forwarding_for_4g.1647615676.txt.gz
  • Last modified: 2022/03/18 15:01
  • by aziz