ãã®èšäºã®å·çã«ååããŠãããAkvelonïŒYaroslavlïŒã® Mikhail TryakhovïŒ @PerseptronYar ïŒã«èšäºãæºåããŠãããããšã«æè¬ããŸãã Michaelã¯ããããã¯ãŒãã³ã°ãµãŒãã¹ã«ç¹åããMicrosoft Azure CLIïŒã³ãã³ãã©ã€ã³ã€ã³ã¿ãŒãã§ã€ã¹ïŒéçºããŒã ã§åããŠããŸãã
ã¿ãªããããã«ã¡ã¯ïŒ ä»æ¥ã¯ãIgniteã«ã³ãã¡ã¬ã³ã¹ã«åããŠæºåããããç
ãšéæ»ãåããåŸ
æã®ã€ãããŒã·ã§ã³ã«ã€ããŠè©±ãæã§ãã ãã®ã€ãã³ãã¯9æ28ã30æ¥ã«ã¢ãã©ã³ã¿ã§éå¬ãããŸãããããã§ã«ããã§èŠäºã«æžãããŠããŸã ã ãã ããIPv6ãå€ãã®Microsoft Azureã®å Žæã§å©çšå¯èœã«ãªã£ãããšã¯æ¢ã«ç¥ãããŠããŸãã ç«ã®è©³çŽ°ã®äžã
ãã®æ©èœãæåŸ
ããããšèšãããšã¯ãäœãèšããªãããšã§ãã æåã¯ãæ€çŽ¢ãšã³ãžã³ãAzure IPv6ãã䜿çšãã䟡å€ããããŸãã ç§ã¯çºè¡šããŸãïŒããªãã¯ãããã€ãã®ãªã³ã¯ã ããèŠã€ããã§ããããäž»ã«ãã£ãŒãã£ãŒèŠæ±ïŒäŸãã°ã ãããšãã ïŒãšäŒç€Ÿã®çŽæãäžå¿ã«å転ããŸãã ãããŠä»ããããèµ·ãã£ãïŒ
IPv4ãšIPv6ã¯å®å
šã«ç°ãªããIPã®ä»ã®ããŒãžã§ã³ã«ãŸã£ããäŸåããŸããã ã€ãŸããIPv4ã¢ãã¬ã¹ãIPv6ãªã©ã«å€æããããšã¯äžå¯èœã§ããããšãç解ãããŸãã IPv6ã解決ãå§ããŠããäž»ãªã¿ã¹ã¯ã¯ãAzureä»®æ³ãã·ã³ãšIPv6ã¯ã©ã€ã¢ã³ãã®çžäºäœçšãä¿èšŒãããããããŒããã©ã³ãµãŒïŒNICïŒãNICïŒãããã¯ãŒã¯ã€ã³ã¿ãŒãã§ã€ã¹ããããã¯ãŒã¯ã€ã³ã¿ãŒãã§ã€ã¹ïŒãªã©ã®NRPïŒãããã¯ãŒã¯ãªãœãŒã¹ãããã€ããŒïŒã§å©çšå¯èœãªããŸããŸãªãµãŒãã¹ãšçµ±åããããšã§ãããããªãã¯IPãããã³æŽŸçç©ã
èå³ã®ããæ¹ã®ããã«ãAzure CLIãã©ãããã©ãŒã ã®æçš¿ã§èª¬æãããŠããããŒã ã®ããã€ãã§è©ŠããŠã¿ããããããŸããã ãã®ããã°ã®æåã®ã¬ãã¥ãŒèšäºã§æžããããã«ãããã¯å€ãã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ïŒWindowsãMacãå€ãã®Linuxãã£ã¹ããªãã¥ãŒã·ã§ã³ïŒã§Azureã€ã³ãã©ã¹ãã©ã¯ãã£ã管çã§ããã³ãã³ãã©ã€ã³æ¡åŒµã§ãã ãããã€ã³ã¹ããŒã«ããã«ã¯ãå ¬åŒWebãµã€ãã®æ瀺ã䜿çšã§ããŸãã ã€ã³ã¹ããŒã«ãããããŒãžã§ã³ã¯ã2016幎9æ28æ¥ä»¥éã«ãªãªãŒã¹ããå¿ èŠãããããšã«æ³šæããŠãã ããã å¿ èŠãªãªãªãŒã¹ã¯ãã¡ãããå ¥æã§ããŸã ã
æããŸãããã åçã§ã¯ããã©ã³ãµãŒãã«ã¹ã¿ãã€ãºããããã®ãããŸã§å©çšå¯èœãªãªãã·ã§ã³ãç·è²ã§ãå©çšå¯èœã«ãªã£ãæŽæ°ãç·è²ã§ç€ºããŸãã
ãããããããäž»ãªãã³ã«ã€ããŠèª¬æããŸãã
- IOTéçºè ã®éã®åã³ââ-ãã¥ã¢ã«ã¹ã¿ãã¯ãµããŒãïŒIPv4 + IPv6ïŒ
- Azure DNSã§IPv4 Type Aããã³IPv6 AAAAã¬ã³ãŒãã»ããããµããŒããããããã«ãªããŸãã
- Linuxãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãæèŒããä»®æ³ãã·ã³ã®å€ãã®æŽæ°ãããã€ã¡ãŒãžã¯ãã³ãã®ãã®æ©èœãæ¢ã«ãµããŒãããŠããŸãã å Žåã«ãã£ãŠã¯ã DHCPã䜿çšããå¿ èŠããããŸã
ããã€ãã®å¶éããããŸãã ããšãã°ãã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ã€ã¹çµç±ã§IPv6ã䜿çšããŠãããã®å€æŽãè¡ãããšã¯ã§ããªããªããŸãã åã«æžããããã«ãJSONãšã³ã³ãœãŒã«ã§ã®äœæ¥ã¯ãŸããŸãå€ããªããŸãã ãã®ãããããã«ã¯ããã€ãã®ãªãã·ã§ã³ããããŸãã
- JSONãã³ãã¬ãŒããäœæãã察å¿ãããªãœãŒã¹ã°ã«ãŒãã«ã€ã³ããŒãããŸã
- PowerShellã䜿çšãã
- Azure XPlat CLIã䜿çšãã
ãŸããéžæãããªãœãŒã¹ã°ã«ãŒãïŒãåãã®ãšãããARMã®ã¿ïŒã§ããããã¯ãŒã¯ããµãããããæ§æããã空ã®ãããŒããã©ã³ãµãŒãäœæããå¿ èŠããããŸãã Azure CLIã䜿çšããŠãäžèšã®ã¬ã€ãã®ã³ãã³ããå®è¡ããã ãã§ååã§ãã ããã§äžããããŠããäŸïŒPowerShellããã³ãã¬ãŒããªã©ïŒã«äŸåããéèŠãªïŒãã®ãããã¯ã®èŠ³ç¹ããïŒãã€ã³ãã«éäžããŸãã 以äžã®æ®µèœã®ç®çã¯ãæå®ãããã¢ãŒããã¯ãã£ã®å±éããã»ã¹ãå¯èœãªéã詳现ã«åæããå¶éã説æããããšã§ãã
æŽæµããã«IPv6ãµããŒããæäŸã§ãã3ã€ã®æ¹æ³ã¯ãã¹ãŠãæçµçã«ã¯ãçæãããJSONã察å¿ããAzure SDK APIããŒãžã§ã³ã«ã®ã¿éä¿¡ãããšããäºå®ã«åž°çããŸãã
ãããªãã¯IPãæ§æãã
ãããã£ãŠãäžã®å³ã«åŸã£ãŠãPUTãªã¯ãšã¹ããè¡ãã2ã€ã®ãããªãã¯IPãååŸããŸãã
{ "name": "myIPv4Vip", "id": "/subscriptions/{guid}/resourceGroups/rg1/Microsoft.Network/publicIpAddresses/ip1", "location": "West US", "tags": { âkeyâ: âvalueâ } , âetagâ: âW/\â00000000-0000-0000-0000-000000000000\ââ, "properties": { "provisioningState": âUpdating|Deleting|Failed|Succeededâ, "ipAddress": "1.1.1.1", "publicIpAddressVersion": IPv4, "publicIPAllocationMethod": "Static | Dynamic", "idleTimeoutInMinutes": 4, "ipConfiguration": { "id": "/subscriptions/{guid}/../Microsoft.Network/loadbalancers/MyIpV4AndV6LB1/ipConfigurations/frontendIP1"}, "dnsSettings": { "domainNameLabel": "mylabel", "fqdn": "mylabel.westus.cloudapp.azure.com.", "reverseFqdn": "contoso.com." } } }
ããã§ããã€ãã®ãã€ã³ãã«æ³šæãæããããé¡ãããŸã
- æå®ãããå Žæã¯ãçŸåšãµããŒããããŠããæ°å°ãªãå Žæã® 1ã€ã§ãã ç§ã¯æ¬åœã«ãã®åé¡ã«é¢ããé¢é£ããŒã¿ãå«ããœãŒã¹ããªãŒãã³ããããšããŠããŸãã
- publicIpAddressVersion =ããã©ã«ãã§IPv4ã«ãªããŸã
{ "name": "myIPv6Vip", "id": "/subscriptions/{guid}/resourceGroups/rg1/Microsoft.Network/publicIpAddresses/myIPv6Vip", "location": "West US", "tags": { âkeyâ: âvalueâ } , âetagâ: âW/\â00000000-0000-0000-0000-000000000000\ââ, "properties": { "provisioningState": âUpdating|Deleting|Failed|Succeededâ, "ipAddressâ:â2015::1234:5": , "publicIpAddressVersion": IPv6, " publicIPAllocationMethod ": " Static|Dynamic", "idleTimeoutInMinutes ": 4, "ipConfiguration": { "id": "/subscriptions/{guid}/../Microsoft.Network/loadbalancers/MyIpV4AndV6LB1/ipConfigurations/frontendIP2"}, "dnsSettings": { "domainNameLabel": "mylabel", "fqdn": "mylabel.westus.cloudapp.azure.com.", "reverseFqdn": }, }
ããã€ãã®å¶éããããŸãã
- dnsSettings.fqdnã¯ãFQDN圢åŒã®èªã¿åãå°çšããããã£ã§ããã€ãŸãããã®äŸã§ã¯contoso09152016.westus.cloudapp.azure.comã§ãã
- çŸåšïŒããã³è¿ãå°æ¥ïŒAzure DNSã¯IPv6ã®éã¯ãšãªããµããŒãããäºå®ããªãããã DNSèšå®ã®éFQDNã¯æå®ãããŠããŸããã å€ã¯ç©ºã«ãªããŸãïŒnull /èš±å¯ãããŸããïŒã
- IPã¢ãã¬ã¹ã¯èªã¿åãå°çšã«ãªããŸã
- ãããªãã¯IPã®å²ãåœãŠæ¹æ³ ïŒ Staticãæå®ãããšãäºçŽæžã¿ã®ä»®æ³IPã¢ãã¬ã¹ïŒäºçŽæžã¿ã®VIPïŒãäœæãããŸããã€ãŸããVIPã¯ããŒããã©ã³ãµãŒã§å€æŽãããŸããã ãã©ã¡ãŒã¿ãŒãDynamicãšããŠæå®ãããŠããå Žåããã®ã¢ãã¬ã¹ãå¥ã®ããŒããã©ã³ãµãŒã«é¢é£ä»ãããããšãIPã¢ãã¬ã¹ã®å€ãå€æŽãããå ŽåããããŸãã
- IPv6ã¯ããããªãã¯IPã®æ°ããã€ã³ã¹ã¿ã³ã¹ãäœæããå Žåã«ã®ã¿äœ¿çšã§ããŸãã ãã§ã«ãæ¢åã®ãã®ãIPv4ããIPv6ã«å€æŽããããšã¯äžå¯èœã§ãã
ããŒããã©ã³ãµãŒã®æ§æ
ã¢ãŒããã¯ãã£ã®åæã«ããã次ã®éèŠãªã¹ãããã¯ãããŒããã©ã³ãµãŒãæ§æããããšã§ãã äºæ³ãããã»ã©å€§ãããªããŸããPUTããã³GETãªã¯ãšã¹ãã®ãã¬ãŒã³ããŒã·ã§ã³ããŒãžã§ã³ãã芧ãã ããã
ä»»æã®ãã©ãããã©ãŒã ïŒããšãã°ããã€ãã£ãã®Azure CLIïŒã®ããã¥ã¡ã³ãã«åŸã£ãŠæé ãå®è¡ããããšã«ãããç°¡åã«å®å šã«åŸ©å ã§ããŸã ã
以äžã®ç¹ã«æ³šæããŠãã ããã
ããã³ããšã³ãIPæ§æ-ãããªãã¯IPïŒVIPïŒ
ããã³ããšã³ãIPèšå®ãipVersion = IPv6ããŒãžã§ã³ã®ãããªãã¯IPã¢ãã¬ã¹ãåç
§ããŠããå Žåã次ã®ãã§ãã¯ãå®è¡ãããŸãã
- IPv4ãå®è£ ããå¥ã®ããã³ããšã³ãIPæ§æãå¿ èŠã§ãã
- IPv6ã®å Žåãå éšããŒããã©ã³ãµãŒïŒILBïŒã¯ãµããŒããããŠããªãããããµããããïŒãã©ã³ãµãŒã®ãã©ã€ããŒãããã³ããšã³ãã¢ãã¬ã¹ãæã€ãµããããïŒã¯æå®ã§ããŸããã ãããã£ãŠããã¹ãŠã®é¢é£ããŒã¿ïŒãã©ã€ããŒãIPã¢ãã¬ã¹ãå²ãåœãŠæ¹æ³ïŒã¯null /èš±å¯ãããŸããã
- ããŒããã©ã³ãµãŒã®äžéšãšããŠäœæã§ããIPv6ã®ä»®æ³IPã¢ãã¬ã¹ïŒVIPïŒããŒãžã§ã³ã¯1ã€ã ãã§ãã
ããã¯ãšã³ãã¢ãã¬ã¹ããŒã«ïŒããã¯ãšã³ãïŒ
æ€èšŒã§ã¯ããããã¯ãŒã¯ã€ã³ã¿ãŒãã§ã€ã¹ïŒNICïŒã®èšå®ã確èªããŸãã åããã¯ãšã³ãã¢ãã¬ã¹ããŒã«-ã€ã³ã¹ã¿ã³ã¹ã¯ããµããŒããããŠããã¢ãã¬ã¹ã1çš®é¡ïŒIPv4ãŸãã¯IPv6ïŒã®NICãåç
§ã§ããŸãã
ããŒããã©ã³ãµãŒã«ãŒã«ïŒFE <-> BEïŒ
ããã³ããšã³ãIPèšå®ãipVersion = IPv6ã®ãããªãã¯IPã¢ãã¬ã¹ãåç
§ããå Žåã次ã®å¶éãé©çšãããŸãã
- ããã¯ãšã³ãã¢ãã¬ã¹ã¯ãIPv6 NICæ§æãåç §ããŸãã
- ãããŒãããŒããã©ã³ãµãŒã¯IPv6ããŒãžã§ã³ã§ã¯ãµããŒããããŠããŸãã
åä¿¡NATããŒã«ã«ã¯ãIPv6 VIPãåç §ããæ§æãå«ããããšã¯ã§ããŸããã
åä¿¡NATã«ãŒã«ã¯ãããã³ããšã³ãIPããã³ããã¯ãšã³ãIPæ§æãIPv6ã§ãªããã°ãªããªããšããæ¡ä»¶ãæºããå¿ èŠããããŸãã
ã¢ãŠãããŠã³ãNATã«ãŒã«
- ããã³ããšã³ãIPã³ã³ãã£ã®ã¥ã¬ãŒã¿ãŒããã®ããŒãžã§ã³ã®ä»®æ³IPã¢ãã¬ã¹ãåç §ããå ŽåãIPv6ã«åºã¥ããã«ãŒã«ãå«ããããšãã§ããŸãã
- ãã®å Žåãããã¯ãšã³ãã³ã³ãã£ã®ã¥ã¬ãŒã¿ãŒãIPv6ã«åºã¥ããŠããå¿ èŠããããŸãã
- ããŒããã©ã³ãµãŒå ã§ã¯ãIPv6ããŒãžã§ã³ã®1ã€ã®ä»®æ³IPã¢ãã¬ã¹ã®ã¿ãèš±å¯ãããŸãã
ããŠãåè¿°ã®ããã«ãæ¢åã®æ§æã§ã¯IPã¢ãã¬ã¹ã®ããŒãžã§ã³ãæŽæ°ããããšã¯ã§ããŸããïŒIPv4-> IPv6ïŒã
ãããã¯ãŒã¯ã€ã³ã¿ãŒãã§ã€ã¹ã®ã»ããã¢ãã
ããã§ã¯ããããã¯ãŒã¯ã€ã³ã¿ãŒãã§ã€ã¹ã®æ§æäŸãçŽæ¥åç §ããããšãææ¡ããŠããŸãã
{ "name": "mynic1", "id": "/subscriptions/{guid}/resourceGroups/myrg1/providers/Microsoft.Network/networkInterfaces/vm1mynic1", "location": "West US", "tags": { âkeyâ: âvalueâ } , âetagâ: âW/\â00000000-0000-0000-0000-000000000000\ââ, "properties": { "provisioningState": âUpdating|Deleting|Failed|Succeededâ, "virtualMachine": {"id": "/subscriptions/{guid}/../Microsoft.Compute/virtualMachines/vm1"}, "macAddress": "BC-31-5B-E2-EE-B1" "networkSecurityGroup":{"id":"/subscriptions/{guid}/../Microsoft.Network/networkSecurityGroups/myNSG1" }, "ipConfigurations": [ { "name": "myIPv4IP1", "properties": { " privateIpAddressVersion ": IPv4 "subnet": {"id": "/subscriptions/{guid}/../Microsoft.Network/virtualNetworks/myvnet1/subnets/mysub1"}, "privateIPAddress": "10.0.0.8", "privateIPAllocationMethod": "Static | Dynamic", "publicIPAddress": {} "loadBalancerBackendAddressPools": [ {"id": "/subscriptions/{guid}/../Microsoft.Network/loadBalancers/mylb1/backendAddressPools/IPv4BackendPool1"} ], "loadBalancerInboundNatRules": [ ] } }, { "name": "myIpV6Ip1", "id": "/subscriptions/{guid}/../Microsoft.Network/networkInterfaces/vm1mynic1/ipConfigurations/ myIpV6Ip1", âetagâ: âW/\â00000000-0000-0000-0000-000000000000\ââ, "properties": { "provisioningState": âUpdating|Deleting|Failed|Succeededâ, " privateIpAddressVersion ": IPv6, "subnet": "privateIPAddress ": "privateIPAllocationMethod": Dynamic", "publicIPAddress": "loadBalancerBackendAddressPools": [ {"id": "/subscriptions/{guid}/../Microsoft.Network/loadBalancers/myIPv6lb1/backendAddressPools/IPv6BackendPool1"} ], "loadBalancerInboundNatRules": [] } } ], "dnsSettings": { "dnsServers": ["1.0.0.1","2.0.0.2"], "appliedDnsServers": ["1.0.0.1","2.0.0.2", â3.0.0.3â] }, âenableIPForwardingâ: false } }
IPv6ããŒãžã§ã³ãéžæãããšã次ã®å¶éã課ããããŸãã
- NICã¯æ°èŠã§ããããæ¢åã®ä»®æ³ãã·ã³ã«é¢é£ä»ããããŠããªãå¿ èŠããããŸãã
- ãããã¯ãŒã¯ã€ã³ã¿ãŒãã§ã€ã¹èšå®ã®ã»ããã«ã¯ãipVersion = IPv4ã®èšå®ãå°ãªããšã1ã€å¿ èŠã§ãã
- éžæããNICã¯ãipVersion = IPv6ã®ä»®æ³ãã·ã³äžã®å¯äžã®ãã®ã§ãã çŸåšããã«ãNICããããŸããã
- privateIPAllocationMethod = Dynamicã¯å¯äžã®æå¹ãªå€ã§ãã
- ãã©ã€ããŒãIPã¯IPv6ã§ã¯äœ¿çšã§ããŸããã
- æ¢åã®ä»®æ³ãã·ã³ãã¢ããã°ã¬ãŒãããŠãIPv4ã§ã¯ãªãIPv6ããµããŒãããããšã¯ã§ããŸããã
äžèšã®æ å ±ããAzureã§IPv6ã®äœ¿çšãéå§ãããšãã«çºçããå¯èœæ§ã®ãããã¹ãŠã®åé¡ãããŸãå æããã®ã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã
æªæ¥ãèŠã
å°æ¥ã«ã€ããŠè©±ãå Žåãæ®å¿µãªãããéåžžã«å³ããå¶éãä¿®æ£ããæŽæ°ããã€è¡ããããã®èšäºããã€åœ¹ã«ç«ããªããªããã¯èšããŸããã ãããŸã§ã®ãšãããAzure DNSããŒã ãŸãã¯NRPïŒãããã¯ãŒã¯ãªãœãŒã¹ãããã€ããŒïŒããã®æ å ±ã¯ãããŸããã æ¢åã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã®ããææ ã®ããã£ã移è¡ã¯ãããŸããïŒ ç§ã«ãšã£ãŠãããããã®è³ªåã¯éãããŠããŸãã
ç§ããŸã ç¥ã£ãŠããããšã«ã€ããŠè©±ããšïŒ
- ãããã«ããããã¹ãŠãIPv4ãIPv6ãããã³IPv4 + IPv6ããµããŒãããå®å šããªãã£ã«åãã£ãŠããŸãã
- ãããã¯ãŒã¯ãšãµããããã¯IPv6ã®ãµããŒããéå§ããŸã-ããã¯å€§å€ãªäœæ¥ã§ãããã§ããã ãæ©ããããã®åã³ãçãããšå ±æããŸãã
ãæž èŽããããšãããããŸãããã質åã¯ãåãåãããã ããã