Introductie tot Azure Application Gateway met IPv6-ondersteuning via Terraform
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.
Waarom is IPv6-ondersteuning belangrijk?
- IPv4 address exhaustion: Het beperkte aantal openbare IPv4-adressen raakt op. IPv6 biedt een enorme adresruimte voor toekomstige internetgroei.
- Wereldwijde toegankelijkheid: De adoptie van IPv6 neemt toe nu meer regio’s te maken krijgen met schaarste aan IPv4-adressen. Het ondersteunen van IPv6 zorgt ervoor dat je applicatie wereldwijd toegankelijk blijft.
Figuur 1: IPv6 uptake als % van alle internetgebruikers – 2012 tot heden. Bron: APNIC Labs. - Verbeterde efficiëntie: IPv6 verbetert de netwerkprestaties met vereenvoudigde routing, een grotere payload en betere automatische configuratie, vooral voor mobiele apparaten en IoT-devices.
- Verbeterde beveiliging: IPv6 ondersteunt IPsec natively, waardoor veilige communicatie eenvoudiger te implementeren is in je netwerk.
- Toekomstbestendigheid: Door vroegtijdig IPv6 te adopteren, zorg je ervoor dat je infrastructuur klaar is voor toekomstige groei en dat je applicaties relevant blijven.
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.
Belangrijke kanttekeningen en beperkingen
Hoewel een dual-stack-implementatie de flexibiliteit vergroot, zijn er verschillende belangrijke beperkingen bij het gebruik van IPv6 met Azure Application Gateway:
- v2 SKU Vereist: Alleen de v2 SKU ondersteunt dual-stack (IPv4 en IPv6). De v1 SKU biedt geen ondersteuning voor IPv6.
- Geen IPv6 Backend-ondersteuning: Backend-pools ondersteunen alleen IPv4, wat betekent dat IPv6-verkeer naar de gateway moet worden omgeleid naar IPv4-backends.
- Geen IPv6 Private Link: Private Link-verbindingen zijn beperkt tot IPv4, aangezien IPv6 niet wordt ondersteund voor Private Link op Application Gateway.
- Geen IPv6-Only Gateway: De Application Gateway moet dual-stack zijn, aangezien IPv6-only configuraties niet worden ondersteund.
- Beperking van Ingress Controller: Application Gateway Ingress Controller (AGIC) voor Kubernetes ondersteunt momenteel geen IPv6-configuraties.
- Geen IPv4 naar Dual-Stack Upgrades: Het is niet mogelijk om een bestaande IPv4-gateway te upgraden naar dual-stack. Een nieuwe implementatie is vereist voor dual-stack-functionaliteit.
- Geen IPv6 WAF Aangepaste Regels: Web Application Firewall (WAF) ondersteunt geen aangepaste regels met IPv6-matchcondities. Standaardregels moeten worden gebruikt voor IPv6-verkeer.
Een Dual-Stack Application Gateway implementeren met Terraform
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.
Conclusie
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.