▼ 2009/05/29(Fri) VNC Serverをxinetd経由で立てる方法 [Ubuntu Server 8.10]
/etc/xinetd.d/vnc
次のように設定
service vnc
{
disable = no
nice = 10
socket_type = stream
wait = no
user = nobody
server = /usr/bin/Xvnc
server_args = -inetd -query localhost -once -geometry 1024x768 -depth 16 -securitytypes=none -extension XFIXES
log_on_success += DURATION USERID
log_on_failure += USERID
}
設定値の内容については、Fedora 10の方法を参照。ただし、Ubuntu限定で -extension XFIXESというパラメータが必要らしい。
これを付けないと、つないだ瞬間背景だけ表示されてvncviewerが落ちる。
xinetdを再起動
# service xinetd restart * Stopping internet superserver xinetd ...done. * Starting internet superserver xinetd ...done.
iptablesの確認
Ubuntuの場合はデフォルト全て許可なので、Firestarterを使ってたり、手でiptablesを書いている方は5900/tcpを許可する。/etc/gdm/gdm.conf
以下の行をコメントアウトGreeter=/usr/lib/gdm/gdmgreeter RemoteGreeter=/usr/lib/gdm/gdmlogin以下の行を変更
[xdmcp] Enable=trueたしか変更したのはここだけだったと思うけど、念のため、全文の/etc/gdm/gdm.conf。
再起動しておく
# service gdm restart * Stopping GNOME Display Manager... ...done. * Starting GNOME Display Manager... ...done.これで接続すると、Debianのロゴが出てくる。
普通のUbuntuロゴに戻したい方はいったんログインして、System -> Administration -> Login Windowを開き、Remoteタブを開いてStyleを"Same as Local"にする。

後は、Localタブでお好みのStyleを選べばよい。
Ubuntu 9.10での設定
8.xxとは色々変わったようで上記の設定のままを真似できないところがある。いずれまとめなおそうと思っているが暫定でここら辺りが参考になる。(もう10.04とか出てるけど…)
参考になった記事や興味深かった記事は、他の人も見つけやすいようにリンクやはてブしていただけると助かります…。
コメントも歓迎です。
▼ コメント(0件)
- TB-URL http://mo.kerosoft.com/0125/tb/
▼ 2009/05/29(Fri) VNC Serverをxinetd経由で立てる方法 [CentOS 5.3]
/etc/servicesの編集
Fedoraと違ってCentOSには、/etc/servicesにvncの記述が無いので、以下の一行を追加する。一応順番に並んでいるので、7955行目辺りが妥当。
vnc 5900/tcp # VNC Server後は、Fedora 10の方法を参照のこと。
参考になった記事や興味深かった記事は、他の人も見つけやすいようにリンクやはてブしていただけると助かります…。
コメントも歓迎です。
- TB-URL http://mo.kerosoft.com/0124/tb/
-
▼
VNC Serverをxinetd経由で立てる方法 [Ubuntu Server 8.10]
Kerosoft : Modus Operandi VNC on Fedora 10、VNC on CentOS 5.3に引き続き、Debian系のUbuntu Server 8.10でもVNC Serverを立てる必要が出来たので、そのメモ。インストールUbuntuの場合はパッケージ名が違うので注意。# ...
▼ 2009/05/29(Fri) VNC Serverをxinetd経由で立てる方法 [Fedora 10]
私はLinux環境のメインディストリビューションとしてRedHatを7.1位から使っており、その後Fedoraに移ってきているが、ここではFedora 10でVNC Serverを立てる方法を紹介する。
インストール
まずはvncserverをインストール。vncviewerの方はインストールした時に明示的にチェックを外していなければ、既にインストールされているかも知れない。
$ sudo yum install xinetd vnc vnc-server
xinetd
ここでvncserverコマンドを打ってやれば、現在ログインしているセッションに対してattachすることが出来るが、サーバーを再起動したりした際には立ち上げ直さねばならず、さらに1ユーザー毎にポートとプログラム、そしてVNC Passwordを用意しなければならない。1ユーザーしか使わないにしても、平文で流れるVNC Passwordだけでユーザーコンソールにログイン出来てしまうのは非常に危険である。
そこで、xinetdというスーパーサーバーを通して、システム起動時から起動しておき、VNC認証ではなくローカルのユーザー名・パスワード認証を通させてから、ログインできるようにするのがこの方法。
まずは、設定ファイルを書く。
今後いくつかファイルを変更するので、rootになっておいた方が楽かな。
$ sudo su -
# vi /etc/xinetd.d/vnc
service vnc-server
{
disable = no
nice = 10
flags = REUSE
socket_type = stream
wait = no
user = nobody
server = /usr/bin/Xvnc
server_args = -inetd -query localhost -once -geometry 1024x768 -depth 16 --securitytypes=none
log_on_success += DURATION
log_on_failure += HOST
}
設定ファイルに関しての注意であるが、2行目まではこの通りに書くこと。特にservice名をvnc-server以外にするとうまく動かない。この名前は/etc/servicesでポートとプロトコルを指定してる行の名前に対応させる必要がある。
あと、以前自分がハマったが、2行目の{をservice行の一番最後に書いた場合もうまく動かなかった。
設定値の説明
- disable
- このサーバーをxinetd経由で起動するかどうか。noにしておけば起動する。
- nice
- 優先度を10下げる。(なんか、たまに切断後に暴走することがあるし…)
- flags
- 接続ソケットを再使用させるためにREUSE。
- socket_type
- ネットワークのソケットタイプ。*1
- wait
- シングルスレッドかマルチスレッドかの設定。yesならシングルスレッドで、サーバーが起動したらそれが死ぬまで要求処理を停止する。noなら新たな要求を処理する。今回は複数人が同時ログイン可能にしておきたいので、noとする。
- user
- 実行ユーザー。どーせ認証画面を出すので不用意にrootにしない方がいい。
- server
- xientd経由で起動するサーバーコマンド。
- server_args
- コマンド引数。詳細は以下。
- log_on_success/log_on_failure
- ログの設定。オプションとしては、ATTEMP(試行記録)、DURATION(サービス時間の長さ)、EXIT(終了ステータス)、HOST(ホストIP)、PID(プロセスID)、USERID(ユーザーID)などを記録できる。ただ、USERIDを書くとidentプロセスが確認にいって遅いことがあるので、あまりオススメしない。(Thanks to Sasaki)
server_args
- -inetd
- inetd経由で起動させるモード。*2
- -query localhost
- ユーザー認証をさせるXDMCP(X Display Manager Control Protocol)のサーバー指定。自分自身でよい。
- -once
- ユーザーがVNCセッションを閉じたらXvncも終了して、xinetdの待ち受け状態だけにする。
- -geometry 1024x768
- 解像度の設定。お好みで。
- -depth 16
- 色数の設定。お好みで。
- --securitytypes=none
- XDMCP経由で認証させるため、VNC Passwordはかけない。
サーバー起動設定
# service xinetd start xinetd を起動中: [ OK ] # chkconfig --list xinetd xinetd 0:off 1:off 2:off 3:on 4:on 5:on 6:offランレベル3-5くらいで起動させるようにしておけばOK。
iptables
ファイアウォールに5900番を開ける。# vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 5900 -j ACCEPT ↑この行をCOMMIT行より前に記述 # service iptables restart iptables: ファイアウォールルールを消去中: [ OK ] iptables: チェインをポリシー ACCEPT へ設定中filter [ OK ] iptables: モジュールを取り外し中: [ OK ] iptables: ファイアウォールルールを適用中: [ OK ] iptables: 追加のモジュールを読み込み中:nf_conntrack_netbios[ OK ]
接続確認
この状態で、サーバー的には接続できるようになっているはずである。$ telnet localhost 5900 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. RFB 003.008 ^] telnet>quit Connection closed by foreign host.しかし、$ vncviewer localhostとして繋ぐと灰色の画面のまま、何も表示されないと思う。
これは以下のXDCMPがリモートログインを規制しているのが原因なので解除する。
*1 : stream(ストリーム型サービス)の他、dgram(データグラム型サービス)、raw(IP直接制御)、seqpacket(信頼できる連続データグラム交換サービス)があるらしい。詳細
*2 : ちなみにxinetdはinetdの拡張なのでxが無いことを気にする必要ない
gdm
Fedora 7位?までは、vncserverをyumで突っ込んでxinetd.dにファイルを書くだけだった気がするが、ここのところのFedoraはログイン認証周りの設定が強化されており、デフォルトではXDCMP経由のリモートログインが無効化されている。Fedoraのデフォルトではディスプレイマネージャとしてgdmが使われているので、その設定ファイルを変更する。
以前は、X Windowシステム上で、[システム]→[管理]→[ログイン画面]と開けばgdmsetupが起動していたが、Fedora 8位からこの設定ツールがなくなったようなので、手で書くしかない。
# vi /etc/gdm/custom.conf # GDM configuration storage [xdmcp] Enable=true [chooser] [security] DisallowTCP=false AllowRemoteRoot=false [greeter] IncludeAll=false [debug]あんまり中身についてはよくわからないので解説省略^^;
多分重要なのはxdcmpセクションのEnable=true。
gdmの再起動
gdmのみを再起動したいところなのだが、どうも簡単にはできない模様。色々試してみたが…。一部ではinitを一旦3に下げて5に戻すといいらしいという話もあったが、ここでは素直にサーバーを再起動する。
# shutdown -r now
参考になった記事や興味深かった記事は、他の人も見つけやすいようにリンクやはてブしていただけると助かります…。
コメントも歓迎です。
1: 2009年07月04日(Sat) 午後9時37分
この方法で設定できましたが Fedora では WindowsXPからの起動が遅くなりました。
以下を参考に
http://d.hatena.ne.jp/ryo_1114/20090321/1237610440
/etc/xinetd.d/vnc を
log_on_success += DURATION
log_on_failure += HOST
に変更したら、早く起動しました。
2: 2009年07月04日(Sat) 午後10時57分
>Sasakiさま
ありがとうございます。確かにUSERIDの確認に時間がかかるようですね。
記事にも修正を入れておきました。
- TB-URL http://mo.kerosoft.com/0123/tb/
-
▼
VNC Serverをxinetd経由で立てる方法 [CentOS 5.3]
Kerosoft : Modus Operandi つい先日CentOSでもxinetd経由でVNCサーバーを立てることになったので、その記録。基本的にはFedora 10の方法と同じだが、一つだけ違う。/etc/servicesの編集Fedoraと違ってCentOSには、/etc/servicesにvnc...
-
▼
VNC Serverをxinetd経由で立てる方法 [Ubuntu Server 8.10]
Kerosoft : Modus Operandi VNC on Fedora 10、VNC on CentOS 5.3に引き続き、Debian系のUbuntu Server 8.10でもVNC Serverを立てる必要が出来たので、そのメモ。インストールUbuntuの場合はパッケージ名が違うので注意。# ...
