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ゲストエージェントがインストール済みであることを確認してください。詳しくは、「Linuxゲストエージェントのインストール」を参照してください。

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

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

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

    apt-get install vnc4server
    

    注:

    Gnomeディスプレイマネージャーversion 3デーモンを使用するDebianデスクトップ環境では、多くの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のバージョンによって異なります。変更前に、最初にこの設定ファイルの場所を決定します。このファイルは、以降のいくつかの手順で変更されます。

注:

RHEL、CentOS、またはOEL 6.xの仮想マシンでVNCを有効にする手順については、RHEL、CentOS、またはOEL 6の仮想マシンでVNCを有効にするを参照してください。

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

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

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
    

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

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

    • 0=Standard

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

      0=VNC

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

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

設定の変更を有効にするために、/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ポートを開放するには:

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

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

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

VNC画面の解像度

グラフィックコンソールで仮想マシンに接続した後、画面解像度が一致しないことがあります。たとえば、仮想マシンの表示が大きすぎるため、グラフィックコンソールペイン内に収まらないことがあります。この挙動を制御するには、VNCサーバーgeometryパラメーターを次のように設定します。

  1. 任意のテキストエディタを使ってGDM設定ファイルを開きます。詳しくは、「VNC設定ファイルの場所の確認」を参照してください。

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

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

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

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

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

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

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

オペレーティングシステムのインストール時に、デスクトップモードを選択します。これを行うには、RHELのインストール画面で、[Desktop][Customize now] の順に選択して、[Next] をクリックします。

RHELインストール画面のスクリーンショット

これにより、ベースシステム画面が開きます。[Legacy UNIX compatibility] が選択された状態にします。

ベースシステム画面のスクリーンショット

[Desktops][Optional packages] の順に選択して、[Next] をクリックします。

Desktops画面のスクリーンショット

これにより、[Packages in Desktop] ウィンドウが開きます。tigervnc-server-<version_number>を選択して [Next] をクリックします:

[Packages in Desktop]ウィンドウのスクリーンショット

次の手順の処理を進めて、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で起動する場合は、ディスプレイマネージャが起動されるように(そしてグラフィックコンソールにアクセスできるように)設定を変更する必要があります。詳しくは、「ランレベルの確認」を参照してください。

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

注:

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

SLESでは、YaSTの設定オプションで「Remote Administration」を有効にできます。インストール時に、SLESインストーラの[Network Services]画面でリモート管理を選択して有効にできます。この機能を使用すると、外部の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ファイルを開きます。

  2. このファイルには、以下に示すセクションが含まれています。

        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
        }
    
  3. port行を次のように変更します。

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

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

    /etc/init.d/xinetd restart
    rcxdm restart
    

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ポートを開放するには:

  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キーを押します。

  8. [Summary] 画面で、Tabキーを押して [Finish] に移動し、Enterキーを押します。

  9. 最上位階層のYaST画面で、Tabキーを押して [Quit] に移動し、Enterキーを押します。

  10. 次のコマンドを実行して、ディスプレイマネージャと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で起動するよう設定されていることを確認する方法と、この設定を変更する方法を説明します。

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

    id:n:initdefault:
    

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

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