なにかの技術メモ置き場

なにかの技術メモ置き場

@インフラエンジニア

libvirt系コマンド - ネットワークインターフェースのリンク操作

概要

libvirt系コマンド(virsh,virt-install)で見慣れないものを使ってみたので記録しておく。
今回はネットワークインターフェースのリンク操作。

ユースケース

  • ゲストマシンのネットワークインターフェースを外的要因でリンクダウンさせる。
    • 物理マシンで云うところの、対向ポートのリンクダウン、LANケーブルの抜線などを疑似できると思われる。
  • 仮想マシンの作成時にネットワークインターフェースを意図的にリンクダウンさせた状態としたい場合。
    • 異なるネットワークセグメントに複数のDHCPサーバが存在する環境でのPXEブートにおいて、DHCP REQUESTを送るDHCPサーバを制限するためにこの設定が有効。書いていてだいぶ特殊要件だなと思ったが。

ゲストマシン稼働中

  • コマンド
virsh domiflist --domain <ゲストマシン名>
virsh domif-getlink --domain <ゲストマシン名> --interface <ネットワークインターフェース名>
virsh domif-setlink --domain <ゲストマシン名> --interface <ネットワークインターフェース名> --state <up|down>
  • 実行例
[root@kvm01 ~]# virsh domiflist --domain guest01
インターフェース 種類     ソース  モデル   MAC
-------------------------------------------------------
vnet24     bridge     br0        e1000       52:54:00:5a:0e:43
vnet25     bridge     br1        e1000       52:54:00:a9:91:bf
vnet26     bridge     br2        e1000       52:54:00:81:56:0a
[root@kvm01 ~]# virsh domif-getlink --domain guest01 --interface vnet26
vnet26 up
[root@kvm01 ~]# virsh domif-setlink --domain guest01 --interface vnet26 --state down
デバイスが正常に更新されました
[root@kvm01 ~]# virsh domif-getlink --domain guest01 --interface vnet26
vnet26 down

ゲストマシン構築時

--network link.state=<up|down>
  • 実行例
virt-install \
--hvm \
--name guest01 \
--ram 1024 \
--disk path=/var/lib/libvirt/images/guest01.img,size=40 \
--vcpus 1 \
--os-type linux \
--network bridge=br0 \
--network bridge=br1,link.state=up \★未検証
--network bridge=br2,link.state=down \
--graphics vnc,listen=0.0.0.0,port=5900 \
--console pty,target_type=serial \
--pxe

参考

  • 定義ファイルの直接編集も可能
<domain type='kvm' id='13'>
  <devices>
    <interface type='bridge'>
      <mac address='52:54:00:5a:0e:43'/>
      <source bridge='br0'/>
      <target dev='vnet24'/>
      <model type='e1000'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <interface type='bridge'>
      <mac address='52:54:00:a9:91:bf'/>
      <source bridge='br1'/>
      <target dev='vnet25'/>
      <model type='e1000'/>
      <link state='down'/>
      <alias name='net1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </interface>
    <interface type='bridge'>
      <mac address='52:54:00:81:56:0a'/>
      <source bridge='br2'/>
      <target dev='vnet26'/>
      <model type='e1000'/>
      <link state='down'/>
      <alias name='net2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </interface>
  </devices>
</domain>

参考サイト

なし