(20201203 作業メモ) CentOS でVNCを利用する

3 12月

intel の WEBRTC ソフト Intel Collaboration Suite for WebRTC を利用しているのですが,これを動かすためにクラスターを組んでいます。現在パソコン3台で,4台用の切り替え機に繋いで操作しています。これを4台以上に台数を増やすとしたらと8台用とかが必要になって,切り替え機もかなり金額が上がります。それで,リモートデスクトップのような機能で何とかならないかと思って試してみました。OS は CentOS なのですが,これには標準でリモートデスクトップビューアーという VNC を利用できるソフトが付いています。それで VNC を使ってやってみることにしました。問題となりそうなのは,ネットワークの構成です。この記事の最後あたりに,設定した際の話を書きました。

図を書いてみました。(外部から見える)フロントを担当するパソコンには,nic が2個あります。そのひとつがクラスター用です。外からは,アドレス 192.168.102.198 や 192.168.102.200 のパソコンは見えません。このプライベートアドレスのパソコンで VNC サーバーを起動して,フロントのパソコンから操作しようと考えました。

参考にしたサイトはここです。このサイトの通りやっただけですが,以下コマンドを記録します。

クラスター内部のパソコンからは,外のネットにつながらないので,RPM ファイルを一旦ダウンロードして,USBメモリに保存します。そのためのツールをまずインストールします。

yum install yum-utils

RPM ファイルをダウンロードします。tigervnc-server を利用しました。

yumdownloader tigervnc-server

たまたまなのか,関連するファイルがなくて助かりました。もし在ったら依存性とか考えないといけなかった(その時は,別なやり方があるようです)。ファイルを内部のパソコンに持って行って,ローカルに RPM ファイルをインストールします。

yum localinstall ./tigervnc-server-1.8.0-22.el7.x86_64.rpm

/lib/systemd/system/vncserver@.service を /etc/systemd/system/ に vncserver@:1.service という名前でコピーします。この 1 は,後で port 番号に関係してきます。

cp /lib/systemd/system/vncserver@.service /etc/systemd/system/
mv /etc/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

このファイルの中身は下記(一部省略)。

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=simple

# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver_wrapper <USER> %i
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

<USER> のところを,利用するユーザー名で置き換えます。このユーザーは,サーバー側にもクライアント側にも存在することが必要だと思います(設定次第なのかもしれせんが)。

一旦,このユーザーに切り替えて,VNC 用のパスワードを設定します。

vncpasswd

最初は,上記をたぶん root で実行してしまって,VNC が上手くつながらなかった。設定ファイルに書き込んだユーザー名で,上記コマンドを実行することが重要です。

後は,起動とファイヤーウォールです。まず起動。

systemctl daemon-reload
systemctl enable vncserver@:1
systemctl restart vncserver@:1

次にファイヤーウォール。多少実際に打ったコマンドと異なるかもしれない。クラスター内は trusted ゾーンになっています。

firewall-cmd --permanent --zone=trusted --add-service=vnc-server
$ firewall-cmd --reload
$ firewall-cmd --list-all

フロントのパソコンから繋ぎます。ポートの番号は 5900 + 1 です。

応答がありました。

表示できました。

ふたつの nic があったりして,特殊な状況でしたが無事 VNC を利用できました。