Condivisione della tecnologia

【Server】Mappatura delle porte

2024-07-12

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



1. Il concetto di mappatura delle porte

Port Mapping, noto anche come Port Forwarding, è una tecnologia che reindirizza il flusso di dati da una porta di rete a un'altra porta di rete. Viene in genere utilizzato per i servizi eseguiti dietro un firewall o un router, consentendo ai dispositivi esterni di accedere a servizi specifici all'interno della rete interna. La mappatura delle porte può essere eseguita all'interno della rete locale o attraverso reti, utilizzando protocolli come SSH.

1.1 Tipi di mappatura delle porte

  1. Inoltro porta locale

    • Mappare una porta sul computer locale su una porta sul server remoto.
    • Esempio: modificare la porta locale8080mappato sul server remoto80porta in modo che possa essere passato localmentelocalhost:8080Accedi al servizio web del server remoto.
  2. Inoltro porta remoto

    • Mappare una porta sul server remoto su una porta sul computer locale.
    • Esempio: aggiungere i file del server remoto2222Mappatura delle porte sul computer locale22porta in modo che sia possibile accedere al servizio SSH del computer locale tramite il server remoto.
  3. Inoltro porta dinamico

    • Crea un proxy SOCKS attraverso il quale è possibile accedere dinamicamente alle porte di più server remoti.
    • Esempio: creare un proxy SOCKS che consenta al browser di accedere a più siti Web di server remoti tramite il proxy.

1.2 Scenari applicativi della mappatura delle porte

  1. Accesso remoto ai servizi interni: Attraverso la mappatura delle porte è possibile accedere dalla rete esterna a servizi specifici all'interno della rete aziendale o domestica, come server web, server di database, ecc.

  2. Penetrare il firewall: Attraverso la mappatura delle porte, è possibile aggirare le restrizioni del firewall e accedere ai servizi bloccati dal firewall.

  3. Migliorare la sicurezza: La mappatura delle porte tramite tunnel SSH può crittografare la trasmissione dei dati e migliorare la sicurezza.

  4. Bilanciamento del carico e proxy: i sistemi di bilanciamento del carico e i server proxy utilizzano spesso la tecnologia di mappatura delle porte per distribuire e inoltrare il traffico per migliorare l'affidabilità e le prestazioni del servizio.

1.3 Esempio

Supponiamo che ci sia un servizio Web in esecuzione su un server remoto e che la porta su cui è in ascolto lo sia80 . Per accedere a questo servizio dal tuo computer locale, crea una mappatura della porta locale utilizzando il seguente comando SSH:

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

Questo comando modificherà i file del computer locale8080Mappatura delle porte sul server remoto80 porta.Ora accedi al tuo browser localehttp://localhost:8080, che equivale ad accedere al servizio Web del server remoto.

2. Perché è necessario eseguire la mappatura delle porte?

Esistono diversi motivi principali per eseguire la mappatura delle porte (o il port forwarding) durante lo sviluppo:

  1. Accedi ai servizi protetti: alcuni servizi sulla macchina di sviluppo possono essere in ascolto solo su localhost (127.0.0.1 ) e non è possibile accedervi direttamente dall'esterno. Attraverso la mappatura dei porti, questi servizi possono essere esposti e resi accessibili dall’esterno.

  2. sicurezza : Il port forwarding tramite tunnel SSH consente l'accesso sicuro ai servizi interni senza esporre direttamente il servizio. Il tunnel SSH crittografa la trasmissione dei dati per una maggiore sicurezza.

  3. Facile da eseguire il debug : durante il processo di sviluppo, gli sviluppatori potrebbero dover accedere a più servizi in esecuzione sul computer di sviluppo. Con la mappatura delle porte, è possibile accedere a questi servizi direttamente da locale senza dover accedere ogni volta alla macchina di sviluppo.

  4. Bypassare il firewall o le restrizioni di rete : in alcuni ambienti di rete potrebbero essere presenti firewall o restrizioni di rete che impediscono l'accesso diretto ai servizi sul computer di sviluppo. Attraverso il tunneling SSH è possibile aggirare queste restrizioni e ottenere l'accesso ai servizi.

  5. Accesso multiutente: se più sviluppatori devono accedere allo stesso servizio, la mappatura delle porte consente a ciascuno sviluppatore di accedere al servizio nel proprio ambiente locale senza accedere direttamente al computer di sviluppo.

Per esempio:

Supponiamo che tu abbia un server Jupyter Notebook in esecuzione sul tuo computer di sviluppo. È in ascolto sulla porta 7860 ma consente solo l'accesso locale. Attraverso il seguente comando SSH, puoi mappare la porta 7860 della macchina di sviluppo sulla tua porta 7860 locale:

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

In questo modo, puoi accedervi nel tuo browser locale http://127.0.0.1:7860 per visualizzare e utilizzare il server Jupyter Notebook sul computer di sviluppo.

3.Principio

3.1 [Vernacolare] Spiegazione dei principi

La macchina di sviluppo ha la suaporto espostoEIP pubblico, può essere utilizzato per la nostra connessione ssh locale

Ma nella macchina di sviluppo, cioè nel serverEseguire il programmaQuando, il suo programma è sul serversu un determinato portoIn corso

Quindi, se vogliamo vedere l'effetto di esecuzione del programma sul server localmente, dobbiamo creareMappatura dei porti, quando il browser apre la porta locale, lo inoltra alla porta del server per la visualizzazione.

3.2 Diagramma schematico

Inserisci qui la descrizione dell'immagine

4.Codice

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

Per esempio:

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

Questo comando viene utilizzato per creare un tunnel SSH. Di seguito è riportata una spiegazione dettagliata di ciascuna parte:

  • ssh: comando utilizzato per avviare una connessione SSH.
  • -p 37367: specificare il numero di porta dell'host remoto a cui connettersi (porta 37367 in questo esempio).
  • [email protected]: Nome utente (root) e nome host (ssh.intern-ai.org.cn).
  • -CNg: Combinazione di opzioni:
    • -C: Abilita la compressione.
    • -N: Dice a SSH di non eseguire comandi remoti, solo il port forwarding.
    • -g: consente agli host remoti di connettersi alla porta inoltrata.
  • -L 7860:127.0.0.1:7860: eseguire il port forwarding locale e mappare la porta 7860 del computer locale sulla porta 7860 di 127.0.0.1 dell'host remoto.
  • -o StrictHostKeyChecking=no: disabilita il controllo della chiave host, che impedisce le richieste interattive quando ci si connette per la prima volta.

In sintesi, questo comando creerà un tunnel SSH tra la macchina locale e l'host remoto, inoltrerà la porta locale 7860 alla porta 7860 dell'host remoto e non eseguirà comandi remoti né controllerà la chiave dell'host.

Come mostrato di seguito:
Dopo la mappatura delle porte, viene visualizzato il programma in esecuzione sulla porta 7860 del server.
Inserisci qui la descrizione dell'immagine