Naarmate bedrijven groeien en het internet zich uitbreidt, worden de beperkingen van IPv4 steeds duidelijker, vooral met de uitputting van beschikbare adressen. IPv6 biedt een oplossing door een vrijwel onbeperkte adresruimte te bieden, samen met verbeterde routing, betere automatische configuratie, verbeterde beveiliging en betere prestaties voor mobiele apparaten.
Azure Application Gateway, een schaalbare Layer 7 load balancer, ondersteunt dual-stack implementaties, waardoor applicaties naadloos zowel IPv4- als IPv6-verkeer kunnen verwerken. Het toevoegen van IPv6-ondersteuning vereist geen aanpassingen aan de backend, wat minimale impact heeft op de organisatie. Deze functionaliteit is essentieel voor organisaties die overstappen op IPv6 of die wereldwijde gebruikers bedienen die ervan afhankelijk zijn. Door beide protocollen te ondersteunen, wordt infrastructuur toekomstbestendig gemaakt, terwijl soepele connectiviteit wordt gewaarborgd.
Terraform, als een Infrastructure-as-Code (IaC) tool, automatiseert de implementatie en het beheer van Azure-resources zoals Application Gateway. Met Terraform kun je consistent en efficiënt IPv6-ondersteuning integreren in je bestaande omgevingen.
Onlangs vroeg een klant om een Azure Application Gateway met IPv6-ondersteuning om de score van hun website op Internet.nl te verbeteren, een platform dat de naleving van moderne internetstandaarden evalueert. Dit is een praktisch voorbeeld van hoe IPv6 je webaanwezigheid kan verbeteren en kan voldoen aan industriestandaarden.
In dit blog gaan we dieper in op het implementeren van een Azure Application Gateway met dual-stack IPv4 & IPv6-ondersteuning via Terraform, zodat je applicatie toekomstbestendig is.
Hoewel een dual-stack-implementatie de flexibiliteit vergroot, zijn er verschillende belangrijke beperkingen bij het gebruik van IPv6 met Azure Application Gateway:
Ons main.tf
-bestand bevat de CIDR-bereiken die worden gebruikt in het subnet voor zowel IPv4 als IPv6 (zorg ervoor dat je de subscription_id
aanpast zodat deze overeenkomt met je eigen abonnement). Daarnaast moet je nadenken over enkele adressenreeksen die je wilt gebruiken. Meer informatie over hoe je deze conceptueel kunt plannen, is te vinden via deze link. Het is belangrijk op te merken dat IPv6-subnets in Azure een grootte van /64 moeten hebben.
De eerste stap is het aanmaken van een virtueel netwerk en/of het toevoegen van een IPv6-adresbereik aan je virtuele netwerk. Dit is een vereiste stap om het subnet ondersteuning te bieden voor zowel IPv4 als IPv6. Voor deze demo heb ik een IPv6-bereik van 2001:0db8:abcd::/48
gekozen, wat 1.208.925.819.614.629.174.706.176 adressen omvat.
Het resultaat:
Nu zijn we klaar om het subnet te creëren en/of het IPv6-bereik toe te voegen aan het subnet door de adresprefixen voor zowel IPv4- als IPv6-bereiken toe te voegen. Het is belangrijk op te merken dat het Application Gateway-subnet uitsluitend Application Gateways mag bevatten. Er zijn dus geen andere resources toegestaan.
Het resultaat:
De volgende stap is het aanmaken van enkele publieke IP-resources voor de Application Gateway, zowel voor IPv4 als IPv6. Deze zullen in de volgende sectie worden gekoppeld aan de Application Gateway. De IPv6 Application Gateway ondersteunt maximaal 4 frontend IP-adressen: twee IPv4-adressen (publiek en privé) en twee IPv6-adressen (publiek en privé).
De ondersteunende resources zijn geïmplementeerd en we kunnen beginnen met het implementeren van de Application Gateway-resource. Eerst gebruiken we een locals
-blok om variabelen te definiëren, wat handig is om de code gestructureerd te houden en het DRY-principe (Don't Repeat Yourself) te volgen.
In deze configuratie implementeren we een WAF V2 SKU Application Gateway, waarbij de gateway_ip_configuration
gekoppeld is aan het subnet dat we eerder hebben gecreëerd. De frontend_ip_configuration
-blokken definiëren de publieke en private IP-adressen voor zowel IPv4 als IPv6.
Nu gaan we de publieke en private configuratie maken voor de website1.nl
backend. In dit voorbeeld gebruiken we een HTTP-configuratie, maar in een niet-testomgeving zou je het veiligere HTTPS-protocol gebruiken en een certificaat koppelen. In dit voorbeeld maken we een publiek frontend voor IPv6. Het is ook mogelijk om een privaat IPv6-adres toe te voegen en dat verkeer door te sturen naar je IPv4-backend(s). Bij het gebruik van een publieke en private IPv6-listener is het belangrijk om een andere frontend-poort te gebruiken.
Tot slot hebben we met succes een Azure Application Gateway geïmplementeerd met dual-stack ondersteuning voor zowel IPv4 als IPv6, gebruikmakend van Terraform. Dit zorgt ervoor dat je applicatie zowel modern IPv6-verkeer als bestaand IPv4-verkeer kan verwerken, zonder aanpassingen aan de backend. Het ondersteunen van IPv6 is een praktische stap om je infrastructuur toekomstbestendig te maken, betere netwerkprestaties te bieden en de wereldwijde toegankelijkheid voor je gebruikers te verbeteren. Door je setup vandaag toekomstbestendig te maken, verbeter je niet alleen je huidige capaciteiten, maar zorg je ook voor een soepele overgang naar de uitdagingen van morgen.