Announcing inbound IPv6 support in public preview
Update 2 - November 8, 2024: IPv6 non-vnet outbound support is rolling out soon. We expect public preview to begin in late Q1 2025. Azure portal support to set the IPMode
property is now available. A screenshot is included below.
Update 1 - August 1, 2024: All but two regions are now supported and we have Azure portal support rolling out soon. We also added a CLI sample for configuration IPv6 support on a deployment slot.
Introduction
I am happy to announce the first part of our IPv6 implementation in App Service. Public preview of inbound IPv6 support for multi-tenant apps on Premium SKUs, Functions Consumption, Functions Elastic Premium, and Logic Apps Standard. We’ll be adding IPv6 support in four stages.
- This announcement: IPv6 inbound support (multi-tenant)
- In development: IPv6 non-vnet outbound support (multi-tenant)
- Backlog: IPv6 vnet outbound support (multi-tenant and App Service Environment v3)
- Backlog: IPv6 vnet inbound support (App Service Environment v3 - both internal and external)
Limitations in this public preview:
- Only a subset of regions are supported - see the list below.
- Basic and Standard tier currently does not support changing the
IPMode
property. - Functions Consumption may have multiple IP addresses in the DNS result.
- Functions Consumption and Elastic Premium may not remove the IPv4 address in IPv6 mode.
- The IPv6 address is not visible in the
inboundIpAddress
orpossibleInboundIpAddresses
properties. - IP-SSL IPv6 bindings are not supported.
For GA we will work on including Basic and Standard tier, adding all regions, include the IPv6 addresses in new properties and stabilize the DNS results to not show extra addresses.
How does it work
IPv6 inbound requires two things: an IPv6 address that accepts traffic coming in, and a DNS record that returns an IPv6 (AAAA) record. You’ll also need a client that can send and receive IPv6 traffic. This means that you may not be able to test it from your local machine since many networks today only support IPv4.
Our stamps (deployment units) will all have IPv6 addresses added. When these are added, you can start sending traffic to both the IPv4 and IPv6 address. To ensure backwards compatibility, the DNS response for the default host name (app-name.azurewebsites.net) will return only the IPv4 address. If you want to change that, we have added a site property called IPMode
that you can configure to IPv6
or IPv4AndIPv6
. If you set it to IPv6 only, your client will need to “understand” IPv6 in order to get a response. Setting it to IPv4 and IPv6 will allow you to have existing clients use IPv4, but allow capable clients to use IPv6. If your client does support IPv6, you can test the IPv6 connection using curl:
curl -6 https://<app-name>.azurewebsites.net
If you are using custom domain, you can define your custom DNS records the same way. If you only add an IPv6 (AAAA) record, your clients will need to support IPv6. You can also choose to add both, and finally you can use a CNAME to the default hostname of the site in which case you will use the behavior of IPMode
.
Do make a note of some of the limitations and especially behavior of Functions plans. We will be working on fixing those issues before General Availability. Do also note that DNS tends to have multiple layers of caching, and sometimes it can take 5-10 minutes for DNS to return the right records.
Update using CLI
To update an app to return IPv6 DNS records:
az resource update --name <app-name> --set properties.ipMode="IPv6" -g <resource-group-name> --resource-type "Microsoft.Web/sites"
If you are updating a slot, you’ll need the resource id of the slot. Here is an example:
az resource update --ids '/subscriptions/<sub-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Web/sites/<app-name>/slots/<slot-name>' --set properties.ipMode='IPv6'
Update using Azure portal
To update an app to return IPv6 DNS records, you can use the Azure portal. Go to the app, and under the Configuration blade, you’ll find the Inbound IP mode (preview)
property.
Create or update using Azure Resource Manager templates
To deploy a new app or update an existing app using ARM, you can just set the IPMode to either IPv6 or IPv4AndIPv6. In this template, you are also creating an App Service plan. If you use the template below, replace the values prefixed with REPLACE. For the reserved
property, true = Linux, false = Windows.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"variables": {
"appName": "REPLACE-APP-NAME",
"appIPMode": "IPv6",
"appServicePlanName": "REPLACE-PLAN-NAME",
"appServicePlanSize": "P1v3",
"appServicePlanInstanceCount": 1,
"location": "[resourceGroup().location]"
},
"resources": [
{
"name": "[variables('appServicePlanName')]",
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2021-03-01",
"location": "[variables('location')]",
"properties": {
"reserved": false
},
"sku": {
"name": "[variables('appServicePlanSize')]",
"capacity": "[variables('appServicePlanInstanceCount')]"
}
},
{
"name": "[variables('appName')]",
"type": "Microsoft.Web/sites",
"apiVersion": "2021-03-01",
"location": "[variables('location')]",
"dependsOn": [
"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]"
],
"properties": {
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]",
"httpsOnly": true,
"ipMode": "[variables('appIPMode')]"
}
}
]
}
Supported regions
This is the current list of supported regions in preview.
Region | IPv6 supported |
---|---|
Australia Central | |
Australia Central 2 | |
Australia East | |
Australia Southeast | |
Brazil South | |
Brazil Southeast | |
Canada Central | |
Canada East | |
Central India | |
Central US | |
East Asia | |
East US | |
East US 2 | |
France Central | |
France South | |
Germany North | |
Germany West Central | |
Italy North | |
Japan East | |
Japan West | |
Jio India West | |
Korea Central | |
Korea South | |
North Central US | |
North Europe | |
Norway East | |
Norway West | |
Poland Central | |
Qatar Central | |
South Africa North | |
South Africa West | |
South Central US | |
South India | |
Southeast Asia | |
Sweden Central | |
Switzerland North | |
Switzerland West | |
UAE Central | |
UAE North | |
UK South | |
UK West | |
West Central US | |
West Europe | |
West India | |
West US | |
West US 2 | |
West US 3 |