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
[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)