hana_shinのLinux技術ブログ

Linuxの技術情報を掲載しています。特にネットワークをメインに掲載していきます。

Xサーバの動かし方



1 はじめに

xeyesを実行して、PCの画面にxeyesの目玉を表示してみます。

2 検証環境

ネットワーク構成は以下のとおりです。

    PC(Win10)------------------------------AlmaLinux
192.168.2.100                              192.168.2.119

AlmaLinuxの版数は以下のとおりです。

[root@client ~]# cat /etc/redhat-release
AlmaLinux release 8.6 (Sky Tiger)

カーネルの版数は以下のとおりです。

[root@client ~]# uname -r
4.18.0-372.9.1.el8.x86_64

3 インストール方法

3.1 Xサーバのインストール方法

PCにXサーバ(VcXsrv)をインストールします。インストール方法は、ここ(WSL上にXサーバをインストールしてGUIを実現する(VcXsrv編):Tech TIPS - @IT)を参照してください。

3.2 Xクライアンのインストール方法

AlmaLinuxにXクライアン(xeyes)をインストールします。xeyesはxorg-x11-appsパッケージに入っているので、xorg-x11-appsパッケージをインストールします。なお、xorg-x11-appsパッケージはpowertoolsリポジトリにあるので、powertoolsリポジトリを有効にします。dnfコマンドの使い方は、dnfコマンドの使い方 - hana_shinのLinux技術ブログを参照してください。

[root@client ~]# dnf config-manager --enable powertools

xorg-x11-appsパッケージをインストールします。

[root@client ~]# dnf install xorg-x11-apps

4 McAfee(ウィルス対策ソフト)の設定変更

検証環境のPCには、McAfeeがインストールされています。デフォルトでは、XクライアントからXサーバにTCPコネクションが確立できないため、下記2点の設定変更をしました、

まずネットワークの接続設定を変更して、XクライアントのIPアドレスを追加します。

次に、PCの6000番ポートを開放します。

5 Xサーバの起動方法

XLaunchのアイコンをクリックします。

Display numberはデフォルトの"-1"を使います。デフォルトの"-1"を選択すると、<ディスプレイ番号>は0になります。

"Start no client"を選択して、"次へ"をクリックします。

"Disable access control”を選択して、"次へ"をクリックします。"Disable access control”を選択しないと、Xクライアントからのアクセスが拒否されました。

"完了"をクリックします。

6 Xクライアントの起動方法

環境変数DISPLAYの書式は以下のとおりです。IPアドレスはXサーバのIPアドレスを設定します。

DISPLAY=<IPアドレス>:<ディスプレイ番号>.<スクリーン番号>

環境変数DISPLAYにIPアドレス、ディスプレイ番号、スクリーン番号を設定します。

[root@client ~]# export DISPLAY=192.168.2.100:0.0

DISPLAYの設定内容を確認します。

[root@client ~]# echo $DISPLAY
192.168.2.100:0.0

xeyesコマンドを実行します。

[root@client ~]# xeyes

7 実行結果

xeyesコマンドを実行すると、PCの画面にxeyesの目玉が表示されることがわかります。

次に、xeyesコマンド実行時のTCPコネクション確立の様子をtcpdumpコマンドを使って確認してみます。なお、tcpdumpコマンドの使い方は、tcpdumpの使い方(基本編) - hana_shinのLinux技術ブログを参照してください。

[root@client ~]# tcpdump -i eth0 port 6000 -nn
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
05:17:31.001568 IP 192.168.2.119.34402 > 192.168.2.100.6000: Flags [S], seq 2931589611, win 29200, options [mss 1460,sackOK,TS val 168698574 ecr 0,nop,wscale 7], length 0
05:17:31.002126 IP 192.168.2.100.6000 > 192.168.2.119.34402: Flags [S.], seq 4171104105, ack 2931589612, win 65535, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
05:17:31.002249 IP 192.168.2.119.34402 > 192.168.2.100.6000: Flags [.], ack 1, win 229, length 0
-snip-

tcpdumpの実行結果を図示すると以下のようになります。()内の数値はポート番号です。

X client                                  X server
(34402)                                    (6000)
   |                                         |
   |------------------ SYN ----------------->|
   |<----------------- SYN+ACK --------------|
   |------------------ ACK ----------------->|
   |                                         |

servicesファイルを確認すると、6000番ポートはX Window Systemに予約されていることがわかります。

[root@client ~]# cat /etc/services |grep x11
x11             6000/tcp        X               # the X Window System

lsofコマンドを実行すると、XサーバとXクライアントの間でTCPコネクションが確立されていることがわかります。なお、lsofコマンドの使い方は、lsofコマンドの使い方 - hana_shinのLinux技術ブログを参照してください。

[root@client ~]# lsof -c xeyes -a -i -a -nP
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
xeyes   1609 root    3u  IPv4  33156      0t0  TCP 192.168.2.119:34404->192.168.2.100:6000 (ESTABLISHED)

Z 参考情報

私が業務や記事執筆で参考にした書籍を以下のページに記載します。
Linux技術のスキルアップをしよう! - hana_shinのLinux技術ブログ

X Window System