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
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:
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:
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:
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
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:
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>
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:
A questo punto avrete due reti virtuali e due reti locali, come in figura:
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.
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.
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:
Terminati tutti i passaggi le due reti saranno collegate!
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:
- 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.
- 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:
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:
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:
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:
È 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:
Adesso le tre reti sono collegate tra di loro. Fatto!