Linux仮想マシンのVNC設定

XenServerでは、リモートからLinux仮想マシンを制御するためにデフォルトでVNC(Virtual Network Computing)が使用されます。ただし、仮想マシンにLinuxオペレーティングシステムをインストールした段階では、VNCのサポートが設定されていない場合があります。XenCenterのグラフィカルコンソールから接続できるようにするには、VNCサーバーとXディスプレイマネージャを仮想マシンにインストールして、適切に設定する必要があります。ここでは、サポートされている各Linuxディストリビューション上でVNCを設定し、XenCenterグラフィカルコンソールと適切に対話できるようにする手順を説明します。

CentOSベースの仮想マシンには、下記のRed Hatベースの仮想マシンの手順を適用できます。これは、同じベースコードでグラフィカルVNCアクセスが提供されているためです。CentOS 4はRed Hat Enterprise Linux 4をベースにしており、CentOS 5はRed Hat Enterprise Linux5をベースにしています。

Debian Squeeze仮想マシンのグラフィカルコンソールの設定

Debian Squeeze仮想マシンのグラフィックコンソールを有効にする前に、Linuxゲストエージェントがインストール済みであることを確認してください。詳しくは、Linuxゲストエージェントのインストールを参照してください。

Debian Squeeze仮想マシンのグラフィックコンソールは、その仮想マシン内で動作するVNCサーバーにより提供されます。推奨される設定では、標準ディスプレイマネージャによりVNCが制御され、ログイン画面が表示されます。

  1. Squeezeをデスクトップシステムパッケージでインストールするか、標準的なaptコマンドを使ってGDM(ディスプレイマネージャ)をインストールします。

  2. 次のようなapt-getコマンドを実行して、Xvncサーバーをインストールします:

    apt-get install vnc4server
    

    Gnomeディスプレイマネージャーversion 3デーモンを使用するDebian Squeezeデスクトップ環境では、多くのCPU負荷がかかることがあります。シトリックスは以下のコマンドを実行して、Gnomeディスプレイマネージャーgdm3パッケージをアンインストールし、gdmパッケージをインストールすることを強くお勧めします。

    apt-get install gdm
    apt-get purge gdm3
    
  3. vncpasswdコマンドでパスワード情報を書き込むファイルを指定して、VNCパスワードを設定します(これを設定しないとセキュリティ上の重大なリスクが発生します)。次に例を示します:

    vncpasswd /etc/vncpass
    
  4. 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
    
  5. 次のコマンドを実行してGDMを再起動し、XenCenterによりグラフィカルコンソールが検出されるのを待ちます:

    /etc/init.d/gdm restart
    

    ps ax | grep vncなどのコマンドを使用して、VNCサーバーが動作しているかどうかを確認できます。

Red Hat、CentOS、またはOracle Linux仮想マシンのグラフィカルコンソールの設定

Red Hat仮想マシンのVNCを設定する前に、Linuxゲストエージェントがインストール済みであることを確認してください。詳しくは、Linuxゲストエージェントのインストールを参照してください。

VNCをRed Hat仮想マシン上で設定するには、GDM設定を変更する必要があります。GDM設定はファイルに保持されていますが、そのファイルの場所はRed Hat Linuxのバージョンによって異なります。変更前に、最初にこの設定ファイルの場所を決定します。このファイルは、以降のいくつかの手順で変更されます。

GDM設定ファイルの場所の確認

Red Hat Linux version 4を使用している場合、GDM構成ファイルは/etc/X11/gdm/gdm.confです。これは、独自のカスタマイズ構成に加えて、GDMのバージョンのプロバイダーによって指定されたデフォルト値を含む統合構成ファイルです。この種のファイルは、上記バージョンのRed Hat Linuxなどに含まれている、古いバージョンのGDMでデフォルトで使用されます。

Red Hat Linuxバージョン5.xを使用している場合、GDM構成ファイルは/etc/gdm/custom.confです。このファイルは、デフォルト設定を上書きするユーザー指定の値のみを含む分割設定ファイルです。この種のファイルは、上記バージョンのRed Hat Linuxなどに含まれている、新しいバージョンのGDMでデフォルトで使用されます。

VNCを使用するためのGDMの設定

  1. 仮想マシンのテキストコンソールのプロンプトで、ルートユーザーとしてrpm -q vnc-server gdmを実行します。パッケージ名vnc-servergdmおよびそれらのバージョン番号が表示されます。

    これらのパッケージ名が表示された場合は、既に適切なパッケージがインストール済みです。パッケージがインストールされていないという内容のメッセージが表示された場合は、インストール時にグラフィカルデスクトップオプションを選択しなかった可能性があります。以降の手順に進むには、これらのパッケージをインストールする必要があります。仮想マシンへの追加ソフトウェアのインストールについて詳しくは、適切なバージョンの『Red Hat Linux x86インストールガイド』を参照してください。

  2. 任意のテキストエディタを使ってGDM設定ファイルを開き、以下の行を追加します。

    [server-VNC]
    name=VNC Server
    command=/usr/bin/Xvnc -SecurityTypes None -geometry 1024x768 -depth 16 \
    -BlacklistTimeout 0
    flexible=true
    
    • 4.xの構成ファイルでは、[server-Standard]セクションの上にこの行を追加します。

    • Red Hat Linux 5.xの構成ファイルでは、空の[servers]セクション内にこの行を追加します。

  3. 標準のXサーバーの代わりにXvncサーバーが使用されるように設定を変更します。

    • Red Hat Linux 3または4を使用している場合は、そのすぐ上に次の行が表示されます:

      0=Standard
      

      これを次のように変更します。

      0=VNC
      
    • Red Hat Linux 5.xまたはそれ以降の設定ファイルでは、この行(0=VNC)を[servers]セクションのすぐ下、[server-VNC]セクションの上に追加する必要があります。

  4. ファイルを保存して閉じます。

  5. 設定の変更を有効にするために、/usr/sbin/gdm-restartを実行してGDMを再起動します。

Red Hat Linuxでは、ランレベル5でグラフィカルユーザーインターフェイスが起動します。インストールがランレベル3で起動するように設定されている場合は、ディスプレイマネージャが起動されるように(そしてグラフィカルコンソールにアクセスできるように)ランレベルを変更する必要があります。

ファイアウォールの設定

VNCファイアウォール設定の構成、RHEL デフォルトのファイアウォール設定では、VNCトラフィックは通過できません。仮想マシンとXenCenter間にファイアウォールを設定している場合は、VNC接続が使用するポートを開放して、このポートでの通信を許可する必要があります。デフォルトでは、VNCサーバーはTCPポート5900 + nでVNCビューアからの接続を待機します。ここで、nはディスプレイ番号です(通常は0)。つまり、VNCサーバーのディスプレイ番号が0の場合はTCPポート5900で、ディスプレイ番号が1の場合はTCP-5901で通信します。使用するファイアウォールのドキュメントを参照して、これらのポートが開放されていることを確認してください。

ファイアウォール設定をさらにカスタマイズして、IP接続を追跡したり、一方向からのみの接続を許可したりすることもできます。

Red Hatベースの仮想マシンのファイアウォールをカスタマイズしてVNCポートを開放するには

  1. Red Hat Linux 4.xおよび5.xの場合、system-config-securitylevel-tuiを実行します。

  2. [カスタマイズ]を選択して、その他のポートの一覧に5900を追加します。

または、service iptables stopを実行して、次回起動時までファイアウォールを無効にしたり、chkconfig iptables offを使用してファイアウォールを恒久的に無効にしたりできます。ただし、これにより、ほかのサービスが外部にさらされ、仮想マシン全体のセキュリティのレベルが下がることに注意してください。

VNC画面の解像度

グラフィカルコンソールを使用して仮想マシンに接続した後で、画面の解像度が適当でない(たとえば、仮想マシンの画面が大きすぎてグラフィカルコンソールペインに収まらない)場合は、次の手順でVNCサーバーのgeometryパラメーターを設定して、解像度を調整します。

  1. 任意のテキストエディタを使ってGDM設定ファイルを開きます。

  2. [server-VNC]セクションを探します。

  3. 次の行を編集します。

    command=/usr/bin/Xvnc -SecurityTypes None -geometry 800x600
    

    ここで、geometryパラメーターに、有効な画面の幅と高さを指定できます。

  4. ファイルを保存して閉じます。

RHEL、CentOS、またはOEL 6.xの仮想マシンでVNCを有効にする

Red Hat Linux version 6.xを使用している場合、GDM設定ファイルは/etc/gdm/custom.confです。このファイルは、デフォルト設定を上書きするユーザー指定の値のみを含む分割設定ファイルです。この種のファイルは、上記バージョンのRed Hat Linuxなどに含まれている、新しいバージョンのGDMでデフォルトで使用されます。

オペレーティングシステムのインストール時に、デスクトップモードを選択します。

  1. これを行うには、RHELのインストール画面で、[デスクトップ]、[今すぐカスタマイズ]の順に選択して、[次] をクリックします。

    これにより、ベースシステム画面が開きます。[レガシーUNIXの互換性]が選択された状態にします。

  2. [デスクトップ]、[オプションパッケージ]の順に選択して、[次] をクリックします。

    これで、[デスクトップ] ウィンドウでパッケージが表示されます。tigervnc-server-<version_number>を選択し、[次へ]をクリックします。**

次の手順の処理を進めて、RHEL 6.x仮想マシンの設定を続けます。

  1. 任意のテキストエディタを使ってGDM設定ファイルを開き、各セクションに以下の行を追加します。

    [security]
    DisallowTCP=false
    
    [xdmcp]
    Enable=true
    
  2. ファイル/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
    }
    
  3. 次のコマンドを実行して、xinetdサービスを起動します。

    # service xinetd start
    
  4. ファイル/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
    
  5. 次のコマンドを実行して、iptablesを再起動します:

    # service iptables restart
    
  6. 次のコマンドを実行して、gdmを再起動します:

    # telinit 3
    # telinit 5
    

Red Hat Linuxでは、ランレベル5でグラフィカルユーザーインターフェイスが起動します。インストールがランレベル3で起動するように設定されている場合は、ディスプレイマネージャが起動されるように(そしてグラフィカルコンソールにアクセスできるように)ランレベルを変更する必要があります。

SLESベース仮想マシンのVNC用の設定

SUSE Linux Enterprise Server仮想マシンのVNCを設定する前に、Linuxゲストエージェントがインストール済みであることを確認してください。詳しくは、Linuxゲストエージェントのインストールを参照してください。

SLESでは、YaSTの設定オプションで「Remote Administration」を有効にできます。SLESインストーラの[Network Services]画面で利用可能なRemote Administrationを、インストール時に有効にできます。これにより、外部のVNCビューアでゲストに接続してグラフィカルコンソールを表示できるようになります。SLESリモート管理機能を使用するための手順は、XenCenterで提供されるものとわずかに異なりますが、グラフィカルコンソール機能と統合されるように、SUSE Linux仮想マシン内で設定ファイルを変更することが可能です。

VNCサーバーの確認

設定を変更する前に、VNCサーバーがインストール済みであることを確認する必要があります。SUSEには、デフォルトでtightvncサーバーが付属しています。このサーバーは適したVNCサーバーですが、標準的なRealVNCディストリビューションを使用することもできます。

次のコマンドを実行して、tightvncソフトウェアがインストール済みかどうかを確認できます。

rpm -q tightvnc

リモート管理を有効にする

SLESソフトウェアのインストール時にリモート管理を有効にしなかった場合は、次のようにして有効にすることができます。

  1. 仮想マシン上でテキストコンソールを開き、YaSTユーティリティを実行します:

    yast
    
  2. 矢印キーを使って左のメニューから[Network Services]を選択し、次に、Tabキーを押して右側のメニューに移動し、矢印キーを使って[Remote Administration]を選択します。Enterキーを押します。

  3. [Remote Administration]画面でTabキーを押して[Remote Administration Settings]セクションに移動します。矢印キーを使って[Allow Remote Administration]を選択し、Enterキーを押してこのオプションを有効にします。

  4. Tabキーを押して[Firewall Settings]セクションに移動します。矢印キーを使って[Open Port in Firewall]を選択し、Enterキーを押してこのオプションを有効にします。

  5. Tabキーを押して[Finish]ボタンに移動し、Enterキーを押します。

  6. 設定を有効にするためにディスプレイマネージャの再起動が必要があるという内容のメッセージボックスが表示されます。メッセージを確認するには、Enterキーを押します。

  7. YaSTのトップレベルの画面に戻ります。Tabキーを押して[Quit]ボタンに移動し、Enterキーを押します。

xinetd設定の変更

リモート管理を有効にした後で、XenCenterを使用するか、サードパーティのVNCクライアントを使用するかに応じて、設定ファイルを変更する必要があります。

  1. 任意のエディタで/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
    }
    
  2. port行を次のように変更します。

    port = 5900
    
  3. ファイルを保存して閉じます。

  4. 次のコマンドを実行して、ディスプレイマネージャとxinetdサービスを再起動します:

    /etc/init.d/xinetd restart
    rcxdm restart
    

SUSE Linuxでは、ランレベル5でグラフィカルユーザーインターフェイスが起動します。リモートデスクトップが表示されない場合は、仮想マシンがランレベル5で起動するように設定されているかどうかを確認します。

ファイアウォールの設定

VNCファイアウォール設定の構成、SLES デフォルトのファイアウォール設定では、VNCトラフィックは通過できません。仮想マシンとXenCenter間にファイアウォールを設定している場合は、VNC接続が使用するポートを開放して、このポートでの通信を許可する必要があります。デフォルトでは、VNCサーバーはTCPポート5900 + nでVNCビューアからの接続を待機します。ここで、nはディスプレイ番号です(通常は0)。VNCサーバーのディスプレイ番号が0の場合はTCPポート5900で、ディスプレイ番号が1の場合はTCP-5901で通信します。使用するファイアウォールのドキュメントを参照して、これらのポートが開放されていることを確認してください。

ファイアウォール設定をさらにカスタマイズして、IP接続を追跡したり、一方向からのみの接続を許可したりすることもできます。

SLES 10.xの仮想マシンのファイアウォールでVNCポートを開放するには

  1. 仮想マシン上でテキストコンソールを開き、YaSTユーティリティを実行します:

    yast
    
  2. 矢印キーを使って左のメニューから[Security and Users]を選択し、次に、Tabキーを押して右側のメニューに移動し、矢印キーを使って[Firewall]を選択します。Enterキーを押します。

  3. [Firewall]画面の左のメニューで、矢印キーを使って[Allowed Services]を選択します。

  4. Tabキーを押して、右側の[Firewall Configuration: Allowed Services]フィールドに移動します。矢印キーを使って[Advanced]ボタン(右下の近く、[Next]ボタンのすぐ上)を選択し、Enterキーを押します。

  5. [Additional Allowed Ports]画面で、[TCP Ports]フィールドに5900と入力します。Tabキーを押して[OK]ボタンに移動し、Enterキーを押します。

  6. Tabキーを押して[Next]ボタンに移動し、Enterキーを押します。次に、[Summary]画面でTabキーを押して[Accept]ボタンに移動し、Enterキーを押します。最後にYaSTのトップレベルの画面でTabキーを押して[Quit]ボタンに移動し、Enterキーを押します。

  7. 次のコマンドを実行して、ディスプレイマネージャとxinetdサービスを再起動します:

    /etc/init.d/xinetd restart
    rcxdm restart
    

または、rcSuSEfirewall2 stopコマンドを実行して、次回起動時までファイアウォールを無効にしたり、YaSTを使用してファイアウォールを恒久的に無効にしたりできます。ただし、これにより、ほかのサービスが外部にさらされ、仮想マシン全体のセキュリティのレベルが下がることに注意してください。

SLES 11.xの仮想マシンのファイアウォールでVNCポートを開放するには

  1. 仮想マシン上でテキストコンソールを開き、YaSTユーティリティを実行します:

    yast
    
  2. 矢印キーを使って左のメニューから[Security and Users]を選択し、次に、Tabキーを押して右側のメニューに移動し、矢印キーを使って[Firewall]を選択します。Enterキーを押します。

  3. [Firewall]画面の左のメニューで、矢印キーを使って[Custom Rules]を選択してEnterキーを押します。

  4. Tabキーを押して[Custom Allowed Rules]の[Add]ボタンに移動し、Enterキーを押します。

  5. [Source Network]フィールドに「0/0」と入力します。Tabキーを押して[Destination Port]フィールドに移動し、「5900」と入力します。

  6. Tabキーを押して[Add]ボタンに移動し、Enterキーを押します。

  7. Tabキーを押して[Next]ボタンに移動し、Enterキーを押します。次に、[Summary]画面でTabキーを押して[Finish]ボタンに移動し、Enterキーを押します。最後にYaSTのトップレベルの画面でTabキーを押して[Quit]ボタンに移動し、Enterキーを押します。

  8. 次のコマンドを実行して、ディスプレイマネージャとxinetdサービスを再起動します:

    /etc/init.d/xinetd restart
    rcxdm restart
    

または、rcSuSEfirewall2 stopコマンドを実行して、次回起動時までファイアウォールを無効にしたり、YaSTを使用してファイアウォールを恒久的に無効にしたりできます。ただし、これにより、ほかのサービスが外部にさらされ、仮想マシン全体のセキュリティのレベルが下がることに注意してください。

VNC画面の解像度

グラフィカルコンソールを使用して仮想マシンに接続した後で、画面の解像度が適当でない(たとえば、仮想マシンの画面が大きすぎてグラフィカルコンソールペインに収まらない)場合は、次の手順でVNCサーバーのgeometryパラメーターを設定して、解像度を調整します:

  1. 任意のテキストエディタを使って/etc/xinetd.d/vncファイルを開き、service_vnc1セクション(displayID 1に対応する)を探します。

  2. server-args行のgeometry引数を、目的のディスプレイ解像度に変更します。例:

    server_args  = :42 -inetd -once -query localhost -geometry 800x600 -depth 16
    

    ここで、geometryパラメーターに、有効な画面の幅と高さを指定できます。

  3. ファイルを保存して閉じます。

  4. 次のコマンドを実行して、VNCサーバーを再起動します。

    /etc/init.d/xinetd restart
    rcxdm restart
    

ランレベルの確認

Red HatおよびSUSE Linuxの仮想マシンでは、ランレベル5でグラフィカルユーザーインターフェイスが起動します。ここでは、仮想マシンがランレベル5で起動するよう設定されていることを確認する方法と、設定されていない場合の変更方法を説明します。Linuxランレベル

  1. /etc/inittabを開き、デフォルトのランレベルを確認します。次の行を探します。

    id:n:initdefault:
    

    nが5でない場合は、5に変更してファイルを保存します。

  2. このように変更した後でコマンドtelinit q ; telinit 5を実行すると、実際に仮想マシンを再起動しなくてもランレベルの変更が適用されます。