Connessioni VNet to VNet

Una delle importanti novità di Microsoft Azure degli ultimi mesi è una VPN che prende il nome di VNet to Vnet. Questo tipo di VPN permette di mettere in diretta comunicazione datacenter di Region diverse se non addirittura sottoscrizioni di Azure differenti.

In questo articolo, per la stesura del quale ringrazio Nicola Ferrini, verrete guidati passo per passo nella realizzazione di una connessione VNet to VNet tra due virtual network su Azure e di una connessione tra la vostra rete On-premise e le due differenti virtual network su Azure. Uno dei vantaggi di questo tipo di implementazione consiste nell’avere sia geo-ridondanza che geo-presenza dei vostri servizi ospitati su Azure.

Nello specifico realizzeremo una rete virtuale nella Regione Europa Occidentale chiamata Rete-Europa-Occidentale e un’altra rete virtuale nella Regione Giappone Occidentale chiamata Rete-Giappone-Occidentale

image

1 – Creazione della virtual network

La prima operazione da fare è realizzare le due virtual network. Dal Portale di Azure vi basterà cliccare sul pulsante Nuovo –> Servizi di rete –> Rete Virtuale –> Creazione personalizzata

Scegliete in quale sottoscrizione di Azure volete creare la rete (ovviamente se ne avete più di una) e in quale percorso (Region). Nel mio caso ho chiamato la prima rete con il nome Rete-Europa-Occidentale, come mostrato in figura:

image

Nel passaggio successivo ci verrà chiesto se vogliamo assegnare un DNS alla rete e che tipo di rete vogliamo realizzare. Scegliamo di configurare una rete VPN Site-to-Site e decidiamo di creare una nuova rete locale, come mostrato in figura:

 

image

La rete locale che creeremo sarà la rete del nostro secondo Datacenter su Azure. Poiché voglio connettermi con il Giappone chiamo la rete Giappone e come indirizzo IP del dispositivo VPN metto un indirizzo IP temporaneo 2.2.2.2, che verrà poi sostituito con l’IP del Gateway remoto della rete virtuale che creeremo successivamamente. Scelgo anche quale sarà lo spazio degli indirizzi che ha la rete locale, come mostrato in figura:

image

Concludiamo il wizard di creazione della prima rete andando ad indicare quale sarà lo spazio degli indirizzi IP che verranno utilizzati dalle macchine virtuali. Nel mio caso ho scelto la rete 10.0.2.0/24

image

Terminata la creazione della rete è necessario esportare la configurazione, in quanto non è possibile creare le reti VNet-to-VNet dal portale di Azure. Attraverso il file di configurazione creeremo una seconda rete virtuale chiamata Rete-Giappone-Occidentale ed una seconda rete locale chiamata Europa.

Scarichiamo il file il configurazione cliccando sul pulsante Esporta e modifichiamolo in questo modo:

  1. Selezionate la parte tra <LocalNetworkSites> e </LocalNetworkSites>, copiatela ed incollatela sotto la parte esistente modificando il contenuto in:

    <LocalNetworkSite name="Europa">

    <AddressSpace>

    <AddressPrefix>10.0.2.0/24</AddressPrefix>

    </AddressSpace>

    <VPNGatewayAddress>2.2.2.2</VPNGatewayAddress>

    </LocalNetworkSite>

  2. Selezionate la parte tra <VirtualNetworkSites> e </VirtualNetworkSites> >, copiatela ed incollatela sotto la parte esistente modificando il contenuto in:

    <VirtualNetworkSite name="Rete-Giappone-Occidentale" Location="Japan West ">

    <AddressSpace>

    <AddressPrefix>10.0.1.0/24</AddressPrefix>

    </AddressSpace>

    <Subnets>

    <Subnet name="Subnet-1">

    <AddressPrefix>10.0.1.0/27</AddressPrefix>

    </Subnet>

    <Subnet name="GatewaySubnet">

    <AddressPrefix>10.0.1.32/29</AddressPrefix>

    </Subnet>

    </Subnets>

    <Gateway>

    <ConnectionsToLocalNetwork>

    <LocalNetworkSiteRef name="Europa">

    <Connection type="IPsec" />

    </LocalNetworkSiteRef>

    </ConnectionsToLocalNetwork>

    </Gateway>

    </VirtualNetworkSite>

Salvate il file NetworkConfig.xml e da Nuovo -->Servizi di rete-->Rete virtuale –> Importa configurazione, modificate la rete con le informazioni appena aggiunte. In figura viene mostrato il risultato della modifica della configurazione:

image

A questo punto avrete due reti virtuali e due reti locali, come in figura:

image

2 - Creazione dei Gateway di tipo dinamico

Terminata la creazione della rete è necessario creare un Gateway di tipo dinamico per ognuna delle due reti, in quanto le connessioni di tipo VNet to VNet supportano solo questo tipo di gateway, che utilizza lKEv2.

 

image

La creazione dei due gateway richiede circa 15-20 minuti…

Riassumendo le configurazioni sono:

Nome rete virtuale Spazio degli indirizzi Rete locale
Rete-Europa-Occidentale 10.0.2.0/24 Giappone
Rete-Giappone-Occidentale 10.0.1.0/24 Europa

 

Nome rete locale Indirizzi locali IP Gateway temporaneo
Europa 10.0.2.0/24 2.2.2.2
Giappone 10.0.1.0/24 2.2.2.2

 

3 – Configurazione dei gateway creati

Una volta che i due gateway sono stati creati segnatevi gli indirizzi IP pubblici che gli sono stati assegnati. Nel mio caso ho ottenuto questa configurazione:

Nome rete virtuale IP Gateway
Rete-Europa-Occidentale 104.40.221.69
Rete-Giappone-Occidentale 104.46.227.221

Modificate quindi le Reti Locali sostituendo gli indirizzi IP provvisori 2.2.2.2 con quelli corretti:

Nome rete locale Indirizzi locali IP Gateway
Europa 10.0.2.0/24 104.40.221.69
Giappone 10.0.1.0/24 104.46.227.221

In figura viene mostrata la modifica della rete locale.

 

image

A questo punto non ci resta altro da fare che configurare la pre-shared key della connessione IPSEC/IKE in modo tale che sia la stessa per entrambi i Gateway creati.

Per farlo vi basterà lanciare la cmdlet

Set-AzureVNetGatewayKey -VNetName Rete-Europa-Occidentale -LocalNetworkSiteName Giappone -SharedKey Qwerty123456

Set-AzureVNetGatewayKey -VNetName Rete-Giappone-Occidentale -LocalNetworkSiteName Europa -SharedKey Qwerty123456

La lunghezza e complessità della chiave è a vostra scelta. Nel mio caso ho scelto Qwerty123456. Il risultato della cmdlet è mostrato in figura:

image

Terminati tutti i passaggi le due reti saranno collegate!

image

4 - Configurazione delle reti virtuali per la connessione a due reti locali diverse

Voglio configurare le due reti virtuali su Azure in modo tale da potersi collegare a due Reti Locali diverse. Infatti ognuna di loro sarà collegata sia alla rete On-Premise che all’altra rete virtuale su Azure.

Questa operazione però non si può eseguire dal portale web ed è necessario effettuare una modifica al file di configurazione della rete virtuale.

Scarichiamo il file di configurazione cliccando sul pulsante Esporta e modifichiamolo in questo modo:

  1. Selezionate uno dei contenuti tra <LocalNetworkSites> e </LocalNetworkSites>, copiatela ed incollatela sotto la parte esistente, in modo tale da aggiungere la rete locale OnPremise:

<LocalNetworkSite name=" OnPremise ">

<AddressSpace>

<AddressPrefix>10.0.0.0/24</AddressPrefix>

</AddressSpace>

<VPNGatewayAddress>3.3.3.3</VPNGatewayAddress>

</LocalNetworkSite>

Sostituite l’IP 3.3.3.3 con quello della vostra rete OnPremise, cioè l’indirizzo IP pubblico con cui esponete il vostro device VPN.

  1. Selezionate la parte tra <ConnectionsToLocalNetwork> e </ConnectionsToLocalNetwork>, copiatela ed aggiungetela sotto la parte esistente modificando il contenuto in:

<ConnectionsToLocalNetwork>

<LocalNetworkSiteRef name="OnPremise">

<Connection type="IPsec" />

</LocalNetworkSiteRef>

</ConnectionsToLocalNetwork>

Questo passaggio va ripeuto per entrambe le reti virtuali che avevate creato.

Salvate il file NetworkConfig.xml e da Nuovo –> Servizi di rete –> Rete virtuale –> Importa configurazione modificate la rete con le informazioni appena aggiunte. In figura viene mostrato il risultato della modifica della configurazione:

 

image

D’ora in poi per eseguire qualsiasi tipo di modifica alla configurazione delle reti locali dovrete per forza usare il file di configurazione, in quanto dal portale web risulta disattivata la possibilità di cambiare la rete locale, come mostrato in figura:

image

5 - Modifica della Pre-Shared key per entrambi i Gateway

Dopo aver modificato la rete i due gateway tenteranno automaticamente di connettersi. Per poterlo fare però è necessario modificare le chiavi di autenticazione per la rete locale OnPremise, lanciando le seguenti cmdlet:

Set-AzureVNetGatewayKey -VNetName Rete-Europa-Occidentale -LocalNetworkSiteName OnPremise -SharedKey Qwerty123456

Set-AzureVNetGatewayKey -VNetName Rete-Giappone-Occidentale -LocalNetworkSiteName OnPremise -SharedKey Qwerty123456

La lunghezza e complessità della chiave è a vostra scelta. Il risultato della cmdlet è mostrato in figura:

image

6 - Configurazione della rete Site-to-Site tra l’On-Premise e Azure

Nel caso di una rete multi-site non è possibile usare uno degli script disponibili sul portale, come mostrato in figura:

 

image

È necessario pertanto configurare manualmente il dispositivo.

Nel mio laboratorio uso RRAS e per poterlo configurare ho usato queste cmdlet:

# Aggiungo e configuro l’interfaccia per la Rete-Europa-Occidentale

Add-VpnS2SInterface -Protocol IKEv2 -AuthenticationMethod PSKOnly -NumberOfTries 3 -ResponderAuthenticationMethod PSKOnly -Name 104.40.221.69 -Destination 104.40.221.69 -IPv4Subnet @("10.0.2.0/24:100") -SharedSecret Qwerty123456

 

# Aggiungo e configuro l’interfaccia per la Rete-Giappone-Occidentale

Add-VpnS2SInterface -Protocol IKEv2 -AuthenticationMethod PSKOnly -NumberOfTries 3 -ResponderAuthenticationMethod PSKOnly -Name 104.46.227.221 -Destination 104.46.227.221 -IPv4Subnet @("10.0.1.0/24:100") -SharedSecret Qwerty123456

 

Set-VpnServerIPsecConfiguration -EncryptionType MaximumEncryption

 

# Il valore predefinito di Windows è 100 MB, ma è troppo piccolo. Lo modifico aumentandolo a 32GB.

Set-VpnServerIPsecConfiguration -SADataSizeForRenegotiationKilobytes 33553408

 

New-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\RemoteAccess\Parameters\IKEV2 -Name SkipConfigPayload -PropertyType DWord -Value 1

 

# Modifico il file router.pbk (richiede permessi amministrativi) in modo tale da rendere permanenti le connessioni

Set-PrivateProfileString $env:windir\System32\ras\router.pbk "104.40.221.69" "IdleDisconnectSeconds" "0"

Set-PrivateProfileString $env:windir\System32\ras\router.pbk "104.40.221.69" "RedialOnLinkFailure" "1"

Set-PrivateProfileString $env:windir\System32\ras\router.pbk "104.46.227.221" "IdleDisconnectSeconds" "0"

Set-PrivateProfileString $env:windir\System32\ras\router.pbk "104.46.227.221" "RedialOnLinkFailure" "1"

 

 

# Riavvio il servizio RRAS

Restart-Service RemoteAccess

 

# Mi collego ai due gateway Azure

Connect-VpnS2SInterface -Name 104.46.227.221

Connect-VpnS2SInterface -Name 104.40.221.69

 

Dopo qualche secondo avviene la connessione tra i diversi gateway e nel portale web vi verrà mostrata l’avvenuta connessione, come potete vedere in figura:

image

 

Adesso le tre reti sono collegate tra di loro. Fatto!