[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:104138] Re: vncサーバをxinetd経由で起動させるには?


MK278です。
皆様、お手数お掛けしております。(^_^;)

>は、vncの設定です。
お恥ずかしい大変失礼致しました。

> xinetd.confの設定は次のようになるんじゃないですか?
> service vnc
> {
>          socket_type     = stream
>          protocol        = tcp
>          wait            = no
>          user            = nobody
>          server          = /usr/local/vnc/Xvnc
>  }
# which Xvnc
/usr/bin/Xvnc
なので
# cat /etc/xinetd.d/vncserser
service vnc
{
        socket_type     = stream
        protocol        = tcp
        wait            = no
        user            = nobody
        server          = /usr/bin/Xvnc
 }
とすればいいのですね。

> これとは別にvnc.confの設定を書く必要があるだけのことだと思いますよ。
設定ファイルは
# cat /etc/sysconfig/vncservers |grep -v ^#
VNCSERVERS="1:root 2:user01"
VNCSERVERARGS[1]="-geometry 800x600"
VNCSERVERARGS[2]="-geometry 800x600 -depth 24"
ですね。

これをスタンドアロンモードではなく、xinetd経由での起動用に修正しないといけな
いのですね。

> つまり、前にSRAの畠山さんや私が示した設定は、vnc.confの設定です。
すいません。

> xinetd 経由で、XDMベースのログイン、したいのですよね?
はい、さようです。

> (1) /etc/services には VNC 用のエントリは定義されていますか?
有りませんでした。

>     xinetd (inetd) はこのファイルによって、アクセスしてきたポート番号と
>     それに対するサービスの対応付けを行ないます。ですからポート番号は
>     こちらで定義します。私のマシン(RH7.1)では以下のように定義しています。
>     vnc-800x600x8   5950/tcp
>     vnc-800x600x32  5951/tcp
>     vnc-1024x768x8  5952/tcp
>     vnc-1024x768x32 5953/tcp
> (2) /etc/xinetd.conf はどうなっていますか?
# cat /etc/xinetd.conf
defaults
{
instances               = 60
        log_type                = SYSLOG authpriv
        log_on_success = HOST PID
        log_on_failure = HOST
cps = 25 30
}
includedir /etc/xinetd.d

となっています。

> (3) であれば、/etc/xinetd.d に実際のサービス定義のファイルを置きます。
>     ファイル名は特に意味を持ちませんので、適当でいいでしょう。
>     ここで定義されるサービスの名前は /etcv/services で定義したものに
>     対応している(同じ名前になっている)必要があります。
>     と私が使っているものとの差を見ると、
>     o port は定義しなくていいはずです。
>         こっちでも定義するとどういう動きになるのかな...
>     o flags = REUSE NODELAY を入れておいた方がいいでしょう。
つまり、
# cat /etc/services
:
vnc1       5901tcp
vnc2      5902/tcp

# cat /etc/xinetd.d/vncserver
service vnc1
{.
        socket_type     = stream
        protocol        = tcp
        wait            = no
        user            = nobody
        server          = /usr/bin/Xvnc
        server_args     = -inetd -query localhost -once -geometry
800x600 -depth 24 -nevershared -ac /usr/bin/X11/xset q
        flags           = REUSE NODELAY
}
service vnc2
{
        socket_type     = stream
        protocol        = tcp
        wait            = no
        user            = nobody
        server          = /usr/bin/Xvnc
        flags           = REUSE NODELAY
        server_args     = -inetd -query localhost -once -geometry
800x600 -depth 24 -nevershared -ac /usr/bin/X11/xset q
}

# cat /etc/hosts.allow
Xvnc: 192.168.

ですね。

> で、ここまでやって、 xinetd を restart すればOKのはずです。
> 実際にサービスが開始されいるかどうかは
>     netstat -a
# netstat -a | grep vnc
tcp        0      0 *:vnc1                  *:*                     LISTEN
tcp        0      0 *:vnc2                  *:*                     LISTEN

となりました。

> で確認してみてください。/etc/services で定義された名前で LISTEN して
> いればOKです。ここまでOKであれば、とりあえずビューワからの接続は
> 可能になるはずです。
>     LISTEN が出ていても接続できなかったら firewall あたりを
>     疑ってください。
firewallはスルーにして/etc/hosts.allowもALL: ALLにして
Wi2kから192.168.0.1:1や192.168.0.1:2にアクセスしてみましたら、
「server closed connection unexpectedly」
となってしまいます。
一応、
# tcpdump -i eth0 \( dst port 5901 or dst port 5902 \)
としてみましたら、確かにパケットサーバには来ています。
うーん、後、何が間違っているんでしょう?

> 繋がってもログインウィンドウが出ない、とかであれば次は xdm、gdm
> あたりの設定の問題になります。
> フォントパスを定義しておかないと動作しないディスプレイマネージャも
> ありますので、フォントパスは追加しておいた方がいいですよ。
「server_args     = -inetd -query localhost -once -geometry 800x600 -depth
24 -nevershared -ac /usr/bin/X11/xset q」
とすればいいのですよね。

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
Follow-Ups: References: