雑念ベースは http://blog.yoshitomo.org/ に移転しました。ここはリンクや画像などのために残っているのみで、更新はされません。

メイン

2005年11月15日

VNC 導入覚書(後編) - もっと手軽に [FreeBSD]

 このエントリーは、前編を読んだことを前提としてあります。

もっと手軽に

 さて、ここまでは普通の使い方です。SSH などでログインしてサーバーを起動し、ビューアでログインして作業してログアウトして SSH でサーバーを終了。ちょっと面倒です。コンソールで十分な作業だったら、SSH でログインしたまましたほうがマシです。

 SSH と同じ手軽さで出来ないものでしょうか。

 そう考えた人はほかにもいました。André Moreira さんです。彼は、inetd から Xvnc(VNC サーバーの本体。vncserver は補助用の Perl スクリプトです)を起動できるようにする iXvnc patch for VNC X-Server を公開しました。これによって、わざわざサーバーを起動してからビューアでログインという手間をかけなくて済むようになったわけです。
 なお、Xvnc 3.3.3r3 でこのパッチは正式採用されたため、現在はこのパッチを当てる必要はありません。インストールした時点で、この機能は有効になっています。

inetd から起動させる

 機能が有効になっていると書いたばかりですが、残念ながらそのままでは使えません。ちょっと面倒な作業が必要です。
 inetd は、特定のポートにアクセスがあったときに、それに対応するサーバーを起動するデーモンです。ビューアーが終了して接続が切れると、サーバーも終了してくれて便利です。しかも、FreeBSD の inetd はアクセス制限も出来ます。LAN のパソコンや会社からだけアクセスを許可するというのが出来るわけです。便利ですが、/etc/services/etc/inetd.conf の2つのファイルの編集が必要になります。また、XDM が有効になっている必要もあります。

 なお、今回の方法を試した環境では、1024×768でのアクセスが出来ていません。原因がわかり次第反映させる予定です。

/etc/services の変更

 inetd は、アクセスがあったサービスによって、対応したサーバーアプリケーションを起動します。そして、サービスは /etc/services に書かれたものしか有効になりません。VNC は標準では登録されていませんので、このファイルに書き加えてやる必要があります。私は、次のように書き加えました。

vnc-800x600x16  5910/tcp
vnc-800x600x24  5911/tcp
vnc-1024x768x16 5912/tcp
vnc-1024x768x24 5913/tcp

 形式は、サービス名スペースポート番号/プロトコル です。サービス名は他と被らなければ任意、ポート番号5900番台で他と被らないものを、プロトコルは VNC の場合は tcp です。

/etc/inetd.conf の変更

 サービスが追加されたので、今度は対応設定を inetd の設定ファイル /etc/inetd.conf に書き加えます。

vnc-800x600x16  stream  tcp     nowait  nobody  /usr/local/bin/Xvnc     Xvnc -inetd \
-query localhost -once -geometry 800x600 -depth 16 -securitytypes none
vnc-800x600x24  stream  tcp     nowait  nobody  /usr/local/bin/Xvnc     Xvnc -inetd \
-query localhost -once -geometry 800x600 -depth 32 -securitytypes none
vnc-1024x768x16 stream  tcp     nowait  nobody  /usr/local/bin/Xvnc     Xvnc -inetd \
-query localhost -once -geometry 1024x768 -depth 16 -securitytype none
vnc-1024x768x24 stream  tcp     nowait  nobody  /usr/local/bin/Xvnc     Xvnc -inetd \
-query localhost -once -geometry 1024x768 -depth 32 -securitytype none

 長いので途中で1回改行を入れていますが、実際は1行です。\ と直前の改行を削除してください。

アクセス設定

 ここまでの変更で inetd の設定は終わり(反映はまだです)ですが、このままだとどこからでもアクセスできてしまいます。安全のため、inetd の機能を使ってアクセス制限をしておきます。

 アクセス制限の設定は、/etc/hosts.allow です。

vnc-800x600x16 : 127.0.0.1 : allow
vnc-800x600x16 : 192.168.0.1 : allow
vnc-800x600x16 : ALL : deny
vnc-800x600x24 : 127.0.0.1 : allow
vnc-800x600x24 : 192.168.0.1 : allow
vnc-800x600x24 : ALL : deny
vnc-1024x768x16 : 127.0.0.1 : allow
vnc-1024x768x16 : 192.168.0.1 : allow
vnc-1024x768x16 : ALL : deny
vnc-1024x768x24 : 127.0.0.1 : allow
vnc-1024x768x24 : 192.168.0.1 : allow
vnc-1024x768x24 : ALL : deny

 形式は、サービス名 : 設定対象 : 設定 です。
 この例では3行1組で、ローカルからのアクセスを許可、192.168.0.1 からのアクセスを許可、すべてアクセスを拒否となっています。上から順に一致するところを探して適用するので、ローカルと 192.168.0.1 以外は拒否するようになります。仕事先からアクセスできるようにする場合は、そこで使われている WAN 側の IP アドレスからの許可設定を加えてください。

 ここまで来たら、inetd に設定を再読み込みさせます。次のコマンドを実行します。

kill -HUP `cat /var/run/inetd.pid`

XDM を有効にする

 XDM でログインするようになるので、これが有効になっていないとグレー表示で止まってしまいます。Linux ディストリビューションでは標準で有効になっているようですが、FreeBSD は設定変更が必要です。

wdm のインストール

 X.org には xdm というそのままの名前の XDM が付属していますが、VNC とは相性が悪いようで使えません。仕方がないので、私は wdm をインストールしました。wdm は WindowMaker の XDM で、Ports にも入っています。現時点では、x11/wdm にあります。

/etc/ttys の変更

 XDM を有効にするために、/etc/ttys を編集します。

ttyv8  "/usr/X11R6/bin/xdm -nodaemon"  xterm   off secure

 これを、次のように修正します。強調部分が変更箇所です。
 wdm 以外を使う場合は、/usr/X11R6/bin/wdm では駄目です。どのようにすればいいかは、そのアプリケーションのマニュアルなどを参照してください。

ttyv8  "/usr/X11R6/bin/wdm -nodaemon"  xterm   on  secure

 変更内容の反映は次のコマンドで行いますが、XDM の設定が終わっていない場合はあとでいいです。

kill -HUP 1
/usr/X11R6/lib/X11/wdm/Xaccess の変更

 アクセスをローカルからのみに限定します。/etc/hosts.allow への書き加えと /usr/X11R6/lib/X11/xdm/xdm-config の初期設定(DisplayManager.requestPort の値が 0 なら OK)ですでに制限はかかっているはずですが、念のためです。/usr/X11R6/lib/X11/wdm/Xaccess(XDM に wdm を使っている場合)の次のように変更します。

*                                      #any host can get a login window

 この行をコメントアウトします。コメントアウトしないと、どこからのアクセスも許してしまいます。

#*                                      #any host can get a login window

 次に、このファイルの一番下に(本当はどこでもいいのですが、一番下がわかりやすいです)、localhost と書き加えます。これによって、localhost (自分が動いているのと同じホスト)からのアクセスを許可します。

 編集が終わったら、kill -HUP 1 とコマンドを実行してみてください。/sbin/init/etc/ttys の内容が反映されます。ホストマシンで直接作業している場合は、ログアウトすると XDM が起動されるはずです。ログインしてみてください。うまくいったら、VNC からログインしてみましょう。

 なお、wdm に設定を反映させるには、kill -HUP `cat /var/run/xdm.pid` と実行します。

VNC からログイン

 通常の場合(前編参照)では、最後の数字はディスプレイ番号でした。inetd 経由の方法では、サービスとして登録したときのポート番号から5900を引いた物になります。800×600で24ビットカラーの場合は11となります。
ビューアのスクリーンショット(アクセス先を入力したところ) GIF89a形式 3.68KB

 そのまま OK ボタンを押すと、そのまま XDM の画面に切り替わります。この時点でリモートホストに接続されていますので、あとは普通にログインしてください。
ビューアのスクリーンショット(リモートホストのログイン画面)のサムネイル GIF89a形式 28.6KB

 ログイン後の操作は、通常の X Window System と同じです。終了すればビューアも終了します。vncserver も終了するので、そのままほったらかしても大丈夫です。

2005年11月03日

FreeBSD のロゴが決定 [FreeBSD]

 FreeBSD のロゴが決定したとのことです。

FreeBSD Logo Design Competition ResultThe FreeBSD Project

We are pleased to announce the winner of our logo competition: Anton K. Gural. For competition details, please see the result page. With our new logo, we will be able to show our own identity on the 'net, and this will make our marketing efforts much easier. We will publish soon a guideline page which gives usage rules and usable (vector format) logo data under the same BSD license as the rest of FreeBSD.

 新しいロゴが決まったとなると、デーモン君(日本での愛称。正式名称はないが、あえて呼ぶなら Beastie とのこと)がどうなるか気になりますが、これからも続投だそうです。FreeBSD 以外でもいろいろな BSD 系 OS に登場していて、*BSD のマスコットという扱いのようです。

 新しいロゴは、ボーリングの玉に角が付いたような感じ。角はデーモン君のように反ってはいないので、なんだか鬼みたいです。無機質で、キャラクターという感じはないですね。”ロゴ”です。


FreeBSD logo design competition
今度の顔はひと味違うぜ、FreeBSD 新ロゴ決定MYCOM PC WEB
History of BSD T-shirts(デーモン君の公式サイト)
The BSD DaemonThe FreeBSD Project

2005年11月02日

VNC 導入覚書(前編) - インストールから一般的なログインまで [FreeBSD]

 リモートホストにアクセスできる VNC を導入しました。問題は残っていますが、Windows から普通に利用できるところまで来たので、覚書を残しておきます。

導入環境:FreeBSD 5.4-RELEASE
導入バージョン:4.1.1
導入方法:Ports(Portupgrade を使用)

インストールからログイン

 インストールは、root で portinstall net/vnc です。エラーが出なければこれでおしまい。 早速サーバーを起動してみましょう。起動するユーザーは、VNC でログインしたいユーザーです
$ vncserver

 1回目の起動のときには、ログイン用のパスワードを訊かれます。このパスワードは保存されますので、2回目からは訊かれません。

 サーバーが起動したときに、次のようなメッセージが表示されます。

New 'example.foo.bar:1 (root)' desktop is example.foo.bar:1

Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/example.foo.bar:1.log

 リモートからは、example.foo.bar:1 にアクセスします。example.foo.bar がホストのアドレスで、1 がディスプレイ番号です。接続する側(一般にはクライアントですが、VNCではビューアと呼ばれます)では、これをそのまま指定してやります。
ビューアのスクリーンショット(アクセス先を入力したところ) GIF89a形式 3.67KB

パスワードを入力して認証されれば、そのままログインとなります。
ビューアのスクリーンショット(パスワードを入力したところ) GIF89a形式 3.16KB

 ログインしたときの環境は、~/.vnc/xstartup によって決まります。標準では、ウィンドウマネージャーは twm です。
ビューアのスクリーンショット(ログイン後) GIF89a形式 4.18KB

 ビューアは終了すれば閉じますが、実はサーバー側では状態がそのままになっています。もう1度ビューアで接続すると同じ状態になります。そのままだと資源の無駄ですし、セキュリティの問題もあります。root でサーバーが起動しっぱなしなんて、恐ろしいことになっているかもしれません。もし誰かがログイン出来てしまったら(もちろんパスワードは必要ですが)、自由にいじりたい放題です。
 安全のためにも、作業が終わったらサーバーは終了させましょう。コマンドは、vncserver -kill :ディスプレー番号です。ディスプレー番号の前のコロン(:)とスペースをお忘れなく。

後編へ続く

 さて、ここまでの方法でも便利ですが、ログインからログアウトまでの作業が煩雑で面倒です。  後編では、もっと使い勝手を浴する方法を解説します。手間はかかりますが、やってみる価値は十分あると思います。

関連リンク

RealVNC
 本家開発元。
VNCのページ
 古いですが、日本語での詳しい解説があります。Google でトップに来ます。
ゼロ円でできるXサーバ WindowsでLinuxをリモート操作・前編(1/3)@IT - アットマーク・アイティ
 Linux向けですが、図や写真入で詳しく解説されています。

2005年10月26日

ローカルメールサーバー開通 [FreeBSD]

 ローカルサーバーにサーバーソフト(Postfix+Qpopper。sendmai は難解だったので捨てました)を入れて、ローカルメールサーバーにしてみました。

 これで、無料サービスのユーザー登録をするときに専用アカウントが使えるようになります。漏洩したらどこからかわかります。
 それと、Qpopper を入れたので、サーバーのレポートメールが作業マシン(WinXP)のメールソフトで読めます。2・3通のメールを見るためにログインするのは面倒だったんです。今使っているメールソフトは定期的にチェックしてくれるので、その点でも便利です。プロバイダとかのアドレスに転送するという方法もありますが(昔やってました)、これだと内部情報が外に出ちゃいます。


 メールサーバーといえばスパムです。最近は個人サーバーが不正中継に利用されることが多いそうですので、そのあたりも注意してみました。

 自分だけしか使わないので、アカウントの追加は内部からしか出来ません。不正中継は外部から出来ないことを確認済み。pop3のポート(110番)はルーターが塞いでいますし、inet で内部からしかサーバーが起動しないようにしてあります。
 今のところゼロですが、スパムが届くようになってしまったらフィルタを噛ませる予定です。

 ほかにもこれはやっとけと言うのがありましたら、コメントください。