Linux仮想マシンのVNC設定
Citrix Hypervisorでは、リモートからLinux仮想マシンを制御するためにデフォルトでVNC(Virtual Network Computing:仮想ネットワークコンピューティング)が使用されます。ただし、仮想マシンにLinuxオペレーティングシステムをインストールした段階では、VNCのサポートが設定されていない場合があります。XenCenterから接続できるようにするには、VNCサーバーとXディスプレイマネージャーを仮想マシンにインストールして、適切に設定する必要があります。ここでは、サポートされている各Linuxディストリビューション上でVNCを設定し、XenCenterと適切に対話できるようにする方法を説明します。
CentOSベースの仮想マシンには、下記のRed Hatベースの仮想マシンの手順を適用できます。これは、同じベースコードでグラフィカルVNCアクセスが提供されているためです。CentOS XはRed Hat Enterprise Linux Xをベースにしています。
Debian仮想マシンのグラフィックコンソールを有効にする
注:
Debian仮想マシンのグラフィックコンソールを有効にする前に、Linux向けのCitrix VM Toolsがインストール済みであることを確認してください。詳しくは、「Linux向けCitrix VM Toolsのインストール」を参照してください。
Debian仮想マシンのグラフィックコンソールは、その仮想マシン内で動作するVNCサーバーにより提供されます。推奨される設定では、標準ディスプレイマネージャによりコンソールが制御され、ログインダイアログボックスが表示されます。
-
Debianをデスクトップシステムパッケージでインストールするか、標準的なaptコマンドを使ってGDM(ディスプレイマネージャー)をインストールします。
-
次のような
apt-get
コマンドを実行して、Xvncサーバーをインストールします:apt-get install vnc4server <!--NeedCopy-->
注:
Gnomeディスプレイマネージャーversion 3デーモンを使用するDebianデスクトップ環境では、多くのCPU負荷がかかることがあります。以下のコマンドを実行して、Gnomeディスプレイマネージャー
gdm3
パッケージをアンインストールし、gdm
パッケージをインストールしてください:apt-get install gdm apt-get purge gdm3 <!--NeedCopy-->
-
vncpasswd
コマンドを使用してVNCパスワードを設定します(設定しないと深刻なセキュリティ上のリスクの可能性があります)。パスワード情報を書き込むファイル名を渡します。たとえば、次のようになります:vncpasswd /etc/vncpass <!--NeedCopy-->
-
gdm.conf
ファイル(/etc/gdm/gdm.conf
)の[servers]
および[daemon]
セクションを次のように編集して、VNCサーバーがディスプレイ番号0
を管理するように設定します。[servers] 0=VNC [daemon] VTAllocation=false [server-VNC] name=VNC command=/usr/bin/Xvnc -geometry 800x600 -PasswordFile /etc/vncpass BlacklistTimeout=0 flexible=true <!--NeedCopy-->
-
GDMを再起動し、XenCenterによりグラフィックコンソールが検出されるのを待ちます:
/etc/init.d/gdm restart <!--NeedCopy-->
注:
ps ax | grep vnc
などのコマンドを使用して、VNCサーバーが動作しているかどうかを確認できます。
Red Hat、CentOS、またはOracle Linux仮想マシンのグラフィックコンソールを有効にする
注:
Red Hat仮想マシンのVNCを設定する前に、Linux向けのCitrix VM Toolsがインストール済みであることを確認してください。詳しくは、「Linux向けCitrix VM Toolsのインストール」を参照してください。
VNCをRed Hat仮想マシン上で設定するには、GDM設定を変更します。GDM設定はファイルに保持されていますが、そのファイルの場所はRed Hat Linuxのバージョンによって異なります。変更前に、最初にこの設定ファイルの場所を決定します。このファイルは、以降のいくつかの手順で変更されます。
VNC設定ファイルの場所の確認
Red Hat Linuxを使用している場合、GDM設定ファイルは/etc/gdm/custom.conf
です。このファイルは、デフォルト設定を上書きするユーザー指定の値のみを含む分割設定ファイルです。このタイプのファイルは、GDMの新しいバージョンではデフォルトで使用され、Red Hat Linuxの前述のバージョンに含まれています。
VNCを使用するためのGDMの設定
-
仮想マシンのテキストコンソールのプロンプトで、ルートユーザーとして
rpm -q vnc-server gdm
を実行します。パッケージ名vnc-server
とgdm
およびそれらのバージョン番号が表示されます。これらのパッケージ名が表示された場合は、既に適切なパッケージがインストール済みです。パッケージがインストールされていないという内容のメッセージが表示された場合は、インストール時にグラフィカルデスクトップオプションを選択しなかった可能性があります。以降の手順に進むには、これらのパッケージをインストールする必要があります。仮想マシンへの追加ソフトウェアのインストールについて詳しくは、適切なバージョンの『Red Hat Linux x86インストールガイド』を参照してください。
-
任意のテキストエディターを使ってGDM設定ファイルを開き、次の行をファイルに追加します:
[server-VNC] name=VNC Server command=/usr/bin/Xvnc -SecurityTypes None -geometry 1024x768 -depth 16 \ -BlacklistTimeout 0 flexible=true <!--NeedCopy-->
Red Hat Linuxの設定ファイルでは、空の
[servers]
セクション内にこれらの行を追加します。 -
標準のXサーバーの代わりに
Xvnc
サーバーが使用されるように設定を変更します。-
0=Standard
これを次のように変更します。
0=VNC
-
Red Hat Linuxを使用している場合、この行(0=VNC)を
[servers]
セクションのすぐ下、[server-VNC]
セクションの上に追加する必要があります。
-
-
ファイルを保存して閉じます。
設定の変更を有効にするために、/usr/sbin/gdm-restart
を実行してGDMを再起動します。
注:
Red Hat Linuxでは、ランレベル5でグラフィカルユーザーインターフェイスが起動します。インストールがランレベル3で起動する場合は、ディスプレイマネージャが起動されるように(そしてグラフィックコンソールにアクセスできるように)設定を変更する必要があります。詳しくは、「ランレベルのチェック」を参照してください。
ファイアウォールの設定
デフォルトのファイアウォール構成では、VNCトラフィックは通過できません。仮想マシンとXenCenterとの間にファイアウォールを設定している場合は、VNC接続が使用するポートを開放して、このポートでの通信を許可します。デフォルトでは、VNCサーバーはTCPポート5900 + n
でVNCビューアからの接続を待機します。ここで、n
はディスプレイ番号です(通常は0)。つまり、VNCサーバーのディスプレイ番号が0の場合はTCPポート5900
で、ディスプレイ番号が1の場合はTCP-5901
で通信します。使用するファイアウォールのドキュメントを参照して、これらのポートが開放されていることを確認してください。
IP接続を追跡したり、一方向からのみの接続を許可したりするには、ファイアウォール設定を設定します。
Red Hatベースの仮想マシンのファイアウォールを設定してVNCポートを開放するには:
-
Red Hat Linuxの場合、
system-config-securitylevel-tui
を実行します。 -
[カスタマイズ] を選択して、その他のポートの一覧に
5900
を追加します。
または、service iptables stop
を実行して、次回起動時までファイアウォールを無効にしたり、chkconfig iptables off
を使用してファイアウォールを恒久的に無効にしたりできます。ただし、これにより、ほかのサービスが外部にさらされ、仮想マシン全体のセキュリティのレベルが下がることに注意してください。
VNC画面の解像度
グラフィックコンソールで仮想マシンに接続した後、画面解像度が一致しないことがあります。たとえば、仮想マシンの表示が大きすぎるため、グラフィックコンソールペイン内に収まらないことがあります。この挙動を制御するには、VNCサーバーgeometry
パラメーターを次のように設定します。
-
お好みのテキストエディタでGDM構成ファイルを開きます。詳しくは、「VNC設定ファイルの場所の確認」を参照してください。
-
[server-VNC]
セクションを探します。 -
次の行を編集します。
command=/usr/bin/Xvnc -SecurityTypes None -geometry 800x600 <!--NeedCopy-->
ここで、
geometry
パラメーターに、有効な画面の幅と高さを指定できます。 -
ファイルを保存して閉じます。
RHEL、CentOS、またはOELの仮想マシンでVNCを有効にする
Red Hat Linuxを使用している場合、GDM設定ファイルは/etc/gdm/custom.conf
です。このファイルは、デフォルト設定を上書きするユーザー指定の値のみを含む分割設定ファイルです。このタイプのファイルは、上記バージョンのRed Hat Linuxなどに含まれている、新しいバージョンのGDMでデフォルトで使用されます。
オペレーティングシステムのインストール時に、デスクトップモードを選択します。これを行うには、RHELのインストール画面で、[Desktop]、[Customize now] の順に選択して、[Next] をクリックします。
これにより、ベースシステム画面が開きます。[Legacy UNIX compatibility] が選択された状態にします。
[Desktops]、[Optional packages] の順に選択して、[Next] をクリックします。
これにより、[Packages in Desktop] ウィンドウが開きます。tigervnc-server-<version_number>を選択して [Next] をクリックします:
ウィンドウのスクリーンショット
次の手順の処理を進めて、RHEL仮想マシンの設定を続けます:
-
任意のテキストエディターを使ってGDM設定ファイルを開き、次の行を適切なセクションに追加します:
[security] DisallowTCP=false [xdmcp] Enable=true <!--NeedCopy-->
-
ファイル
/etc/xinetd.d/vnc-server-stream
を作成します:service vnc-server { id = vnc-server disable = no type = UNLISTED port = 5900 socket_type = stream wait = no user = nobody group = tty server = /usr/bin/Xvnc server_args = -inetd -once -query localhost -SecurityTypes None \ -geometry 800x600 -depth 16 } <!--NeedCopy-->
-
次のコマンドを実行して、
xinetd
サービスを起動します。# service xinetd start <!--NeedCopy-->
-
ファイル
/etc/sysconfig/iptables
を開きます。-A INPUT -j REJECT --reject-with icmp-host-prohibited
の上に次の行を追加します :-A INPUT -m state --state NEW -m tcp -p tcp --dport 5900 -j ACCEPT <!--NeedCopy-->
-
次のコマンドを実行して、
iptables
を再起動します:# service iptables restart <!--NeedCopy-->
-
次のコマンドを実行して、
gdm
を再起動します:# telinit 3 # telinit 5 <!--NeedCopy-->
注:
Red Hat Linuxでは、ランレベル5でグラフィカルユーザーインターフェイスが起動します。インストールがランレベル3で起動する場合は、ディスプレイマネージャが起動されるように(そしてグラフィックコンソールにアクセスできるように)設定を変更する必要があります。詳しくは、「ランレベルのチェック」を参照してください。
VNC用SLESベース仮想マシンの設定
注:
SUSE Linux Enterprise Server仮想マシンのVNCを設定する前に、Linux向けのCitrix VM Toolsがインストール済みであることを確認してください。詳しくは、「Linux向けCitrix VM Toolsのインストール」を参照してください。
SLESでは、YaST
の設定オプションで「Remote Administration」を有効にできます。SLESインストーラーの [Network Services] 画面で利用可能なRemote Administrationを、インストール時に有効にできます。この機能を使用すると、外部のVNCビューアをゲストに接続して、グラフィックコンソールを表示できます。SLESリモート管理機能を使用する方法は、XenCenterの方法と多少異なります。ただし、グラフィックコンソール機能と統合されるようにSUSE Linux仮想マシンの設定ファイルを変更することは可能です。
VNCサーバーの確認
設定を変更する前に、VNCサーバーがインストール済みであることを確認する必要があります。SUSEには、デフォルトでtightvnc
サーバーが付属しています。このサーバーは適したVNCサーバーですが、標準的なRealVNCディストリビューションを使用することもできます。
次のコマンドを実行して、tightvnc
ソフトウェアがインストール済みかどうかを確認できます。
rpm -q tightvnc
<!--NeedCopy-->
リモート管理を有効にする
SLESソフトウェアのインストール時にリモート管理を有効にしなかった場合は、次のようにして有効にすることができます。
-
仮想マシン上でテキストコンソールを開き、
YaST
ユーティリティを実行します:yast <!--NeedCopy-->
-
矢印キーを使用して、左のメニューで [Network Services] を選択します。Tabキーで右のメニューに移動し、矢印キーで [Remote Administration] を選択します。Enterキーを押します。
-
[Remote Administration] 画面でTabキーを押して [Remote Administration Settings] セクションに移動します。矢印キーを使って [Allow Remote Administration] を選択し、Enterキーを押してこのオプションを有効にします。
-
Tabキーを押して [Firewall Settings] セクションに移動します。矢印キーを使って [Open Port in Firewall] を選択し、Enterキーを押してこのオプションを有効にします。
-
Tabキーを押して [Finish] ボタンに移動し、Enterキーを押します。
-
設定を有効にするためにディスプレイマネージャの再起動が必要があるという内容のメッセージボックスが表示されます。メッセージを確認するには、Enterキーを押します。
-
YaST
のトップレベルの画面に戻ります。Tabキーを押して [Quit] ボタンに移動し、Enterキーを押します。
xinetd
構成の変更
リモート管理を有効にした後で、XenCenterを接続できるようにするには、構成ファイルを変更します。または、サードパーティのVNCクライアントを使用します。
-
任意のエディターで
/etc/xinetd.d/vnc
ファイルを開きます。 -
このファイルには、以下に示すセクションが含まれています。
service vnc1 { socket_type = stream protocol = tcp wait = no user = nobody server = /usr/X11R6/bin/Xvnc server_args = :42 -inetd -once -query localhost -geometry 1024x768 -depth 16 type = UNLISTED port = 5901 } <!--NeedCopy-->
-
port
行を次のように変更します。port = 5900 <!--NeedCopy-->
-
ファイルを保存して閉じます。
-
次のコマンドを実行して、ディスプレイマネージャと
xinetd
サービスを再起動します:/etc/init.d/xinetd restart rcxdm restart <!--NeedCopy-->
SUSE Linuxでは、ランレベル5でグラフィカルユーザーインターフェイスが起動します。リモートデスクトップが表示されない場合は、仮想マシンがランレベル5で起動するように設定されているかどうかを確認します。詳しくは、「ランレベルのチェック」を参照してください。
ファイアウォールの設定
デフォルトのファイアウォール構成では、VNCトラフィックは通過できません。仮想マシンとXenCenterとの間にファイアウォールを設定している場合は、VNC接続が使用するポートを開放して、このポートでの通信を許可します。デフォルトでは、VNCサーバーはTCPポート5900 + n
でVNCビューアからの接続を待機します。ここで、n
はディスプレイ番号です(通常は0)。つまり、VNCサーバーのディスプレイ番号が0の場合はTCPポート5900
で、ディスプレイ番号が1の場合はTCP-5901
で通信します。使用するファイアウォールのドキュメントを参照して、これらのポートが開放されていることを確認してください。
IP接続を追跡したり、一方向からのみの接続を許可したりするには、ファイアウォール設定を設定します。
SLES 11.xの仮想マシンのファイアウォールでVNCポートを開放するには:
-
仮想マシン上でテキストコンソールを開き、
YaST
ユーティリティを実行します:yast <!--NeedCopy-->
-
矢印キーを使用して、左のメニューで [Security and Users] を選択します。Tabキーで右のメニューに移動し、矢印キーで [Firewall] を選択します。Enterキーを押します。
-
[Firewall] 画面で、左のメニューで矢印キーを使って [Custom Rules] を選択し、Enterキーを押します。
-
Tabキーを押して [Custom Allowed Rules] の [Add] ボタンに移動し、Enterキーを押します。
-
[Source Network] フィールドに「0/0」と入力します。Tabキーを押して [Destination Port] フィールドに移動し、「5900」と入力します。
-
Tabキーを押して [Add] ボタンに移動し、Enterキーを押します。
-
Tabキーを押して [Next] に移動し、Enterキーを押します。
-
[Summary] 画面で、Tabキーを押して [Finish] に移動し、Enterキーを押します。
-
最上位階層の
YaST
画面で、Tabキーを押して [Quit] に移動し、Enterキーを押します。 -
次のコマンドを実行して、ディスプレイマネージャと
xinetd
サービスを再起動します:/etc/init.d/xinetd restart rcxdm restart <!--NeedCopy-->
または、rcSuSEfirewall2 stopを実行して、次回起動時までファイアウォールを無効にしたり、YaST
を使用してファイアウォールを恒久的に無効にしたりできます。ただし、これにより、ほかのサービスが外部にさらされ、仮想マシン全体のセキュリティのレベルが下がることに注意してください。
VNC画面の解像度
グラフィックコンソールで仮想マシンに接続した後、画面解像度が一致しないことがあります。たとえば、仮想マシンの表示が大きすぎるため、グラフィックコンソールペイン内に収まらないことがあります。この挙動を制御するには、VNCサーバーgeometry
パラメーターを次のように設定します。
-
任意のテキストエディターを使って
/etc/xinetd.d/vnc
ファイルを開き、service_vnc1
セクション(displayID
1に対応する)を探します。 -
server-args
行のgeometry
引数を、目的のディスプレイ解像度に変更します。次に例を示します。server_args = :42 -inetd -once -query localhost -geometry 800x600 -depth 16 <!--NeedCopy-->
ここで、
geometry
パラメーターに、有効な画面の幅と高さを指定できます。 -
ファイルを保存して閉じます。
-
次のコマンドを実行して、VNCサーバーを再起動します。
/etc/init.d/xinetd restart rcxdm restart <!--NeedCopy-->
ランレベルのチェック
Red HatおよびSUSE Linuxの仮想マシンでは、ランレベル5でグラフィカルユーザーインターフェイスが起動します。ここでは、仮想マシンがランレベル5で起動するよう設定されていることを確認する方法と、この設定を変更する方法を説明します。
-
/etc/inittab
を開き、デフォルトのランレベルを確認します。次の行を探します。id:n:initdefault: <!--NeedCopy-->
nが5でない場合は、5に変更してファイルを保存します。
-
このように変更した後でコマンド
telinit q ; telinit 5
を実行すると、仮想マシンを再起動しなくてもランレベルの変更が適用されます。