Ich muss eine IPv6-DNS-Abfrage von meiner Azure-VM aus starten. Ich muss alle Parameter dieser Abfrage steuern. Ich kann es über Netzwerkanrufe oder über den Dig-Befehl tun. Kann ich das mit Azure machen? Wahrscheinlich: Kann der Load Balancer eine ausgehende IPv6-DNS-Abfrage unterstützen?IPv6-DNS-Abfrage in Azure
Antwort
Ich verstehe nicht, was Sie meinen, indem Sie eine IPv6-Abfrage starten. Meinst du Abfrage für einen AAAA-Datensatz oder meinst du IPv6-Netzwerkverkehr? Wenn Sie den Abfragetyp gemeint haben, können Sie mit Tools wie nslookup und dig zwar die Abfrage steuern, aber wenn Sie in Browsern nach einem Hostnamen suchen, kann das Betriebssystem entscheiden, wie der Name aufgelöst werden soll. Das ist nicht Azure-spezifisch. Wenn Sie über IP-Verkehr sprechen, sind die rekursiven Azure DNS-Resolver derzeit nur mit IPv4 erreichbar.
Wir mussten bestätigen, dass unsere DNS-Server Anfragen über IPv6 beantworteten, und Azure war einer der Cloud-Anbieter, die wir verwenden konnten. Es war nicht einfach, aber ich habe es schließlich zum Laufen gebracht.
Um IPv6-Ausgangsdienste von einer Azure-VM zu erhalten, muss die VM in einem Verfügbarkeitssatz mit einem Lastenausgleich mit öffentlichen dynamischen IPv6-Adressen, eingehenden NAT-Regeln für IPv4 und IPv6 sowie Lastenausgleichsregeln erstellt werden für dasselbe. Bestehende VMs können nicht neu konfiguriert werden, um dies zu unterstützen. Azure scheint einige Tunnels zwischen dem konfigurierten Lastenausgleich und den VMs zu erstellen, die Sie in den gleichen Verfügbarkeitssatz eingefügt haben. Dies ist aus der Sicht der VM nicht offensichtlich, außer dass Sie nur über IPv6 mit dem externen Internet und nicht mit den anderen VMs in Azure kommunizieren können.
IPv6-Unterstützung kann derzeit nicht über das Azure-Portal konfiguriert werden. Ich machte starken Gebrauch von den folgenden beiden Links diese Funktion zu erhalten:
https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-ipv6-overview
https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-ipv6-internet-ps
Sie erhalten einen Windows-VM benötigt viel von der oben zu laufen; PowerShell für Linux und AzureRM.NetCore.Preview verfügt nicht über Feature-Parität mit PowerShell in Windows.
Ich musste am obigen Beispiel für einige Zeit hacken, bevor Sie mit dem folgenden ... kommen, müssen Sie es möglicherweise noch etwas hacken, um in Ihrer Umgebung zu arbeiten. Beachten Sie, dass ich dieses Skript in Powershell ISE ausgeführt habe, sodass ich die Umgebung nach Bedarf mit $ mySecureCredentials und Login-AzureRMAccount konfigurieren konnte.
Im Folgenden wird eine Centos 7.3-VM erstellt, die IPv6-DNS-Abfragen für das Internet initiieren kann. Beachten Sie, dass Sie nach dem Neustart Ihre IPv6-Schnittstellen im Gast aktivieren müssen. Leider ist mein Rep-Wert zu niedrig, um mehr als 2 Links zu posten. Suchen Sie nach 'azure linux dhcp ipv6', um zu sehen, wie die DHCPv6-Client-Konfiguration auf Ihrer VM aktiviert wird.
$resgroupName = 'YourResourceGroup'
$location = 'east US' # of course, select your preferred location
# you will need some secure credentials. run something like:
# $mySecureCredentials = Get-Credential -Message "Type the username and password of the local administrator account."
# you will also need to log into azure (Login-AzureRMAccount)
# IP addresses, load balancer config
$publicIPv4= New-AzureRmPublicIpAddress -name 'lb-pub-ipv4' -ResourceGroupName $resgroupName -location $location `
-Allocationmethod Static -IpAddressVersion IPv4 -domainnamelabel my-lbnrpipv4
$publicIPv6 = New-AzureRmPublicIpAddress -name 'lb-pub-ipv6' -ResourceGroupName $resgroupName -location $location `
-AllocationMethod Dynamic -IpAddressVersion IPv6 -DomainNameLabel my-lbnrpipv6
$FEIPConfigv4 = New-AzureRmLoadBalancerFrontendIpConfig -name "LB-Frontendv4" -PublicIpAddress $publicIPv4
$FEIPConfigv6 = New-AzureRmLoadBalancerFrontendIpConfig -name "LB-Frontendv6" -PublicIpAddress $publicIPv6
$backendpoolipv4 = New-AzureRmLoadBalancerBackendAddressPoolConfig -name "BackendPoolIPv4"
$backendpoolipv6 = New-AzureRmLoadBalancerBackendAddressPoolConfig -name "BackendPoolIPv6"
# This script assumes you already have a virtual network defined - replace myRG-vnet with the name of the virtual network you want to use.
$vnet = Get-AzureRmVirtualNetwork -name myRG-vnet -ResourceGroupName $resgroupName
# I assume you want to use the default subnet.
$backendSubnet = Get-AzureRmVirtualNetworkSubnetConfig -name default -virtualnetwork $vnet
# Create NAT rules for load balancer
# Even if you don't actually need any inbound rules, some rules appear to be necessary to make outbound IPv6 work.
# Inbound SSH
$inboundNATRule1v4 = New-AzureRmLoadBalancerInboundNatRuleConfig -name "NicNatRulev4" -FrontendIpConfiguration $FEIPConfigv4 -Protocol TCP -FrontendPort 22 -BackendPort 22
$inboundNATRule1v6 = New-AzureRmLoadBalancerInboundNatRuleConfig -name "NicNatRulev6" -FrontendIpConfiguration $FEIPConfigv6 -Protocol TCP -FrontendPort 22 -BackendPort 22
$lbrule1v4 = New-AzureRmLoadBalancerRuleConfig -name "HTTPv4" -FrontendIpConfiguration $FEIPConfigv4 -BackendAddressPool $backendpoolipv4 -Protocol TCP -FrontendPort 80 -BackendPort 80
$lbrule1v6 = New-AzureRmLoadBalancerRuleConfig -name "HTTPv6" -FrontendIpConfiguration $FEIPConfigv6 -BackendAddressPool $backendpoolipv6 -Protocol TCP -FrontendPort 80 -BackendPort 80
$NRPLB = New-AzureRmLoadBalancer -ResourceGroupName $resgroupName -name 'myNrpIPv6LB' -location $location `
-FrontendIpConfiguration $FEIPConfigv4,$FEIPConfigv6 -BackendAddressPool $backendpoolipv4,$backendpoolipv6 `
-LoadBalancingRule $lbrule1v4,$lbrule1v6 -inboundNatRule $inboundNATRule1v4,$inboundNATRule1v6
$nic1IPv4 = New-AzureRmNetworkInterfaceIpConfig -name "IPv4IPConfig" -PrivateIpAddressVersion "IPv4" -subnet $backendSubnet -LoadBalancerBackendAddressPool $backendpoolipv4 -LoadBalancerInboundNatRule $inboundNATRule1v4
$nic1IPv6 = New-AzureRmNetworkInterfaceIpConfig -name "IPv6IPConfig" -PrivateIpAddressVersion "IPv6" -LoadBalancerBackendAddressPool $backendpoolipv6 -LoadBalancerInboundNatRule $inboundNATRule1v6
$nic1 = New-AzureRmNetworkInterface -Name 'myNrpIPv6Nic0' -IpConfiguration $nic1IPv4,$nic1IPv6 `
-resourceGroupName $resgroupName -location $location
New-AzureRmAvailabilitySet -name "myNrpIPv6AvSet" -resourcegroupname $resgroupName -location $location
$avset1 = Get-AzureRmAvailabilitySet -resourcegroupname $resgroupName -name 'myNrpIPv6AvSet'
try {
New-AzureRmStorageAccount -ResourceGroupName $resgroupName -name 'mynrpipv6stacct' -location $location -skuname `
"Standard_LRS" -erroraction stop
} catch {
echo "new storage account failed, let's just hope it was a dup and gets found anyway"
}
# find my existing storage account
$storAcct = Get-AzureRmStorageAccount -resourcegroupname $resgroupName -name 'mynrpipv6stacct'
if ($storAcct -eq $null) {
throw "I could not find a storage accoount"
}
$nic1 = Get-AzureRmNetworkInterface -ResourceGroupName $resgroupName -name 'myNrpIPv6Nic0'
$vm1 = New-AzureRmVMConfig -vmName 'myNrpLinuxIPv6VM1' -vmSize 'Standard_d1' -AvailabilitySetId $avset1.Id
$vm1 = Set-AzureRmVMOperatingSystem -vm $vm1 -Linux -ComputerName 'myNrpLinuxIPv6VM1' -Credential $mySecureCredentials
$vm1 = Set-AzureRmVMSourceImage -VM $vm1 -PublisherName OpenLogic -Offer CentOS -Skus '7.3' -Version "latest"
$vm1 = Add-AzureRmVMNetworkInterface -VM $vm1 -Id $nic1.Id -Primary
$osDisk1Uri = $storAcct.PrimaryEndpoints.Blob.ToString() + "vhds/myNrpLinuxIPv6VM1osdisk.vhd"
$vm1 = Set-AzureRmVMOSDisk -VM $vm1 -Name 'myNrpLinuxIPv6VM1osdisk' -VhdUri $osDisk1Uri -CreateOption FromImage
echo now creating...
new-azurermvm -ResourceGroupName $resgroupName -location $location -VM $vm1
echo done
- 1. Wie Azure SQL-Verbindung in Azure-Portal
- 2. VHD in Azure mit Azure CLI hochladen
- 3. Azure
- 4. Azure SQL Azure AD-Authentifizierungsfehler
- 5. Trace.WriteLine in ASP.NET Azure
- 6. Verkaufsvorhersage in Azure ML
- 7. Benutzerdefinierte Messwerte in Azure
- 8. Konfigurationsdatei in Azure-Funktionen
- 9. NServiceBus Fehlerwarteschlangen in Azure
- 10. Aktualisierungsknoten App in Azure
- 11. Dateitabellen in Azure SQLDatabase?
- 12. ersetzen NLog in Azure
- 13. Multitenant Website in Azure
- 14. Dienstname in Azure suchen?
- 15. Ordnerberechtigungen in Azure-Websites
- 16. Mod_rewrite in Azure
- 17. In Azure Service Fabric
- 18. Volltextsuche in SQL Azure
- 19. OrientDB in Azure
- 20. WCF-Dienstkonfiguration in Azure
- 21. Dynamische Subdomain in Azure
- 22. Azure AD vs. Azure AD B2C vs. Azure AD B2B
- 23. Schreiben Sie Azure Stream Analytics-Ausgabe in Azure-Tabellen
- 24. Listing Standorte in Azure mit Python Azure SDK Fehlern
- 25. Wie aktivieren interne Azure-Dienste für SQL Azure in C#
- 26. Azure Web-Rolle startet nicht in Azure Emulator
- 27. Azure Storage Connection Zeichenfolge Primärschlüssel in Azure Mobile Backend
- 28. Zugriffstoken in Azure mit Benutzername und Passwort für Azure-Account
- 29. Authentifizierung in Azure SQL-Datenbank mit Azure Active Directory B2C
- 30. Klassische Azure Mobile Services Scheduler in neuen Azure Portal
Was passiert, wenn man es versucht? –
Bis jetzt ist alles, was ich bekomme, eine IPv4-Abfrage, aber wir arbeiten immer noch daran zu verstehen, wie man mit der LB für ausgehende Transaktionen arbeitet, also sind das wahrscheinlich mehr wir. Jede Dokumentation, die ich lese, spricht nur von http, und die meisten LBs sind aus Sicherheitsgründen darauf beschränkt. Das ist keine Einschränkung der LBs selbst - der Service, den ich von Azure abfrage, hat eine LB vor dem eigentlichen DNS-Resolver, aber ich habe mir Sorgen gemacht, dass der Grund dafür nicht funktionierte, dass es das nicht tut. Wir werden weiter versuchen, die ausgehende Transaktion zum Laufen zu bringen, und dann sehen, was wir beobachten. – brtech