libvirtを使用してVMを作成すると、デフォルトではNAT環境下に置かれます。
なので、ホストが接続しているネットワークセグメントには存在しておらず、NATを通して外部と通信することになります。
そこで今回はNATを通さなくても外部と通信でき、ホストと同一セグメント上にVMを作成する方法を書きたいと思います。
#環境
- HOST
- CentOS 7.5 (CUI)
- NIC eth0
- bridge br0
- virtual NIC vnet0
- VM
- CentOS 7.5
- NIC eth0
#前提
- 仮想化に必要な各種パッケージ(libvirtなど)はインストール済み
- virt-installを使用してVMの作成した経験あり
上記に関係する説明は省略しますので、インストールがまだの人や不安な人は以下のページを参考にしてください。
- https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/virtualization_deployment_and_administration_guide/sect-installing_the_virtualization_packages-installing_virtualization_packages_on_an_existing_red_hat_enterprise_linux_system
- https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/virtualization_deployment_and_administration_guide/sect-guest_virtual_machine_installation_overview-creating_guests_with_virt_install
#ホストでブリッジを作成
まずはホストでブリッジを作成して、そのブリッジをeth0に接続してみたいと思います。
# nmcli con add type bridge ifname br0 // ブリッジの作成
# nmcli con mod eth0 master bridge-br0 slave-type bridge // eth0をbr0に接続
# systemctl restart network
// 以下確認
# nmcli con
NAME UUID TYPE DEVICE
bridge-br0 xxxxx bridge br0 // br0が作成されました
eht0 xxxxx ethernet eth0
# brctl show
bridge name bridge id STP enabled interfaces
br0 xxxxxxx no eth0 // eth0がbr0に接続されました
これでブリッジの作成は完了です。
#VMの作成
virt-installを使用してVMを作成しましょう。
# virt-install --name demo --memory 1024 --vcpus 1 --disk size=20 --location /path/to/iso --graphics none --network bridge=br0 --extra-args 'console=tty0 console=ttyS0'
オプションのnetworkに作成したブリッジを指定すると、デフォルトのNATではなく、ホストと同一セグメント下にVMを作成
できます。インストール中にネットワーク設定をする際は、スタティックかDHCPサーバがあればDHCPを設定しましょう。
VMの作成が完了したら、ホストのブリッジに仮想インターフェースが接続されているか見てみましょう。
# brctl show
bridge name bridge id STP enabled interfaces
br0 xxxxxxx no eth0
vnet0 // 仮想インターフェース
このように正しくVMが作成できていれば、仮想インターフェースが増えていると思います。
これでVMをホストの同一セグメントに参加させることができました!
#参考