hnakamur’s blog

ものすごい勢いで忘れる私のために未整理でもいいからとりあえずメモ

2010-11-19

KVMでブリッジを使う設定でCentOSをインストール

参考:CentOS/KVMによるサーバ仮想化 - OSSでLinuxサーバ構築


前提

DNSサーバ兼DHCPサーバがLAN内に存在。IPアドレスは192.168.0.1とします。

ホスト、ゲストとも固定IPを使用。IPアドレスはそれぞれ192.168.0.2、192.168.0.3とします。


ホスト側のネットワーク変更


/etc/sysconfig/network-scripts/ifcfg-br0を作成。

# Bridge
DEVICE=br0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.0.2
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=192.168.0.1
TYPE=Bridge
DELAY=0

/etc/sysconfig/network-scripts/ifcfg-eth0を編集(HWADDRは編集前の値をそのまま残す)。

DEVICE=eth0
TYPE=Ethernet
HWADDR=00:00:00:00:00:00
ONBOOT=yes
BRIDGE=br0


以下のコマンドを実行してネットワーク再起動。

# /etc/init.d/network restart

ゲストのブリッジ用にホストのiptablesを変更。これを忘れるとゲストで名前解決が出来ないので注意。

/etc/sysctl.confを編集して以下の設定を追加または変更。

net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

以下のコマンドを実行して設定を即座に反映。

# sysctl -p /etc/sysctl.conf
# /etc/init.d/libvirtd reload

以下のコマンドでゲストOSをインストール(一旦DHCPでインストールします)。

# virt-install --connect qemu:///system -n vm1 -r 512 --vcpus=1 \
 --disk path=/var/lib/libvirt/images/vm1.img,size=100 \
 --os-type linux --accelerate \
 --bridge=br0 \
 --location='http://ftp.riken.jp/Linux/centos/5.5/os/x86_64' \
 --extra-args='console=tty0 console=ttyS0,115200n8'

インストールが終わったら、virsh consoleなどで繋いで、ゲストの/etc/sysconfig/network-scripts/ifcfg-eth0を以下のように書き換え(HWADDRは編集前の値をそのまま残す)。

DEVICE=eth0
BOOTPROTO=none
HWADDR=00:00:00:00:00:00
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=192.168.0.3
GATEWAY=192.168.0.1
DNS1=192.168.0.1
TYPE=Ethernet

以下のコマンドでゲストのネットワークを再起動。

# /etc/init.d/network restart

UltraVNCのvncviewrとPuttyのplinkでVNCサーバに接続する手順

前提

  • user1でhost1に接続する。
  • pageantを使用。
  • vncサーバはlocalhostだけlistenするようにしておく。

準備

C:\Program Files\PuTTY\plink.exeのショートカットを作成し、プロパティでリンク先を以下のように編集。

"C:\Program Files\PuTTY\plink.exe" -ssh -agent -N -L 5900:localhost:5900 user1@host1

-Lの引数はローカルポート、リモートホスト、リモートポート。vncサーバはlocalhostだけlistenするようにしてある前提なのでhost1ではなくlocalhostを指定する必要あり。


UltraVNCのダウンロードページからvncviewer最新版をダウンロードしてzipを展開。


接続手順

  1. 上記で作成したplinkのショートカットを起動。
  2. vncviewer.exeを起動して以下のように入力し「Connect」を押す。
    • VNC Server:にはlocalhostと入力。
    • 初回のみ「Options」押す→「Japanese Keyboard」にチェック→「OK」押す→「Save connection settings as default」チェック

切断手順

  1. vncviewerのウィンドウを閉じる。
  2. plinkのウィンドウを閉じる。

CentOSにvncでGUIログインする設定

参考1: HowTos/VNC-Server - CentOS Wiki

参考2: CentOSでxinetdでVNCサーバーでGUIログイン - bufferings


「GNOME デスクトップ環境」パッケージグループがインストール済みであることが前提(ログイン後GNOME環境を使いたいので)。確認は以下のコマンドで。

# env LANG=C yum grouplist hidden

Installed Groups:のセクションにGNOME Desktop Environmentがあればインストール済み。なければ以下のコマンドでインストール。

# yum groupinstall "GNOME Desktop Environment"

gdmが入っていなければインストール。

# yum install gdm

vnc-serverパッケージをインストール。

# yum install vnc-server

パッケージではHowTos/VNC-Server - CentOS Wikiの「2. Configuring un-encrypted VNC」に説明されているようなVNCの利用者毎にポートを分けるような設定になっている。この方式ではVNCのパスワードを入れるとGUIでログイン済みの状態になる。しかし、ユーザ毎にサーバ側を設定する必要があり面倒。

ここでは「5. Remote login with vnc-ltsp-config」に書かれている方式を使うことにした。ただし、vnc-ltsp-configパッケージは使わずに、CentOSでxinetdでVNCサーバーでGUIログイン - bufferingsを参考に手動で設定を行う。


xinetdからvncサーバを実行するのでvncserverは止めて自動起動も止める。

# /etc/init.d/vncserver stop
# chkconfig vncserver off

xinetdパッケージをインストール。

# yum install xinetd

/etc/servicesに以下の行を追加。

vnc-5900        5900/tcp                        # vnc

以下の内容で/etc/xinetd.d/vncを作成。

service vnc-5900
{
        disable = no
        socket_type     = stream
        wait            = no
        user            = nobody
        group           = tty
        server          = /usr/bin/Xvnc
        server_args     = -inetd -query localhost -once -geometry 1024x768 -depth 16 -securitytypes=none
        log_on_failure  += USERID
}

xinetd再起動。

# /etc/init.d/xinetd restart

OS起動時のランレベルを5(GUI)に変更。


/etc/inittabを編集して、id:の後の数字を5に変更。

# Default runlevel. The runlevels used by RHS are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:

ランレベル3の状態で起動していたら、以下のコマンドで5に変更。

# init 5

/etc/gdm/custom.confを編集。編集箇所のみ抜粋。

[daemon]
RemoteGreeter=/usr/libexec/gdmgreeter

[security]
DisallowTCP=false

[xdmcp]
Enable=true

gdm再起動

# gdm-restart

Tera Termでの自動ログイン

参考1:Tera Termマクロ活用入門(1):各種ログインを自動化する - SourceForge.JP Magazine : オープンソースの話題満載

参考2:Tera Termのヘルプ([Help]/[Index]メニュー)


user1というユーザでhost1というホストに接続する例。pageantを使う前提。

以下の内容でC:\Program Files\teraterm\user1@host1.ttlというファイルを作成。

connect 'host1 /ssh /2 /auth=pageant /user=user1'

C:\Program Files\teraterm\ttermpro.exeのショートカットを作成し、プロパティのリンク先を以下のように変更。

"C:\Program Files\teraterm\ttermpro.exe" /M=user1@host1.ttl

pageantを起動済みなら、このショートカットを起動するだけでログインまで完了します。

ブログ アーカイブ