Partage de technologie

【Serveur】 Cartographie des ports

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina



1. Le concept de cartographie portuaire

Le mappage de ports, également connu sous le nom de redirection de port, est une technologie qui redirige le flux de données d'un port réseau vers un autre port réseau. Ceci est généralement utilisé pour les services exécutés derrière un pare-feu ou un routeur, permettant aux périphériques externes d'accéder à des services spécifiques au sein du réseau interne. Le mappage des ports peut être effectué au sein du réseau local ou entre réseaux, à l'aide de protocoles tels que SSH.

1.1 Types de mappage de ports

  1. Redirection de port local

    • Mappez un port de l'ordinateur local à un port du serveur distant.
    • Exemple : Changer le port local8080mappé au serveur distant80port afin qu'il puisse être transmis localementlocalhost:8080Accédez au service Web du serveur distant.
  2. Redirection de port distant

    • Mappez un port du serveur distant à un port de l'ordinateur local.
    • Exemple : Ajouter le serveur distant2222Mappage de port vers l'ordinateur local22port afin que le service SSH de l'ordinateur local soit accessible via le serveur distant.
  3. Redirection de port dynamique

    • Créez un proxy SOCKS via lequel les ports de plusieurs serveurs distants peuvent être accédés dynamiquement.
    • Exemple : créez un proxy SOCKS qui permet au navigateur d'accéder à plusieurs sites Web de serveurs distants via le proxy.

1.2 Scénarios d'application du mappage de ports

  1. Accès à distance aux services internes: Grâce au mappage de ports, des services spécifiques au sein de l'entreprise ou du réseau domestique sont accessibles depuis le réseau externe, tels que les serveurs Web, les serveurs de bases de données, etc.

  2. Pénétrer le pare-feu: Grâce au mappage de ports, vous pouvez contourner les restrictions du pare-feu et accéder aux services bloqués par le pare-feu.

  3. Améliorer la sécurité: Le mappage des ports via le tunnel SSH peut crypter la transmission des données et améliorer la sécurité.

  4. Équilibrage de charge et proxys: Les équilibreurs de charge et les serveurs proxy utilisent souvent la technologie de mappage de ports pour distribuer et transférer le trafic afin d'améliorer la fiabilité et les performances du service.

1.3 Exemple

Supposons qu'un service Web soit exécuté sur un serveur distant et que le port sur lequel il écoute est80 . Afin d'accéder à ce service depuis votre ordinateur local, créez un mappage de port local à l'aide de la commande SSH suivante :

ssh -L 8080:localhost:80 user@remote-server
  • 1

Cette commande modifiera l'ordinateur local8080Mappage de port vers un serveur distant80 port.Maintenant, accédez-y dans votre navigateur localhttp://localhost:8080, ce qui équivaut à accéder au service Web du serveur distant.

2. Pourquoi devons-nous effectuer un mappage des ports ?

Il existe plusieurs raisons principales pour effectuer un mappage de port (ou une redirection de port) pendant le développement :

  1. Accéder aux services protégés: Certains services sur la machine de développement ne peuvent écouter que sur localhost (127.0.0.1 ) et n'est pas accessible directement de l'extérieur. Grâce à la cartographie portuaire, ces services peuvent être exposés et rendus accessibles de l’extérieur.

  2. sécurité : La redirection de port via le tunnel SSH permet un accès sécurisé aux services internes sans exposer directement le service. Le tunnel SSH crypte la transmission des données pour plus de sécurité.

  3. Facile à déboguer : Au cours du processus de développement, les développeurs peuvent avoir besoin d'accéder à plusieurs services exécutés sur la machine de développement. Grâce au mappage de ports, ces services sont accessibles directement depuis le local sans avoir à se connecter à la machine de développement à chaque fois.

  4. Contourner le pare-feu ou les restrictions réseau : Dans certains environnements réseau, il peut y avoir des pare-feu ou des restrictions réseau qui empêchent l'accès direct aux services sur la machine de développement. Grâce aux tunnels SSH, ces restrictions peuvent être contournées et l'accès aux services peut être obtenu.

  5. Accès multi-utilisateurs: Si plusieurs développeurs doivent accéder au même service, le mappage de ports permet à chaque développeur d'accéder au service dans son propre environnement local sans se connecter directement à la machine de développement.

Par exemple:

Supposons que vous disposiez d'un serveur Jupyter Notebook exécuté sur votre ordinateur de développement. Il écoute sur le port 7860 mais autorise uniquement l'accès local. Grâce à la commande SSH suivante, vous pouvez mapper le port 7860 de la machine de développement à votre port 7860 local :

ssh -p 37367 [email protected] -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no
  • 1

De cette façon, vous pouvez y accéder dans votre navigateur local http://127.0.0.1:7860 pour afficher et utiliser le serveur Jupyter Notebook sur votre machine de développement.

3.Principe

3.1 [Vernaculaire] Explication du principe

La machine de développement a son propreport exposéetIP publique, peut être utilisé pour notre connexion ssh locale

Mais dans la machine de développement, c'est-à-dire le serveurExécuter de programmeQuand, son programme est sur le serveursur un certain portEn cours

Donc, si nous voulons voir l'effet d'exécution du programme sur le serveur localement, nous devons créerCartographie des ports, lorsque le navigateur ouvre le port local, transférez-le vers le port du serveur pour visualisation.

3.2 Diagramme schématique

Insérer la description de l'image ici

4.Code

ssh -p 37367 [email protected] -CNg -L {本地机器_PORT}:127.0.0.1:{开发机_PORT} -o StrictHostKeyChecking=no
  • 1

Par exemple:

ssh -p 37367 [email protected] -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no
  • 1

Cette commande permet de créer un tunnel SSH. Vous trouverez ci-dessous une explication détaillée de chaque partie :

  • ssh: Commande utilisée pour initier une connexion SSH.
  • -p 37367: Spécifiez le numéro de port de l'hôte distant auquel se connecter (port 37367 dans cet exemple).
  • [email protected]: Nom d'utilisateur (root) et nom d'hôte (ssh.intern-ai.org.cn).
  • -CNg: Combinaison d'options :
    • -C: Activer la compression.
    • -N: Dites à SSH de ne pas exécuter de commandes à distance, uniquement la redirection de port.
    • -g: Autoriser les hôtes distants à se connecter au port transféré.
  • -L 7860:127.0.0.1:7860: Effectuez la redirection de port local et mappez le port 7860 de la machine locale au port 7860 de 127.0.0.1 de l'hôte distant.
  • -o StrictHostKeyChecking=no: désactivez la vérification de la clé hôte, ce qui empêche les invites interactives lors de la première connexion.

En résumé, cette commande créera un tunnel SSH entre la machine locale et l'hôte distant, transmettra le port local 7860 au port 7860 de l'hôte distant et n'exécutera pas de commandes distantes ni ne vérifiera la clé de l'hôte.

Comme indiqué ci-dessous:
Après le mappage des ports, le programme exécuté sur le port 7860 du serveur s'affiche.
Insérer la description de l'image ici