Мне нужно запустить DNS-запрос IPv6 с моей Azure VM. Мне нужно контролировать все параметры этого запроса. Я могу сделать это через сетевые вызовы или через команду dig. Могу ли я сделать это с помощью Azure? Это возможно: может ли балансировка нагрузки поддерживать исходящий DNS-запрос IPv6?IPv6 DNS-запрос на Azure
ответ
Я не понимаю, что вы подразумеваете при запуске запроса IPv6. Вы имеете в виду запрос для записи AAAA или вы имеете в виду сетевой трафик IPv6? Если вы имели в виду тип запроса, тогда такие инструменты, как nslookup и dig, позволяют управлять запросом, но при поиске имени хоста в таких вещах, как браузеры, они позволяют ОС решить, как разрешить имя, это не характерно для Azure. Если вы говорите о трафике уровня IP, рекурсивные резольверы Azure DNS доступны только с помощью IPv4.
Нам необходимо было подтвердить, что наши DNS-серверы обрабатывали запросы, поступающие через IPv6, и Azure был одним из облачных провайдеров, которые мы могли бы использовать. Это было нелегко, но в итоге я получил его на работу.
Чтобы получить исходящую службу IPv6 от Azure VM, виртуальная машина должна быть создана в наборе доступности с балансировщиком нагрузки, который имеет общедоступные динамические IPv6-адреса, входящие правила NAT для IPv4 и IPv6, а также правила балансировки нагрузки для того же. Существующие виртуальные машины не могут быть перенастроены для поддержки этого. Кажется, что Azure создает некоторые туннели между настроенным балансировщиком нагрузки и виртуальными машинами, которые вы ввели в тот же набор доступности. Это не очевидно с точки зрения VM, за исключением того, что вы можете общаться только через IPv6 с внешним Интернетом, а не с другими виртуальными машинами в своем Azure submit.
В настоящее время поддержка IPv6 для настройки через портал Azure отсутствует. Я сделал интенсивное использование двух следующих ссылок, чтобы получить эту работу:
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
Вы будете нуждаться в VM для Windows, чтобы запустить много выше; PowerShell для Linux и AzureRM.NetCore.Preview не имеет паритета функций с PowerShell в Windows.
Я должен был взломать приведенный выше пример в течение некоторого времени, прежде чем приступать к следующему ... вам, возможно, придется взломать его еще немного, чтобы работать в вашей среде. Обратите внимание, что я запустил этот скрипт из Powershell ISE, чтобы я мог предварительно настроить среду с помощью $ mySecureCredentials и Login-AzureRMAccount, если это необходимо.
Ниже будет создана виртуальная машина Centos 7.3, которая может инициировать DNS-запросы IPv6 в Интернете. Обратите внимание, что после перезагрузки вам придется включить свои IPv6-интерфейсы в гостевой системе. К сожалению, моя репутация слишком низкая, чтобы разместить более двух ссылок, поэтому найдите «azure linux dhcp ipv6», чтобы увидеть, как настроить настройку клиента DHCPv6 на вашей виртуальной машине.
$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. IPv6, инкапсулирующий на Azure ILPIP
- 2. Поддержка IPv6 для Azure
- 3. azure Виртуальная машина Поддержка IPv6
- 4. Проблемы с iOS с IPv6 и Azure
- 5. Разрешить ipv6-адрес в брандмауэре Azure
- 6. Сетевое зондирование на IPv6
- 7. IPV6 на субдомене
- 8. IPv6 Socket на Android
- 9. Связывание MongoDB на IPv6
- 10. Сетевое программирование IPv6 без IPv6?
- 11. Поддержка IPv6 для Azure, отличная от балансировки нагрузки
- 12. Php конвертировать ipv6 на номер
- 13. Тестирование кода IPV6 на Android
- 14. Как сменить ipv6 на ipv4?
- 15. Форсировать запросы на использование IPv4/IPv6
- 16. Как отобразить адрес ipv6 на веб-странице?
- 17. Как получить Phoenix для прослушивания на IPv6?
- 18. Программно проверить, разрешен ли IPv6 на окнах
- 19. Как поддерживать и IPv4 & IPv6 на Java
- 20. Restify не будет прослушивать на ipv6
- 21. Связывание сокет сервера IPv6 на Windows,
- 22. поддержка ipv6 поддержки на вкладке галактики
- 23. Сбой установления связи DTLS на ipv6
- 24. dual-stack ipv6/ipv4 на localhost
- 25. Перенос межсетевого экрана с IPv4 на IPv6
- 26. Разрешение запрещено на ipv6 Сокет в Java
- 27. Зачем нужен sin6_family на IPv6-адресе?
- 28. Docker 1.5 на хосте только IPv6
- 29. Проблемы с портами IPv6 на C++
- 30. Преобразование IPv4 в IPv6 на C
Что произошло, когда вы пробовали? –
До сих пор все, что я получаю, это запрос IPv4, но мы по-прежнему работаем над пониманием того, как работать с LB для исходящих инициированных транзакций, так что это, вероятно, больше нас. Каждая часть документации, которую я читаю, только говорит о http, и большинство LB ограничены этим по соображениям безопасности. Это не является ограничением самих LB - служба, к которой я обращаюсь от Azure, имеет LB перед фактическим DNS-резольвером, но я был обеспокоен тем, что причина, по которой он не работал, заключается в том, что он этого не делает. Мы будем беспокоиться о том, чтобы заставить исходящую транзакцию работать, а затем посмотреть, что мы наблюдаем. – brtech