CentOS8にVNCサーバを設定する。

LinuxサーバでGUI操作ができるようにVNCサーバをセットアップしていきます。
SSHKVMをvirshで触っていましたがGUIvirt-managerを利用したくなったため、VNCサーバとして動作するようにしました。

環境

  1. CentOS 8.1

アーキテクチャx86-64

  1. tigervnc-server

バージョン : 1.9.0
リリース : 12.el8_1

tigervnc-serverをインストールする。

VNCサーバを実装するためのソフトウェアであるtigervnc-serverをインストールしていきます。
単純にインストールするだけなので特に説明も必要ないかと思います。

yum install tigervnc-server

VNCサーバを起動する。

VNCサーバを起動していきます。
vncserverコマンドを実行したユーザが、vncクライアントを使ってアクセスした際のユーザとなります。
「-geometry」オプションで仮想デスクトップの画面サイズを指定し、:(番号)でディスプレイ番号を指定します。
ディスプレイ番号の指定はしなくてもよいのですが、ディスプレイ番号が分からなくなるので明示しておいた方がよいでしょう。
ディスプレイ番号が分からないと、接続先のポートはTCP (5900+ディスプレイ番号) となるため、どのポートにVNC接続するべきか分からなくなります。
以下の例では画面サイズの横が1440、縦が900のディスプレイ番号1で起動しています。

vncserver -geometry 1440x900 :1

VNCサーバを停止する場合は「-kill」オプションの後ろにディスプレイ番号を :(番号) で指定して停止します。
以下の例ではディスプレイ番号 1 のプロセスを停止しています。

vncserver -kill :1

もしディスプレイ番号が分からなければ、「-list」オプションで調べます。
以下は実行例です。

[root@localhost ~]# vncserver -list

TigerVNC server sessions:

X DISPLAY #     PROCESS ID
:1              5417

FirewallVNC接続用ポートを許可する。

以下のコマンドでVNCの接続ポートを許可します。
ポート番号となる 5901 の部分は 5900+(ディスプレイ番号) で読み換えてください。

firewall-cmd --permanent --add-port=5901/tcp
firewall-cmd --reload

Firewallの許可をしたら、以下のコマンドで許可が通っているか確認しておきましょう。

firewall-cmd --list-all

UltraVNCで接続する。

操作端末(Windows)にUltraVNCを導入して、UltraVNC Viewerを立ち上げましょう。
UltraVNC ViewerにIPアドレスを入力して、connectボタンをクリックすると・・・・・・接続できませんね。
wiresharkでパケットキャプチャをしたところ、接続先がTCP5900ポートになっておりました。
接続の際はポート番号指定が必須のようです。
(IPアドレス):(ポート番号)で記載しましょう。

VNCの接続に使われているRFBというプロトコルですが、RFCではTCP5900で定義されているようなので恐らくはこれが原因かと思います。
https://tools.ietf.org/html/rfc6143
尚、RFC本文中では 5900+N の記述があります。