IBM Cloud Docs
Considerazioni sulla pianificazione per i server VPN

Considerazioni sulla pianificazione per i server VPN

Esaminare le considerazioni riportate di seguito prima di creare un server VPN da client a sito.

Considerazioni sul ridimensionamento

La larghezza di banda di aggregazione è di 600 Mbps per una VPN autonoma e 1200 Mbps per un server VPN ad alta disponibilità. Il numero massimo di client attivi è 2000. Se hai bisogno di più larghezza di banda o hai più client che devono connettersi al server VPN, puoi creare più server VPN nello stesso VPC o in diversi VPC in regioni diverse.

Considerazioni sulla configurazione VPC esistente

Decidi se hai bisogno di accedere agli endpoint del servizio e agli endpoint IaaS dal tuo cliente. Questi endpoint si connettono in modo sicuro ai servizi IBM Cloud sulla rete privata IBM Cloud. Se hai bisogno di accedere a questi endpoint, devi specificare gli indirizzi del server DNS 161.26.0.10 e 161.26.0.11 quando esegui il provisioning del server VPN. Per i dettagli, vedi Endpoint del servizio e EndpointIaaS.

Devi anche decidere se devi risolvere i nomi DNS privati dal tuo client. IBM Cloud DNS Services fornisce DNS privato agli utenti VPC. Se hai bisogno di accedere a questi endpoint, devi specificare gli indirizzi del server DNS 161.26.0.7 e 161.26.0.8 quando esegui il provisioning del server VPN. Per i dettagli, vedi Informazioni su DNS Services.

Quando si specifica questo server DNS, è necessario anche creare un instradamento VPN dopo il provisioning del server VPN, con la destinazione 161.26.0.0/16 e l'azione translate.

Considerazioni sul provisioning del server VPN

Considerare quanto segue quando si esegue il provisioning di un server VPN.

Pool di indirizzi IPv4 del client

Quando si crea un server VPN, viene richiesto un pool di indirizzi IPv4 del client (intervallo CIDR). Al client viene assegnato un indirizzo IP per la relativa sessione da questo pool di indirizzi. Tenere presente che la proprietà del pool di IP client non deve sovrapporsi ai prefissi di indirizzo VPC. Il servizio VPN convalida l'indirizzo IP del client se il pool IP del client si sovrappone con un prefisso di indirizzo esistente.

Esaminare i seguenti requisiti:

  • A ogni client VPN attivo viene assegnato un indirizzo IP da un lotto IP configurabile. È necessario selezionare attentamente l'intervallo CIDR IP per assicurarsi che non si sovrapponga al prefisso VPC e al CIDR locale del dispositivo personale.
  • A seconda del caso di utilizzo, il pool di IP client non può sovrapporsi all'indirizzo IP della periferica locale del cliente. Anche il pool IP client non può sovrapporsi alla rete di destinazione; ad esempio, se il server VPN viene utilizzato per accedere alla rete classica IBM Cloud, l'IP client non può sovrapporsi alla rete classica IBM Cloud.
  • È necessario assicurarsi che la dimensione del blocco sia almeno /22 (1024 indirizzi IP liberi). Si consiglia di utilizzare un blocco CIDR che contiene il doppio del numero di indirizzi IP richiesti per consentire il massimo numero di connessioni simultanee.

Sottoreti: alta disponibilità rispetto alla modalità autonoma

Quando si crea un server VPN, è possibile specificare l'alta disponibilità o la modalità autonoma.

  • Se selezioni la modalità alta disponibilità, devi distribuire il server VPN tra due sottoreti in zone differenti. Utilizzare questa modalità per le installazioni di produzione. Ideale per le distribuzioni su più zone e le soluzioni in cui l'accesso VPN al client è fondamentale.
  • Se selezioni la modalità autonoma, distribuisci il server VPN in una singola sottorete e zona. Utilizzare questa modalità per una distribuzione pilota, non di produzione, in cui non è richiesta la resilienza multizona.

Autenticazione server VPN

È necessario specificare un certificato server VPN durante il provisioning. Puoi creare un certificato utilizzando IBM Cloud Secrets Managero utilizzarne uno tuo.

Se si utilizza la CLI o l'API, è necessario specificare il CRN del certificato. Per ottenere il CRN del certificato, consultare Individuazione del certificato CRN.

Se il server VPN utilizza solo l'autenticazione ID utente e codice di accesso, devi solo specificare il certificato del server VPN, che include la chiave pubblica / privata e il certificato CA. Il servizio VPN ottiene le chiavi pubbliche e private dall'istanza certificato e le archivia nel server VPN. Questo certificato CA viene copiato anche nel profilo client in modo che il client possa utilizzare il certificato CA per verificare il server VPN.

Se l'autenticazione del certificato è abilitata, è necessario specificare il certificato CA del client. La chiave pubblica e la chiave privata non sono richieste. Il servizio VPN ottiene il certificato CA client da Secrets Manager. A sua volta, il client presenta la propria chiave pubblica quando si connette con il server VPN e il server VPN utilizza il certificato CA per verificare la chiave pubblica.

Se il certificato del server VPN e del client sono firmati dalla stessa CA, l'amministratore può utilizzare la stessa istanza del certificato quando esegue il provisioning del server VPN.

Per ulteriori informazioni, consultare Impostazione dell'autenticazione client - server.

Autenticazione client VPN

Come amministratore del server VPN, è necessario scegliere almeno un metodo di autenticazione e configurarlo durante il provisioning del server VPN. È possibile scegliere un certificato client, una sicurezza aggiunta con un ID utente e un passcode o entrambi i tipi di autenticazione client.

Più client VPN possono condividere un certificato client.

Se si intende utilizzare il certificato client, l'utente deve modificare il profilo client fornito dall'amministratore del server e includere il certificato client (chiamato anche chiave pubblica) e la chiave privata. Notare che la modifica del profilo client non è necessaria se si utilizza solo l'autenticazione client "ID utente e codice di accesso".

Quando viene utilizzato un certificato privato per l'autenticazione client, l'amministratore non deve modificare il profilo client. Invece, l'amministratore può scaricare il profilo client con il certificato privato unito e la chiave per tutti i certificati oppure selezionare i certificati privati e scaricare il profilo client con il certificato privato unito e la chiave per i certificati selezionati. Per ulteriori informazioni, vedere Impostazione di un ambiente VPN client e connessione a un server VPN.

Gli utenti VPN non utilizzano la password direttamente per connettersi al server VPN. Ottengono il passcode da IBM Access Manager (IAM) tramite un browser e se la MFA è abilitata, l'applicazione della MFA viene sempre eseguita tramite il browser. L'utente deve configurare correttamente l'MFA per assicurarsi che l'applicazione MFA possa essere eseguita sul browser. Dopo che un utente ottiene il codice di accesso, immette il codice di accesso sul client OpenVPN e avvia la connessione.

Il server VPN riceve il nome utente e il codice di accesso dal client VPN ed effettua una chiamata IAM per verificare il codice di accesso e l'autorizzazione con la politica IAM.

  • Il codice di accesso è una password monouso. L'utente DEVE rigenerare il codice di accesso per la riconnessione, anche se la riconnessione viene avviata dal server VPN.
  • La MFA SoftLayer non è supportata perché l'applicazione della MFA SoftLayer non viene eseguita tramite browser.

Se si utilizza l'autenticazione ID utente / codice di accesso, le attività di manutenzione forzano gli utenti a riautenticarsi recuperando e reimmettendo il codice. La connessione viene ripristinata solo dopo l'immissione del nuovo codice. Ciò è applicabile utilizzando la modalità autonoma o HA.

Elenchi di revoca dei certificati client

Facoltativamente, è possibile importare un CRL (Certificate Revocation List), che è un elenco con data e ora dei certificati che sono stati revocati da una CA (Certificate Authority). Un certificato in un CRL (Certificate Revocation List) potrebbe non essere scaduto, ma non è più considerato attendibile dall'autorità di certificazione che ha emesso il certificato. Il client VPN utilizza questo elenco per convalidare i certificati digitali.

Dopo aver importato un CRL, il client VPN utilizza questo elenco per convalidare certificati digitali. Il CRL viene salvato come stringa (non come file) nel sistema. Se è necessario scaricare il CRL in futuro, viene rinominato come <vpn_server_name>.pem.

Per ulteriori informazioni, consultare Impostazione dell'autenticazione client - server.

Protocollo di trasporto

Il livello di trasporto supervisiona la consegna dei dati da un processo su un dispositivo a un processo su un'altro dispositivo. I protocolli del livello di trasporto fungono da collegamenti tra i protocolli del livello di applicazione e i servizi forniti dalla rete. Il client VPN for VPC supporta i seguenti protocolli:

UDP è consigliato per prestazioni ottimali; TCP per affidabilità.

  • UDP (User Datagram Protocol)

    L'UDP (User Datagram Protocol) è un protocollo semplice e leggero con un sovraccarico minimo. Se un processo desidera inviare un piccolo messaggio e non si preoccupa dell'affidabilità, può utilizzare UDP. L'invio di un messaggio utilizzando UDP richiede molto meno tempo rispetto all'utilizzo di TCP. Esegue un piccolo controllo degli errori e non aggiunge alcun vantaggio ai servizi IP tranne per fornire la comunicazione da processo a processo invece della comunicazione da host a host.

  • TCP (Transmission Control Protocol)

    TCP (Transmission Control Protocol) è un protocollo di livello di trasporto affidabile ma complesso. TCP aggiunge funzioni orientate alla connessione e affidabilità ai servizi IP.

    TCP è un servizio di consegna dei flussi di dati che garantisce la consegna dei flussi di dati inviati da un host ad un altro senza duplicazione o perdita di dati. Poiché il trasferimento di pacchetti non è affidabile, viene utilizzata una tecnica nota come riconoscimento positivo con la ritrasmissione per garantire l'affidabilità dei trasferimenti di pacchetti. Questa tecnica fondamentale richiede che il destinatario risponda con un messaggio di riconoscimento mentre riceve i dati.

    Il mittente conserva un record di ogni pacchetto inviato e attende il riconoscimento prima di inviare il pacchetto successivo. Il mittente mantiene anche un timer da quando il pacchetto è stato inviato e ritrasmette un pacchetto se il timer scade. Questo timer è necessario nel caso in cui un pacchetto venga perso o danneggiato.

Modalità full rispetto a split - tunnel

Quando viene impostata una connessione VPN, viene creato un tunnel crittografato su Internet al server VPN. La connessione VPN viene visualizzata come un'interfaccia di rete virtuale per il computer in aggiunta all'interfaccia LAN esistente. Ora puoi utilizzare entrambe le interfacce simultaneamente inviando il traffico privato destinato al VPC all'interno del tunnel VPN e il traffico pubblico (traffico internet) sull'altra interfaccia (all'esterno del tunnel VPN). Quando il traffico viene suddiviso tra l'interfaccia VPN e altre interfacce, si dice che il tunneling suddiviso è in uso. Quando il tunneling suddiviso non è in uso, tutto il traffico utilizza l'interfaccia VPN, causando l'invio del traffico internet nel tunnel VPN, che è full - tunnel.

Altre considerazioni:

  • Utilizza la modalità full - tunnel (predefinita) se hai un problema di sicurezza quando il client accede a Internet senza un tunnel VPN. Il full - tunnel è di solito necessario per la conformità con gli standard normativi; tuttavia, questo approccio può essere costoso e aumenta anche il carico del server VPN.
  • In modalità split - tunnel, gli instradamenti vengono inviati al client VPN dal server VPN. In questo modo, il client OpenVPN sa quale traffico deve essere inviato nel tunnel VPN. È necessario prestare attenzione quando si aggiungono instradamenti ed evitare i loop di instradamento. Ad esempio, se l'indirizzo IP pubblico del server VPN è 3.3.3.3, non puoi aggiungere un instradamento 3.3.3.0/24 perché questo instradamento invierebbe il traffico a 3.3.3.3 che non dovrebbe passare attraverso il tunnel VPN. Idealmente, devi configurare la sottorete privata solo come una destinazione di instradamento, come una sottorete VPC, una sottorete CSE, una sottorete privata in loco e così via.
  • L'instradamento VPN viene inviato al tuo client VPN. Se il tuo client VPN ha già un instradamento con la stessa destinazione, l'instradamento "push" ha esito negativo e il traffico non può raggiungere il tuo server VPN. È necessario risolvere il conflitto di instradamento e riconnettere il client VPN. Un problema comune è se aggiungi un instradamento VPN con destinazione 0.0.0.0/0 su un server VPN in modalità split - tunnel e questo instradamento deve essere inviato al tuo client VPN. Generalmente, il client VPN ha già un instradamento con destinazione 0.0.0.0/0; pertanto, questo instradamento VPN sarà in conflitto con il tuo instradamento client VPN. Per evitare conflitti, utilizza un server VPN in modalità tunnel completo o rimuovi l'instradamento 0.0.0.0/0 sul tuo host.

Indipendentemente dalla modalità tunnel scelta, è necessario utilizzare l'API /vpn_servers/{id}/routes per definire in che modo il server VPN inoltra il traffico dal client VPN. Ad esempio, se vuoi che il traffico internet dal client attraversi il tunnel VPN, un instradamento 0.0.0.0/0 deve essere configurato utilizzando l'API degli instradamenti del servizio VPN.

Software client VPN supportato

È necessario fornire il software client VPN per gli utenti. Le seguenti versioni del software client vengono verificate per l'utilizzo:

  • Per macOS Catalina e versioni successive: OpenVPN Connect v3, OpenVPN Connect v2e Tunnelblick 3.8.4
  • Windows 8 e versioni successive OpenVPN Connect v3, OpenVPN Connect v2
  • RHEL 7.x e versioni successive: OpenVPN Connect v3, OpenVPN Connect v2e client della riga comandi OpenVPN (versione 2.4.4 e versioni successive)
  • Ubuntu 18.04 and later: OpenVPN Connect v3, OpenVPN Connect v2e client della riga di comando OpenVPN (versione 2.4.10 e successive)

Gli utenti client VPN possono scegliere un altro software client OpenVPN-2.4-compatible. Tuttavia, non è garantito che il software non elencato funzioni.

IBM Power Virtual Servers: automatizza la distribuzione del tuo workspace

È disponibile un progetto di automazione VPN da client a sito che fornisce un modulo Terraform per creare un server VPN da client a sito, consentendo agli utenti di connettersi in modo sicuro da un dispositivo onsite o remoto a uno spazio di lavoro Power Virtual Server. Il repository Github per questo progetto di automazione si trova in IBM / repository Github power - vpn - server. Questo progetto Readme file crea un server VPN e lo collega a uno spazio di lavoro Power Virtual Server nuovo o esistente, fornendo un accesso sicuro all'infrastruttura Power IBM Cloud.

Configurazione di un server VPN utilizzando Terraform

Per configurare un server VPN con Terraform, procedere come segue:

  1. Creare un'istanza di IBM Cloud Secrets Manager con un piano di prova.

  2. Generare il certificato/chiave del server e il certificato/chiave del client localmente e importarlo nell'istanza Secrets Manager, oppure generare il certificato/chiave utilizzando la funzionalità di certificato privato del servizio Secrets Manager.

    resource "ibm_resource_instance" "sec_mgr" {
      name              = "vpc-secmgr"
      service           = "secrets-manager"
      plan              = var.service_plan
      location          = var.region_name
      resource_group_id = data.ibm_resource_group.group.id
    
      timeouts {
       create = "30m"
       update = "30m"
       delete = "30m"
      }
    }
    
    resource "ibm_sm_secret_group" "sm_secret_group" {
      instance_id = ibm_resource_instance.sec_mgr[0].guid
      region      = var.region_name
      name        = "vpc-sec-group"
      description = "default secret group"
    }
    
    output "import_cert_server_crn" {
      value = ibm_sm_imported_certificate.sm_imported_certificate_server.crn
    }
    
    output "import_cert_client_crn" {
      value = ibm_sm_imported_certificate.sm_imported_certificate_client.crn
    }
    
  3. Crea un VPC con una sottorete.

    resource "ibm_is_vpc" "vpc" {
      name = "vpc-vpnserver"
     }
    
    resource "ibm_is_subnet" "subnet" {
      name                     = "mysubnet-tf"
      vpc                      = ibm_is_vpc.vpc.id
      zone                     = var.zone_name
      total_ipv4_address_count = 256
     }
    
  4. Creare un gruppo di sicurezza con regole in entrata e in uscita per consentire tutto il traffico.

    resource "ibm_is_security_group" "sg_all" {
      name = "vpc-sg-all"
      vpc  = ibm_is_vpc.vpc.id
    }
    
    resource "ibm_is_security_group_rule" "sg_rule1" {
      group     = ibm_is_security_group.sg_all.id
      direction = "inbound"
      remote    = "0.0.0.0/0"
    }
    
    resource "ibm_is_security_group_rule" "sg_rule2" {
      group     = ibm_is_security_group.sg_all.id
      direction = "outbound"
      remote    = "0.0.0.0/0"
    }
    
  5. Creare il server VPN all'interno della sottorete, il gruppo di sicurezza e i certificati server/client nell'istanza Secrets Manager.

    resource "ibm_is_vpn_server" "example" {
      certificate_crn = ibm_sm_imported_certificate.sm_imported_certificate_server.crn
    client_authentication {
      method        = "certificate"
    client_ca_crn = ibm_sm_imported_certificate.sm_imported_certificate_client.crn
    }
     client_ip_pool         = "198.168.0.0/16"
     enable_split_tunneling = true
     name                   = "terry-vpn-server"
     port                   = 443
     protocol               = "tcp"
     subnets                = [ibm_is_subnet.subnet.id]
     security_groups        = [ibm_is_security_group.sg_all.id]
     }
    
    resource "ibm_is_vpn_server_route" "cse1" {
      vpn_server  = ibm_is_vpn_server.example.id
      destination = "166.8.0.0/14"
      name        = "vpn-server-route-cse1"
     }
    
    resource "ibm_is_vpn_server_route" "cse2" {
      vpn_server  = ibm_is_vpn_server.example.id
      destination = "161.26.0.0/16"
      name        = "vpn-server-route-cse2"
     }
    
    
  6. Scaricare il profilo del client VPN e configurare il certificato e la chiave del client nel profilo del client.

    data "ibm_is_vpn_server_client_configuration" "my_vpn_client_conf" {
      vpn_server = ibm_is_vpn_server.example.id
    }
    
    resource "local_file" "my_vpn_client_conf" {
      content  = "${data.ibm_is_vpn_server_client_configuration.my_vpn_client_conf.vpn_server_client_configuration}\ncert ${path.cwd}/import_certs/client_cert.pem\nkey ${path.cwd}/import_certs/client_key.pem"
      filename = "my_vpn_server.ovpn"
    }
    

    Quindi, un utente può utilizzare il profilo client VPN con il client OpenVPN per collegare il proprio sistema client al server VPN creato.

Per ulteriori informazioni, vedi IBM Terraform Registry.