Azure Dynamic Routing Gateway Site2Site VPN med ZyXEL ZyWALL 110 HP VPN Firewall

Roder man med Microsoft Azure og vil man gerne koble flere netværk op til et Azure irtuel LAN med VPN, ja så SKAL man bruge en “Dynamic Routing Gateway” – og ikke en “Static Routing Gateway”.

Ulempen ifm. sådan en “Dynamic Routing Gateway” er at man SKAL koble op med en router der understøtter IKEv2. Og det gør alle ZyXEL routere desværre ikke – se fx dette indlæg om hvordan man får en ZyXEL ZyWALL 5 til at koble op mod en “Static Routing Gateway” som desværre er det eneste den kan.

Har man en nyere og større ZyXEL Router, der supporterer IKEv2, så er næste problem at finde ud af hvordan man konfigurerer skidtet… Der er masser af indlæg om hvordan man konfigurerer IKEv1 ZyXEL routere mod en Azure Static Routing Gateway, men jeg har faktisk ikke fundet indlæg om hvordan man konfigurerer IKEv2 ZyXEL routere mod en Azure Dynamics Routing Gateway – derfor dette indlæg:

  1. Start med at oprette et Virtual Network på dine Azure konto – det er beskrevet rigeligt på nettet, så det vil jeg ikke uddybet men blot gennemgå kort:
    • Tilføj DNS-servere
    • Afkryds site-to-site VPN
    • Udfyld oplysningerne om din routers WAN-adresse (offentlige IP-adresse)
    • Udfyld oplysningerne om dit LAN (netværks IP-adressen og størrelsen som CIDR)
      Hint: Har du mere end et subnet på dit LAN, kan du evt. tilføje flere (det kan også gøres senere ved at Eksportere XML-filen med netværksopsætningen, rette den og importere den igen
    • Udfyld felterne for at oprette et Virtual Network Address Space til brug for dine Azureservere. Ret evt. det foreslåede Adress Space og tilføj et Subnet til dine servere, samt et Gateway Subnet
    • Du vil nu have et element af typen Networks i Azure.
      Åben dens Dashboard og vælg Create Gateway/Dynamic Routing v.hj.a. det store plus-ikon i bunden af skærmen.
      Dette punkt tager lidt tid – typisk omkring et kvarter.
    • Når gateway’en er oprettet vises Gateway IP Address på dashboardet. Det er dit Azure netværks offentlige IP-adresse (svarende til din routers WAN-adresse) – den skal du bruge senere, så skriv den ned.
    • Samtidigt skal du trykke på det store i-ikon der hedder Manage Keys, så du kan kopiere den automatisk genererede nøgle (Pre-shared key) til udklipsholderen
  2. Skal du have flere netværk koblet op til samme Azure Virtual Network (fx hvis du har flere kontorer), så skal du nu Eksportere XML-filen med netværksopsætningen og manuelt rette den ved at tilføje de ekstra netværk og den ekstra gateway (WAN-adresse på de øvrige routere), samt importere den igen. Før filen rettes kan den evt. se sådan her ud (det er de fremhævede blokke der manuelt skal kopieres og rettes hvis du vil tilføje flere sites):
    <NetworkConfiguration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/ServiceHosting/2011/07/NetworkConfiguration">
      <VirtualNetworkConfiguration>
        <Dns>
          <DnsServers>
            <DnsServer name="NS1" IPAddress="10.X.X.4" />
            <DnsServer name="NS2" IPAddress="10.Y.Y.8" />
          </DnsServers>
        </Dns>
        <LocalNetworkSites>
          <LocalNetworkSite name="LocalLAN">
            <AddressSpace>
              <AddressPrefix>10.X.X.0/24</AddressPrefix>
            </AddressSpace>
            <VPNGatewayAddress>92.X.X.10</VPNGatewayAddress>
          </LocalNetworkSite>
        </LocalNetworkSites>
        <VirtualNetworkSites>
          <VirtualNetworkSite name="VPN" Location="West Europe">
            <AddressSpace>
              <AddressPrefix>10.X.X.0/23</AddressPrefix>
            </AddressSpace>
            <Subnets>
              <Subnet name="Azure">
                <AddressPrefix>10.X.X.0/24</AddressPrefix>
              </Subnet>
              <Subnet name="GatewaySubnet">
                <AddressPrefix>10.Y.Y.0/29</AddressPrefix>
              </Subnet>
            </Subnets>
            <DnsServersRef>
              <DnsServerRef name="NS1" />
              <DnsServerRef name="NS2" />
            </DnsServersRef>
            <Gateway>
              <ConnectionsToLocalNetwork>
                <LocalNetworkSiteRef name="LocalLAN">
                  <Connection type="IPsec" />
                </LocalNetworkSiteRef>
              </ConnectionsToLocalNetwork>
            </Gateway>
          </VirtualNetworkSite>
        </VirtualNetworkSites>
      </VirtualNetworkConfiguration>
    </NetworkConfiguration>
    Tilføjer du ikke noget, vil dit Azure netværk nu se sådan her ud (VPN’en vil dog være afbrudt indtil du har konfigureret din router):
    Azure Dashboard

    Gateway IP Adress er den føromtalte offentlige IP-adresse på dit Azure netværk (Azurews WAN-adresse om man vil). Bemærk at Gateway Typen er Dynamic Routing og at antallet af og opsætningen af  Virtual Machines naturligvis afhænger af din øvrige Azure opsætning.
    Azure Configure

    Bemærk at DNS-servere og Local Network, samt Virtual Network Address Spaces afhænger af din opsætning. Netvæket ud for Azure i ovenstående skal vi bruges senere – så noter dig den og dens CIDR.

  3. Nu skal din ZyXEL Zywall 110 opsættes:
    1. Start med at definere et objekt med det subnet du har på Azure. Det kan være lidt tricky at omregne en CIDR til en netmask, hvis du ikke ved hvordan. Men det må du lige google:
      VPN Subnet Object
    2. …og herefter et objekt med det range du har lokalt. Det er vigtigt at definere det som et range og ikke et subnet, for Azure pinger ALTID den første adresse (og det er ret buggy for i et subnet vil den så pinge x.x.x.0). I sagens natur bør du have noget på den adresse der svarer på PING, ellers vil Azure på et tidspunkt tro at forbindelsen er død, lukke forbindelsen og forsøge at connecte igen forfra (og det afbryder din forbindelse i noget tid):
      LAN1_RANGE
    3. Herefter definerer du en VPN Gateway sådan her:
      Ny Phase-1Det er nødvendigt at vise “Advanced Settings” i vinduet for at få alt hvad du har brug for frem. Det vigtige her er at du udfylder som følger:

      1. My Address/Interface: Det WAN-interface som har det IP-nummer du har angivet på Azure som din routers WAN-adresse (VPNGatewayAddress i XML-filen)
      2. Peer Gateway Address/Static Address: Angiver den offentlige IP-adresse på dit Azure Virtual Network – eller Azures WAN-adresse om man vil
      3. Authentication/Pre-Shares Key: Indsætter den key du kopierede til tastaturbufferen fra Azure (da du valgte i-ikonet kaldet Manage Key). Kommer forbindelsen IKKE op er det typisk her det kan være galt!
      4. Authentication/Local ID Type vælg IPv4 og under Content angiver din WAN-adresse.
      5. Authentication/Peer ID Type vælger IPv4 og under Content angiver den offentlige IP-adresse på dit Azure Virtual Network – eller Azures WAN-adresse om man vil
      6. Phase 1 Settings angiver:
        1. SA Life Time: 9000
          Vigtigt: Jf. Azure dokumentationen skal denne stå til 28800 (8 timer), men pudsigt nok re-key’er Azure allerede efter knap 3 timer (ca. 10000 sekuner) – og det fungerer ikke med ZyWALLs lige p.t. når Azure initierer re-key’ing (VPN’en dør nogle minutter, men kommer så op igen). Workarounden er at sætte SA Life Time til 9000 sekunder (ca. 2,5 time) så ZyWALL’en altid starter en re-key’ing før Azure gør – for når ZyWALL’en starter den, så virker den.
        2. Proposal AES256 / SHA256
          Andre mindre krævende kombinationer virker også – og faktisk er det kun AES256 / SHA1 der officielt er supporteret, men det kan du selv lege med. Til gengæld skal du være OBS på at Azure p.t. vælger den dårligste af de listede krypteringsalgoritmer, så min anbefaling er kun at opsætte én – nemlig den du ønsker at bruge. Kommer forbindelsen IKKE op er det typisk her det kan være galt!
          Se evt.: https://azure.microsoft.com/da-dk/documentation/articles/vpn-gateway-about-vpn-devices/#devices-not-on-the-compatible-list
        3. Key Group: DH2
    1. Endelig opretter du en (eller flere – hvis du har flere subnets på samme router) VPN Connection:
      Ny Phase-2Det er nødvendigt at vise “Advanced Settings” i vinduet for at få alt hvad du har brug for frem. Det vigtige her er at du udfylder som følger:

      1. MSS Adjustment/Custom Size: 1350
        Kommer forbindelsen IKKE op er det typisk her det kan være galt!
      2. Under VPN Gateway, vælg Site-to-site og VPN Gateway – vælg den du opsatte ovenfor i punkt C.
      3. Policy/Local Policy: Vælg det objekt du oprettede ovenfor i punkt B.
        Kommer forbindelsen IKKE op er det typisk her det kan være galt!
      4. Policy/Remote policy: Vælg det objekt du oprettede ovenfor i punkt A.
        Kommer forbindelsen IKKE op er det typisk her det kan være galt!
      5. Phase 2 Settings:
        1. SA Life Time: 3600
        2. Active Protocol: ESP
        3. Encapsulation: Tunnel
        4. Proposal: AES256 / SHA1, AES128 / SHA1, samt 3DES / SHA1
          Andre mindre krævende kombinationer virker også, men det kan du selv lege med. Kommer forbindelsen IKKE op er det typisk her det kan være galt! Angiv alle tre foreslåede for at give forbindelsen de bedste muligheder!
          Se evt.: https://azure.microsoft.com/da-dk/documentation/articles/vpn-gateway-about-vpn-devices/#devices-not-on-the-compatible-list
        5. Perfect Forward Secrecy (PFS): DH1
      6. Enable Connectivity Check som anført i billedet. Azure svarer på sin x.x.x.0-adresse, men du kan også vælge ip-nummere på en maskine du typisk har tændt på Azure. Ping skal sker for at holde Azure forbindelsen åben – ellers lukkes den ved inaktivitet – og du vil opleve at forbindelsen kan være nogle sekunder om at åbne igen.
        Bemærk dog at Azure maskiner som default ikke svarer på den type Connectivity Check (ping). Se evt. nedenstående note *1 for hvordan du løser det.

Det var dét – nu skulle VPN’erne gerne komme op på din router og på Azure. Nogle siger at der kan gå op mod 2 timer – men det har jeg aldrig oplevet… Det kan i øvrigt hjælpe at trykke Connect knappen i Azure…

Bemærk: Denne vejledning er skrevet til og testet på en ZyXEL ZyWALL 110 HP VPN Firewall med firmwaren 4.13 (AAAA.0) C0, men også burde fungerer på disse routere:

  • ZyXEL ZyWALL 310
  • ZyXEL ZyWALL1100
  • ZyXEL USG40
  • ZyXEL USG40W
  • ZyXEL USG60
  • ZyXEL USG60W
  • ZyXEL USG110
  • ZyXEL USG210
  • ZyXEL USG310
  • ZyXEL USG1100
  • ZyXEL USG1900

  • Note *1: Typisk svarer en Azure maskine ikke på ping da det er blokeret i Windows’ firewall, men det kan du få den til ved at køre følgende kommando på den som administrator:
netsh advfirewall firewall add rule name="ICMP Allow incoming V4 echo request" dir=in action=allow enable=yes protocol=icmpv4:8,any

27.09.2015: Opdateret omkring at der skal defineres et address range til det lokale LAN – ellers ping’er Azure x.x.x.0 på dit netværk – og den svarer jo ikke på ping. Dermed vil Azure før eller siden tro at forbindelsen er død og re-connected. Og det kan afbryde forbindelsen nogle sekunder. Præciser også at Azure kan pinges på sin x.x.x.0-adresse (det er faktisk også den der pinges fra). Det er lidt buggy at det er lavet sådan, men når bare man ved det…

08.10.2015: Opdateret omkring Local/Peer ID Type og Content, Phase 1 & 2 Proposals, og Perfect Forward Secrecy da erfaring viser at det kan give korte disconnects hvis de ikke står som angivet!

17.10.2015: Opdateret omkring SA Life Time i Phase 1, da forbindelsen går ned når Azure initierer re-key’ing. Så det er vigtigt at ZyWALL’en gør det hver gang!

06.11.2015: Selv med alle disse workarounds er VPN-forbindelserne ikke rock solid. Der er udfald nogle gange hver dag i 5-6 minutter. Det er ved Phase 2 rekeying der fejles, men jeg er ikke helt klar over hvad der fejler og har endnu ikke fundet workarounds. Til gengæld har jeg fået følgende svar fra ZyXEL-support d.d. vedr. de mange nødvendige workarounds og problemer, så jeg gætter på vi blot må afvente en ny firmware der måske stabiliserer tingene og som måske kommer i 2016:

  • […]
    Jeg fik undersøgt nærmere, med en af mine kontaktpersoner, og han informede vi desværre ikke understøtter IKEv2 endnu, men jeg fik informationen, at det kan ske den nye firmware version, som er planlagt til at blive udgivet næste år, måske vil understøtte en IKEv2 løsning.
    Ind til da kan vi desværre ikke være til mere hjælp.
    […]
  • […]
    På nuværende tidspunkt fungerer produktet ikke ordenligt med IKEv2, hvilket er derfor der arbejdes på en firmware som kan gøre det kompatibelt.
    […]

Skriv et svar