テクノロジーガイド

仮想化環境のネットワーク設定とゲストインストールガイド

3 min read 仮想化 更新されました 18 Oct 2025
仮想化ネットワークとKickstartでのゲスト自動インストール
仮想化ネットワークとKickstartでのゲスト自動インストール

概要

このガイドはホスト上で virt-manager(Virtual Machine Manager)を使って仮想ネットワークを作成し、kickstart ファイルでゲスト(node01, node02)を自動インストールする手順を示します。コードブロックやコマンドはそのまま実行できます。

重要: virt-manager を起動したまま放置するとメモリを消費します。作業が終わったら終了してください。

前提条件

  • root 権限で操作を行うこと。
  • ホストに libvirt / virt-manager / virt-install がインストールされていること。
  • NFS サーバ(例: 192.168.222.1)にインストールメディアと kickstart が配置されていること。

目標(Primary intent)

  • 仮想ネットワークを作成して isolated ネットワーク(public1, private1)を用意する。
  • node01/node02 用の kickstart を用意し、virt-install で自動インストールする。

1. 仮想ネットワークの作成

ホスト上で root として以下を実行します:

virt-manager

Virtual Machine Manager のウィンドウが表示されます。Domain-0 とそのリソースが見えるはずです。

手順(Virtual Machine Manager の GUI):

  • メニューで『Edit』を選び、『Host details』をクリックします。
  • Host Details ウィンドウの左枠には “default” のみが表示されます。下にある “Add” をクリックします。
  • “Create a new virtual network” ウィンドウが表示されたら Forward をクリックします。
  • ネットワーク名に public1 を入力して Forward をクリックします。
  • Network: 192.168.222.0/24 を設定して Forward をクリックします。
  • DHCP 範囲: Start: 192.168.222.128 End: 192.168.222.254 を設定して Forward をクリックします。
  • Connectivity は “Isolated virtual network” を選択して Forward をクリックします。
  • サマリを確認して Finish をクリックします。

サマリ例:

  • Network Name: public1
  • IPV4 network:
    • Network: 192.168.222.0/24
    • Gateway: 192.168.222.1
    • Netmask: 255.255.255.0
  • DHCP:
    • Start address: 192.168.222.128
    • End address: 192.168.222.254
  • Forwarding:
    • Connectivity: Isolated virtual network

同様の手順で private1 を作成します。設定値:

  • Network Name: private1
  • Network: 192.168.100.0/24
  • Gateway: 192.168.100.1
  • Netmask: 255.255.255.0
  • DHCP Start: 192.168.100.128
  • DHCP End: 192.168.100.254
  • Connectivity: Isolated virtual network

完了したら Host Details ウィンドウで『File > Close』、その後『File > Quit』で virt-manager を終了してください。

注意: virt-manager を起動したまま放置すると大量のメモリを消費します。メモリ消費が問題になった場合は Xen を再起動する必要があります(環境依存)。

ネットワーク作成後、ifconfig で vnet0 と vnet1 が確認できます。例:

ifconfig
   vnet0      Link encap:Ethernet  HWaddr 00:00:00:00:00:00
              inet addr:192.168.222.1  Bcast:192.168.222.255  Mask:255.255.255.0
              inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0

              TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:0 (0.0 b)  TX bytes:7782 (7.5 KiB)
    
    vnet1      Link encap:Ethernet  HWaddr 00:00:00:00:00:00
              inet addr:192.168.100.1  Bcast:192.168.100.255  Mask:255.255.255.0
              inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:27 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:0 (0.0 b)  TX bytes:7712 (7.5 KiB)

検証コマンド:

  • virsh net-list –all (libvirt ネットワークの一覧確認)
  • ifconfig | grep vnet (vnet インターフェースの確認)

2. kickstart ファイル

ここでは node01 用の kickstart を示します。node02 は同じファイルを複製し IP とホスト名を変更してください。

2.a node01 の kickstart(そのまま配置して使えます)

#START of node01_ks.cfg
install
text
reboot
#uncomment the line you want to use
# for nfs
nfs --server=192.168.222.1 --dir=/var/ftp/pub/centos5u1
##url --url ftp://:@/
# this will be an anonymous ftp access
#url --url ftp://192.168.222.1/pub/centos5u1/i386
#key --skip
lang en_US.UTF-8
keyboard us
skipx
# private
network --device eth1 --bootproto static --ip 192.168.100.10 --netmask 255.255.255.0 
# public - disabled on initial install
network --device eth0 --bootproto static --ip 192.168.222.10 --netmask 255.255.255.0 --gateway 192.168.222.1 --nameserver 192.168.222.1 --hostname node01.example.com
## password is n0de01pass
rootpw --iscrypted $1$Lqk1Y$Y8TIWCMLiiPjVt1GjRS0F1
## password is n0de02pass
#rootpw --iscrypted $1$Rn47b$DDwgrOv3IFGf3HVhsxv9X0
firewall --disabled
authconfig --enableshadow --enablemd5
selinux --disabled
timezone --utc Asia/Singapore
services --disabled ipsec,iptables,bluetooth,hplip,firstboot,cups,sendmail,xfs
bootloader --location=mbr --driveorder=xvda,xvdb --append="rhgb quiet"
clearpart --all --initlabel --drives=xvda
part /boot --fstype ext3 --size=100 --ondisk=xvda
part pv.2 --size=0 --grow --ondisk=xvda
volgroup VolGroup00 --pesize=32768 pv.2
logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=1000 --grow --maxsize=1984
logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
%packages
@development-libs
@system-tools
@gnome-software-development
@text-internet
@x-software-development
@dns-server
@core
@authoring-and-publishing
@base
@ftp-server
@network-server
@legacy-software-development
@java
@legacy-software-support
@smb-server
@base-x
@web-server
@printing
@server-cfg
@sql-server
@admin-tools
@development-tools
emacs
lsscsi
gnutls-utils
hwbrowser
audit
iptraf
mesa-libGLU-devel
kexec-tools
device-mapper-multipath
vnc-server
xorg-x11-utils
xorg-x11-server-Xnest
xorg-x11-server-Xvfb
imake
iscsi-initiator-utils
ypserv
-sysreport

%post
cat <> /etc/hosts
# private  or replace with nodeXY-
192.168.100.10  node01-priv
192.168.100.20  node02-priv
192.168.100.1   node00-priv

#public or replace with nodeXY
192.168.222.10 node01
192.168.222.20 node02
192.168.222.1  node00
EOT

# yum local repo
mv /etc/yum.repos.d/*.repo /tmp
cat > /etc/yum.repos.d/centos5.repo << EOF
[centos5-Server]
name=CEntos5 Server
baseurl=http://node00/centos5u1/i386
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
EOF

#change default runlevel
ed /etc/inittab << EOF

,s/id:5:initdefault:/id:3:initdefault:/g
.
w
EOF

# vncserver stuff
cat << EOT > /opt/vnc_xstartup
#!/bin/sh

# run vncserver and copy to your $HOME/.vnc/xstartup file
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup

[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 130x30+12+12 -ls -bg black -fg green -title "$VNCDESKTOP Desktop" &
mwm &
EOT
# END of nod01_ks.cfg

注: kickstart 内で firewall を “disabled” にしています。実運用では必要に応じて firewall 設定を行ってください(セキュリティリスク注意)。

2.b node02 の準備

node01_ks.cfg を node02_ks.cfg にコピーし、IP やホスト名(node02)を適切に修正してください。


3. ゲストシステム(node01, node02)のインストール

インストールは CLI で virt-install を使って実行します。事前にゲストの NIC の MAC アドレスを生成しておきます。

3.a MAC アドレス生成(例: Red Hat のガイドにあるスクリプト)

#!/usr/bin/python
# macgen.py script to generate a MAC address for Red Hat Virtualization guests
import random
#
def randomMAC():
   mac = [ 0x00, 0x16, 0x3e,
     random.randint(0x00, 0x7f),

     random.randint(0x00, 0xff),
     random.randint(0x00, 0xff) ]
   return ':'.join(map(lambda x: "%02x" % x, mac))
#
print randomMAC()
# careful with the indention
# this is from the Virtualization guide from redhat.com
# http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5.2/html/Virtualization/index.html

使用例(ホスト上):

node01 NICs  
# for eth0 . public1  
[root@node00 ~]# ./macgen.py  
00:16:3e:33:32:07  
# for eth1 . private1  
[root@ node00 ~]# ./macgen.py  
00:16:3e:55:6b:83

同様に node02 の仮想 NIC の MAC を生成してください。

3.b node01 の virt-install コマンド

virt-install -p -n node01 -r 768 -f /dev/Virtual00VG/lvNODE01 -m 00:16:3e:33:32:07 \  
-w network:public1 -m 00:16:3e:55:6b:83 -w network:private1 \  
-l nfs:192.168.222.1:/var/ftp/pub/centos5u1/i386 \  
-x "ksdevice=eth0 ks=http://192.168.222.1/centos5u1/node01_ks.cfg" --vnc

パラメータ解説:

  • -n node01 : ゲスト名
  • -r 768 : RAM(MB)
  • -f /dev/Virtual00VG/lvNODE01 : ゲストで使用するディスク(論理ボリューム例)
  • -m : NIC の MAC アドレス
  • -w network:public1 : NIC を接続する仮想ネットワーク
  • -l nfs:… : インストールソース(NFS)
  • -x “ksdevice=eth0 ks=…” : kickstart 指定(この例では eth0 経由で kickstart を取得)
  • –vnc : インストール画面を VNC で表示

3.c node02 の virt-install コマンド

virt-install -p -n node02 -r 768 -f /dev/Virtual00VG/lvNODE02 -m 00:16:3e:1e:05:b6 \  
-w network:public1 -m 00:16:3e:40:3d:b0 -w network:private1 \  
-l nfs:192.168.222.1:/var/ftp/pub/centos5u1/i386 \  
-x "ksdevice=eth0 ks=http://192.168.222.1/centos5u1/node02_ks.cfg" --vnc

備考: 私は物理ホスト内で VNC セッションから上記を実行し、ゲストのインストール画面を自動的に確認しました。物理コンソールで実行すればインストールはバックグラウンドで進行し、後から virt-manager でゲストを開いて進行状況を確認できます。


検証と受け入れ基準

以下がインストール完了後に満たすべき主要なチェック項目です。

  • ホスト上で virsh list –all に node01, node02 が存在する。
  • ゲストのネットワークインターフェースに期待する IP(例: 192.168.222.10, 192.168.100.10)が割り当てられている。
  • ホストからゲストへ ping が通る(両ネットワークで確認)。
  • /etc/hosts が kickstart で追記されている。
  • 必要なサービスが起動しており、SSH ログインが可能であること(自動インストール後の確認)。

トラブルシューティング(よくある問題と対処)

  • virt-manager が大量のメモリを消費する: 作業終了後に必ず終了する。メモリ回復が必要な場合はホストの再起動や Xen の再起動を検討。
  • kickstart が読めない/HTTP 404: kickstart ファイルの URL、NFS/HTTP のパス、パーミッションを確認。
  • DHCP/固定 IP の競合: 既存ネットワークと IP 範囲が競合していないか確認。isolated ネットワークにしていることを再確認。
  • virt-install 実行でエラー: MAC アドレスやネットワーク名、ディスクデバイス名が正しいか確認。

セキュリティと運用上の注意

  • kickstart ではパスワードが暗号化済みであることを確認してください。明文パスワードは避ける。
  • kickstart 内で firewall を無効化している設定は運用上のリスクがあります。必要に応じて firewall を有効にし、必要なポートだけ開ける運用にしてください。
  • VNC を使う際は、トンネル(SSH)や VLAN でアクセス制限をかけることを推奨します。

代替アプローチ

  • PXE ブート + TFTP を使って自動インストールする方法(kickstart と組み合わせ可)。
  • cloud-init 対応のイメージを使い、クラウド風のプロビジョニングを行う(新規環境に向く)。
  • 仮想ネットワークの代わりに Open vSwitch を使って複雑なネットワーク分離を実現する。

運用チェックリスト(役割別)

ホスト管理者:

  • virt-manager を使ってネットワークを作成する。
  • NFS/HTTP にインストールメディアと kickstart を配置する。

ネットワーク管理者:

  • 仮想ネットワークの IP 範囲と DHCP 設定を承認する。
  • 既存のインフラと IP が衝突しないことを確認する。

システム管理者(ゲスト側):

  • kickstart を編集してホスト名/IP を指定する。
  • ポストインストールのセキュリティ設定(SSH 鍵、ファイアウォール)を実施する。

1行用語集

  • kickstart: Red Hat 系ディストリビューションの自動インストール設定ファイル。
  • virt-install: コマンドラインで仮想マシンを作成・インストールするツール。
  • virt-manager: GUI ベースの仮想マシン管理ツール。

まとめ

このガイドでは仮想ネットワークの作成から kickstart を使った自動インストール、virt-install によるゲスト作成までの流れを示しました。実運用ではセキュリティ(firewall や VNC の保護)と IP 設計に注意してください。

重要: ここで示したパスワードや設定例はサンプルです。本番用には必ず固有の値とセキュリティ対策を適用してください。

共有する: X/Twitter Facebook LinkedIn Telegram
著者
編集

類似の素材

Googleマップで駐車位置を手動保存する方法
ハウツー

Googleマップで駐車位置を手動保存する方法

iPhoneでPrime Videoが動かない時のトラブル解決ガイド
トラブルシューティング

iPhoneでPrime Videoが動かない時のトラブル解決ガイド

クリプトアービトラージ入門:ボットで利益を狙う
暗号資産

クリプトアービトラージ入門:ボットで利益を狙う

イギリスでInstagramインフルエンサーになる方法
Social Media

イギリスでInstagramインフルエンサーになる方法

Android 7でフローティングウィンドウを有効にする方法
Android

Android 7でフローティングウィンドウを有効にする方法

Ubuntuでシェルユーザーを追加・削除する方法
Linux

Ubuntuでシェルユーザーを追加・削除する方法