先日は Network Security Group を紹介させて頂いたが、今回は複数NICを持つ仮想マシンを作成して操作してみたいと思う。すでに以下の様な立派な記事が記載されているが、動かしてみないとわからないところもあるので、本記事も合わせて一読してほしい。
- Azure VM での複数の NIC のサポート、Azure へのネットワーク仮想アプライアンスの導入
- Multiple VM NICs and Network Virtual Appliances in Azure
今回利用する Multi NIC という社畜御用達な機能は、L サイズ以上の大きさのインスタンスを利用する必要がある。参考までに、インスタンスサイズによる NIC 登録数は以下になる。
インスタンスサイズ | 作成可能NIC数 |
L サイズ (A3) および A6 | 2 |
XL サイズ (A4) および A7 | 4 |
A9 | 2 |
D3 | 2 |
D4 | 4 |
D13 | 4 |
Multi NIC、仮想ネットワーク、Network Security Group を利用して構築するネットワークは以下になる。
Multi NIC 仮想マシンの作成
早速 PowerShell を利用して環境を構築する。仮想ネットワーク、Network Security Group の作成は Microsoft AzureのNetwork Security Groupを使ってなんちゃってネットワーク設計(インスタンスのインターネットアクセス禁止とか)をする の記事を参考にして作成したうえで、以下の PowerShell コマンドを実行する。
# 仮想マシンイメージの選択(参考記事が使っていた Windows Serve 2012 R2 を選択 $image = Get-AzureVMImage -ImageName "a699494373c04fc0bc8f2bb1389d6106__Windows-Server-2012-R2-201408.01-en.us-127GB.vhd" # インスタンスの大きさは Large を選択(Large 以上のサイズでないと、Multi NIC インスタンスを作成できない $vm = New-AzureVMConfig -Name "MultiNicVM" -InstanceSize "Large" -Image $image.ImageName # インスタンスのプロビジョニング情報を設定する Add-AzureProvisioningConfig -VM $vm -Windows -AdminUsername <ユーザ名> -Password <パスワード> # NIC0?は Subnet-DMZ に所属させる Set-AzureSubnet -SubnetNames "Subnet-DMZ" -VM $vm Set-AzureStaticVNetIP -IPAddress 10.0.0.11 -VM $vm # NIC1 は Subnet-AP_DB に所属させる Add-AzureNetworkInterfaceConfig -Name "NIC1" -SubnetName "Subnet-AP_DB" -VM $vm -StaticVNetIPAddress "10.0.1.11" # 仮想ネットワーク vnet01 を指定し、仮想マシンを作成する New-AzureVM -ServiceName <service name> -VNetName "vnet01" -VMs $vm
上記のコマンドを実行した仮想マシンにリモートデスクトップで入り、ipconfig, route print を実行した結果は以下となる。
C:\Users\myuser>ipconfig Windows IP Configuration Ethernet adapter Ethernet 2: Connection-specific DNS Suffix . : multiniceastjpvm.l5.internal.cloudapp.net Link-local IPv6 Address . . . . . : fe80::f479:f0e8:eac3:67ea%26 IPv4 Address. . . . . . . . . . . : 10.0.0.11 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 10.0.0.1 Ethernet adapter Ethernet : Connection-specific DNS Suffix . : multiniceastjpvm.l5.internal.cloudapp.net Link-local IPv6 Address . . . . . : fe80::a5f1:fd46:f60c:e6b7%22 IPv4 Address. . . . . . . . . . . : 10.0.1.11 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 10.0.1.1 Tunnel adapter isatap.multiniceastjpvm.l5.internal.cloudapp.net: Media State . . . . . . . . . . . : Media disconnected Connection-specific DNS Suffix . : multiniceastjpvm.l5.internal.cloudapp.net Tunnel adapter Teredo Tunneling Pseudo-Interface: Connection-specific DNS Suffix . : IPv6 Address. . . . . . . . . . . : 2001:0:9d38:90d7:2cc6:18f8:f5ff:fff4 Link-local IPv6 Address . . . . . : fe80::2cc6:18f8:f5ff:fff4%15 Default Gateway . . . . . . . . . : :: C:\Users\myuser>route print =========================================================================== Interface List 31...00 0d 3a 50 05 96 ......Microsoft Hyper-V Network Adapter #8 27...00 0d 3a 50 04 a9 ......Microsoft Hyper-V Network Adapter #7 1...........................Software Loopback Interface 1 15...00 00 00 00 00 00 00 e0 Teredo Tunneling Pseudo-Interface 18...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #2 =========================================================================== IPv4 Route Table =========================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 10.0.0.1 10.0.0.11 5 0.0.0.0 0.0.0.0 10.0.1.1 10.0.1.11 5 10.0.0.0 255.255.255.0 On-link 10.0.0.11 261 10.0.0.11 255.255.255.255 On-link 10.0.0.11 261 10.0.0.255 255.255.255.255 On-link 10.0.0.11 261 10.0.1.0 255.255.255.0 On-link 10.0.1.11 261 10.0.1.11 255.255.255.255 On-link 10.0.1.11 261 10.0.1.255 255.255.255.255 On-link 10.0.1.11 261 127.0.0.0 255.0.0.0 On-link 127.0.0.1 306 127.0.0.1 255.255.255.255 On-link 127.0.0.1 306 127.255.255.255 255.255.255.255 On-link 127.0.0.1 306 224.0.0.0 240.0.0.0 On-link 127.0.0.1 306 224.0.0.0 240.0.0.0 On-link 10.0.0.11 261 224.0.0.0 240.0.0.0 On-link 10.0.1.11 261 255.255.255.255 255.255.255.255 On-link 127.0.0.1 306 255.255.255.255 255.255.255.255 On-link 10.0.0.11 261 255.255.255.255 255.255.255.255 On-link 10.0.1.11 261 =========================================================================== Persistent Routes: None IPv6 Route Table =========================================================================== Active Routes: If Metric Network Destination Gateway 15 306 ::/0 On-link 1 306 ::1/128 On-link 15 306 2001::/32 On-link 15 306 2001:0:9d38:90d7:444:c23:f5ff:fff4/128 On-link 27 261 fe80::/64 On-link 31 261 fe80::/64 On-link 15 306 fe80::/64 On-link 15 306 fe80::444:c23:f5ff:fff4/128 On-link 27 261 fe80::6c59:b544:5e61:1eaa/128 On-link 31 261 fe80::c480:65b1:30bd:2f52/128 On-link 1 306 ff00::/8 On-link 27 261 ff00::/8 On-link 31 261 ff00::/8 On-link 15 306 ff00::/8 On-link =========================================================================== Persistent Routes: None
上記を確認すると、Add-AzureNetworkInterfaceConfig で追加した NIC 側(10.0.1.11)と Set-AzureStaticVNetIP で登録された NIC ではメトリックの差がないことが分かる。
Network Security Group の NSG01, NSG02 ではそれぞれ仮想マシン⇒インターネットへのアクセスを禁止しているが、仮想マシンからインターネットに接続するにつなげたり繋げなかったりするという現象が起きた。これから、「追加した NIC には Network Security Group が効かない」ということが推察(確認レベルにはならない…)できる。
まだドキュメントが多い機能ではないので推察の域をできないところもあるが参考になれば幸いだ。
その他の留意点
また、Multi NIC 利用時の留意点としては以下となるので、利用前に一読してほしい。
- Multi NIC は GA リリース(一般提供)なので、SIerも安心して使えるよ!(サポート上はね!!
- NIC 追加による仮想マシンへの追加料金は存在しません
- Linux でも Multi NIC は使えます
- Multi-NIC の仮想マシンはコマンド経由でしか作成できない(管理ポータルからは作成できない
- 仮想マシンの作成後、NICの追加や削除はできない
- 追加 NIC は負荷分散セット内で使用できない( ロードバランサ側のVIPとマッピング取れるのがデフォルトNICだけらしい
- デフォルトNIC以外では Network Security Group や Force Tunneling が使えないので要注意
- Multi NIC 利用時、オーダーはランダムになるらしい。以下は抜粋となるが、デフォルト NIC がどれになるかもどうもランダムっぽいような…。
The order of the NICs inside the VM will be random, but the IP addresses and the corresponding MACs will remain the same.