Ask Learn
Preview
Ask Learn is an AI assistant that can answer questions, clarify concepts, and define terms using trusted Microsoft documentation.
Please sign in to use Ask Learn.
Sign inThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Azure 上で IaaS ベースのシステムを構築・運用されているお客様から「既に仮想マシンが配置されている仮想ネットワークのアドレスを変更したいんだけどどうすればいいの?」というご質問をたまにいただきます。そのご質問の背景として代表的なものは以下のようなものが挙げられます。
仮想ネットワークのアドレス計画は慎重に、といった注意喚起をすることが本ブログの趣旨ではありません。もちろん計画的であるにこしたことはありませんが、構築段階でうっかりこのような状況に陥ってしまうことは私の実体験としても良くあります。以降ではある程度構築が進んでしまったシステムのネットワーク構成変更における TIPS をご紹介したいと思います。
Azure 仮想ネットワークは SDN らしく構成に柔軟性がありますが、仮想マシンが配置されていると変更にいろいろと制約が出てきます。その最たるものがこちらの FAQ にあるように “仮想マシンが配置されているサブネットは変更・削除が出来ない” になります。しかし裏を返せば以下の変更は可能であるということになります。
また再起動を伴いますが、仮想マシンを現在のサブネットから別のサブネットへ移動することが可能です。これらの操作を組み合わせることで理想的なネットワーク構成に修正していくことが出来るわけです。
まず簡単なところから行くと、仮想ネットワークのアドレス空間に空きがあれば、新規のサブネットを追加することは可能です。またサブネットに仮想マシンが配置されていなければ、サブネットのアドレス範囲の変更や、サブネット自体の削除も可能です。
Azure ポータルでサブネットの追加、削除、アドレス範囲の変更を行うためには、仮想ネットワークのサブネットブレードを使用します。ここでは割愛しますが PowerShell や CLI、ARM テンプレートから同様の操作を行う事も可能です。
前述のような操作は仮想ネットワークのアドレス空間に余裕がある場合に可能ですが、もし足りないならば広げてしまえばよいわけです。アドレス空間が広がれば新規にサブネットを作成できるようになります。例えば下図はセキュリティ上やっぱり Web Application Firewall が必要になった、あるいは運用上 VPN 経由でのメンテナンスが必要になった、ということでサブネットを追加したイメージです。
Azure ポータルでアドレス空間を拡大するためには、仮想ネットワークのアドレス空間ブレードを使用します。ここでは割愛しますが PowerShell や CLI、ARM テンプレートから同様の操作を行う事も可能です。
あとは先ほどのようにサブネットを追加していけばよいわけです。
これはあまり知られていないかもしれませんが、仮想ネットワークは複数のアドレス空間を持つことが可能です。単にアドレス空間を広げてしまうと、接続先の他のネットワークと重複してしまうようなケースに有効です。こちらもアドレス空間が連続していないだけで考え方としては前述のものと同様です。
他のネットワークと接続する必要が後から発覚したが、初期の構築段階では予定が無かったためアドレス空間が重複してしまっていた、ということもありました。どちらか一方のアドレス空間およびサブネットを重複しないものに切り替えてやる必要があるわけですが、各サブネットは仮想マシンがデプロイされているため変更ができません。またそのサブネットを含む仮想ネットワークのアドレス空間も変えることができません。このような場合には以下のステップで変更していきます。
仮想ネットワークやサブネットの修正方法は既に紹介していますので、ここで必要なのは仮想マシンを別のサブネットに移動する方法です。仮想マシンが接続されているネットワークインターフェイスの IP 構成ブレードを開くことで、接続先のサブネットを切り替えることが可能です。
ドロップダウンからサブネットを選択して保存ボタンを押した際に仮想マシンが起動していると、自動的にシャットダウンされサブネットが変更されたのちに再起動が行われます。改めて DHCP によって異なる IP アドレスが割り当てられることになりますので、名前ではなく IP アドレスで通信しているシステムではご注意ください。
サブネット内に大量の仮想マシンがデプロイされている場合には 1 つずつ作業を行うのも大変ですので、スクリプト化して実行することをお勧めします。例えば Azure CLI を使用する場合には以下のような手順になります。
まず移動対象の仮想マシンの情報を取得し、 networkProfile セクションに記載されたネットワークインターフェイスの名前を確認します。
$ az vm show --resource-group rgName --name vmName
次にネットワークインターフェイスに設定された IP 構成の名前を取得します。
$ az network nic ip-config list --resource-group rgName --nic-name nicName
最後にネットワークインターフェイスの接続先サブネットを変更します。
$ az network nic ip-config update --resource-group rgName --nic-name –name ipconfig1 --vnet-name vnetName --subnet NextSubnet
最後のコマンド実行時に仮想マシンが起動状態だと再起動が発生します。再起動にはそれなりに時間がかかりますので、多数の仮想マシンを移動するときには事前に全てシャットダウンしておくことをお勧めします。
こちらに関しては前述のように仮想マシンを別のサブネットに移動した後で、元のサブネットを拡大・縮小し、再度元のサブネットに移動すればよいわけです。仮想マシンが起動状態で行うと 2 回再起動が発生して時間がもったいないので、事前にシャットダウンしておくことをお勧めします。
Ask Learn is an AI assistant that can answer questions, clarify concepts, and define terms using trusted Microsoft documentation.
Please sign in to use Ask Learn.
Sign in