keyboard_arrow_right
toshi
未分類

VNC on SSH

VNC on SSH


LinuxをSSHコンソールでリモートコントロールすることはごく一般的だが、一部のサーバー・デーモン等でGUIのコンフィギュレーション・ツールを利用したほうが効率のいい場合があります。GUIでリモートコントロールしたい場合に使用される最もポピュラーな方法がVNCサーバーを利用した方法ですが、VNC用のポートをオープンするのはセキュリティー上お薦めできません。

今回はLinuxサーバーをSSHポートフォワーディングを使用したトンネル接続でVNCコントロールする方法を使用してみます。
最近のディストリビューションでは標準でVNCがインストールされるパッケージオプションも多く、少なくとも大抵のディストリビューションのインストーラーにRPMパッケージは含まれています。今回の設定も CentOS6 とそれに含まれている VNCサーバーで設定をしてみました。従ってVNCサーバーは標準のRPMインストールです。

まずはVNCサーバーの設定ですが、デーモンとしてサービス起動するとGUIが常駐することになるので普通はやりません。xinetd経由で起動することもできますがサーバーの設定作業を楽にすることを目的とし、一般ユーザーに解放するものではないので使用するときだけ手動で起動することにします。
VNC の起動コマンドは「vncserver」ですがLinuxのようなマルチデスクトップのOSではこれにスクリーン番号のオプションを付けて起動します。何もオプションを付けなかった場合はスクリーン0として扱われ、これは「vncserver :0」というコマンドを実行したのと同じになります。クライアントが接続出来るスクリーンは1つに限定されるため、複数のユーザーで同じスクリーンを同時使用することはできません。従って、複数の人間がアクセスする可能性がある場合はユーザーごとにスクリーンを分けておくことが賢明です。
また、ここで扱うスクリーン番号はVNCのポート番号に連動しており、0ならば5900、1ならば5901のようになります。後ほど設定するSSHのポートフォワーディングで使用するので覚えておきましょう。

1. 起動コマンドのエリアス設定
各ユーザーごとに使用するタイミングで起動、終わったら終了させることを前提に各ユーザーの「.bashrc」ファイルにコマンドエリアスを作成しておきます。

編集ファイル:/home/ユーザー/.bashrc
最終行に以下の2行を追加(スクリーン番号は任意に変更する)。

alias vncstart=’vncserver :1′
alias vnckill=’vncserver -kill :1′

ここでは起動を「vncstart」、終了を「vnckill」というコマンドに設定していますが任意の表現でかまいません。なお、ここで設定したエリアスは次回ログインから有効になるので注意しましょう。ということで一回ログアウトして再度ログインしてコマンドを実行してみます。

# vncstart

起動メッセージが表示されパスワードの入力を求めてくるのでパスワードを入力、設定します。起動した旨のメッセージが表示されたらプロセスを確認してみます。

# ps ax | grep Xvnc

プロセスの確認ができたら一旦終了させます。

# vnckill

最初の起動でユーザーディレクトリ配下に「.vnc」というディレクトリが作成され、この中にXの設定、パスワード、ログが保存されるようになります。
次にVNCで使用するデスクトップを標準のtwmからgnomeに変更します。

2. デスクトップの変更

編集ファイル:/home/ユーザー/.vnc/xstartup
最終行をコメントアウトしてコマンドを追加する。

#twm &
exec gnome-session &

次にSSHサーバーがポートフォワーディングを使えるように設定を変更します。

3. SSHDポートフォワードの設定

編集ファイル:/etc/ssh/sshd_config

#AllowTcpForwarding yes

上記記述のコメントアウトをはずす。

AllowTcpForwarding yes

以上でサーバー側のセットアップは終了です。上記 1 は各ユーザーごとに別のスクリーン番号で設定し、設定したスクリーン番号を覚えておいて下さい。

4. SSHクライアントの設定

SSHトンネルを作るためのクライアントの設定ですが、ここでは「putty」を使用します。「poderosa」を使用する場合は別途プラグインが必要となります。
すでにサーバー接続のセッション情報は保存してあることを前提に説明します。
putty を起動したら保存してあるセッションを読み込みます。左側のSSHの中から「トンネル」を選択します。

「フォワードするポートを追加」の「源ポート」に任意の使用していないポート番号を入力します。上では15901を使用しています。
「送り先」に localhost:ポート番号 のように入力します。ここではスクリーン番号「1」に対応した「5901」を入力しています。追加ボタンをクリックしてポート一覧に追加します。これでトンネルの設定は終わりです。毎回入力しなくていいようにセッションに保存しておきましょう。

このセッションでサーバーに接続し、1で設定したコマンドでVNCサーバーを起動します。起動が確認できたら vncviewer を起動して接続してみます。

上のように入力してOKをクリックしパスワード入力ダイアログが表示されればトンネル接続は成功です。

未分類

VPSサーバーでサイト構築 — その12

12.設定完了後のトラブルシュート

前回までで一通りの設定は終了しましたが、幾つかの問題点が発見されました。内容は次のようなことです。

1. DTI側のメンテナンスが発生した後、もしくはVMサーバーの再起動を行った時に Dovecot の設定ファイルである dovecot.conf ファイルが書き換わってしまう。
2. ウェブフォームからphpでメール送信ができない。
3. 外部ドメインからのメールを受信できない。

まず1の問題ですが、これは BlueOnyx が設定ファイルを書き換えてしまうようです。Dovecot は BlueOnyx でも使用しているため、メールを使用しない設定をしていると設定ファイルが初期化され、設定ファイルの以下の行が書き換わります。

protocols = pop3 imap →  protocols =

つまり、メールを使用しないという設定のために使用するメールプロトコルを空白に書き換えてしまうわけです。プロトコルの設定が記入されていませんからサービスの起動も失敗します。
今回の場合LDAPでバーチャルドメインを使う方法で構築しているためできませんが、通常の構築であれば BlueOnyx 側で Dovecot だけを使用する設定をするのがいいのかもしれません。つまり POP3、IMAP サーバーとして構成する方法です。
私の場合は仕方がないのでコピーを作成し、メンテナンスの後にコピーしてあるファイルと置き換える方法で対処しています。

2と3の問題は smtp のポート番号を変更した後で発生しました。考えてみれば単独のメールサーバーでメールゲートウェイを兼ねているわけですから25番ポート以外を指定すれば動かないのは当然なわけで、ちょっと迂闊でした。
ということで、Submission ポートを設定することで回避しました。設定方法は簡単です。Postfix の master.cf ファイルを開き

#submission inet n????? -?????? n?????? -?????? -?????? smtpd

submission inet n????? -?????? n?????? -?????? -?????? smtpd

と、コメントアウトするだけです。
Postfix をリロードすると Submission ポート587番が有効になり上の問題は解決します。

本来ならば今回の連載は SpamAssassin の実装となるところなのですが、問題が発生して実装を一時中断しています。
SpamAssassin を動作させるところまでは問題なくいっていたのですが、フィルターを通して本来の宛先に再配送するところでエラーが発生し、メールループのような現象が起こってしまいます。原因を調べているところですので、解決したら連載の続きとして掲載予定です。

未分類

VPSサーバーでサイト構築 — その11

11.SMTP AUTH の実装

CentOS 5 には saslauthd がインストールされていたことは前述しました。まずはsaslauthd がサポートしている認証形式を確認しておきます。

>saslauthd -v
saslauthd 2.1.22
authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap

ldap がリストにあるので問題ありません。OSのパッケージによっては ldap が別モジュールになっている場合がありますが、CentOS の場合は基本パーケージに ldap サポートが含まれています。

次に設定ファイルを修正していきます。まずはメールサーバーの認証に sasl を使用するように設定します。

/usr/lib/sasl2/smtpd.conf ファイル

pwcheck_method: saslauthd
mech_list: plain login

ここではログインメカニズムを plain に設定しておきます。次に saslauthd の設定ファイルである saslauthd ファイルを編集します。

/etc/sysconfig/saslauthd ファイル

#変更箇所
MECH=ldap
#追加箇所(起動オプション)
FLAGS=”-O /etc/saslauthd.conf -c”

認証方法を LDAP にするとともに ldap 接続情報の記述ファイルとなる saslauthd.conf ファイルのパスをオプションで渡すように設定します。

/etc 配下に上で指定したファイル saslauthd.conf を作成します。

/etc/saslauthd.conf ファイル

ldap_servers: ldap://localhost:389/
ldap_auth_method: bind
ldap_bind_dn: cn=mtaAdmin,ou=Service,dc=hogehoge,dc=com
ldap_bind_pw: パスワード
ldap_search_base: ou=mailsys,dc=hogehoge,dc=com

ここに記述する接続情報はサーバーパス、認証メソッド、検索ベースが基本で、ここでは bind メソッドを使用するのでバインドユーザーのdnとパスワードも記述しています。
サービスを起動して登録済みテスト用ユーザーで接続のテストをしてみます。

>service saslauthd start
>testsaslauthd -u test -p パスワード
0: OK “Success.”

上のようになれば接続成功です。
次に postfix の設定ファイルに SMTP AUTH を使用するよう設定を追記していきます。加えていくつかのセキュリティー設定も追記しておきます。

“VPSサーバーでサイト構築 — その11” の続きを読む

未分類

VPSサーバーでサイト構築 — その10

10.dovecotの設定

BlueOnyxでメールサービスを不使用にするとSMTP ポート(TCP25番)が使えなくなることを前回書きましたが、ここで悩んだ原因のもう一つが pop3 ポートは使えるということでした。実際のセットアップでは postfix と dovecot の設定ファイルを一気に作ってSMTP AUTH の実装までを行ったあと同時にテストしていたため、受信は問題なくできることからハマってしまいました。

メール送信をしてもメールを含む複数のログ(auth や ldap などを採取するようにしてみた)に何の痕跡も残らないことから、iptablesなどセキュリティー関係の設定も見直してみたのですが、どこにも25番ポートを閉じている様子はありませんでした。
(ちなみに、CentOS ではデフォルトで selinux がオンの状態になっていますが、セットアップの段階では余計な作業の発生を避けるためサービスを停止しています)
このことから、25番ポートが閉じている原因は BlueOnyx だろうと推測したわけです。というか、BlueOnyx の入っていないまっさらの状態でのセットアップはすでに何回も経験していますので、これ以外にはちょっと考えにくいということなのですが、目的がサイト構築であり BlueOnyx の仕組みを知ることではないので敢えてその原因を深く追求することはやめておきます。

本題の dovecot の設定です。
まずは設定ファイルの変更、加筆をします。
“VPSサーバーでサイト構築 — その10” の続きを読む

未分類

Windows7でデフォルトゲートウェイが消える?


私の仕事場ではWindows7が2台、XPが2台、かなり古い2000が2台とMacのG4デスクトップ、SnowLeopardの入ったMacBookなどが混在しています。現在のメインマシンはWindows7のデスクトップとMacBookで、画像やビデオの編集、サイトのプログラミングやFlashなどはMacBook、それ以外の作業はWinで行うことがほとんどです。

Windows7のデスクトップはHDD容量が最も大きいため、ファイルストレージとしても使用しているわけですが、Macからの初期接続ではIPアドレスを指定してやる必要があるため、固定IPをふっています。またメディアサーバーとしてXBoxからも接続するので、固定IPのほうが都合がいいわけです。

先週メインのWinマシンの調子がおかしくなったため、オンラインバックアップイメージからレストアをしたのですが、その直後から勝手にDHCPに変更されてしまいました。再度固定IPに変更したのですが、再起動するたびにデフォルトゲートウェイが消えてしまい、インターネット接続ができなくなりました。再起動の度にいちいちネットワーク設定を開かなければならないというのは不便なのでこの現象について調べてみました。

どうやら複数のサービスに起因するバグのようで、初期に固定IPアドレスを設定した後、DHCPに変更し、再度固定IPに変更するとこの現象が発生するようです。ネットワークのプロパティで設定した内容はレジストリに保存されるのですが、この時実際のデータの前に改行が入ってしまうようです。
レジストリの場所は、

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Intaerfaces

の中の DefaultGateway と DefaultGatewatMetric の二つの項目で、この改行をレジストリエディタで削除してやると次回からは消えなくなります。

このバグはVistaの頃から直っていない問題のようですが、まあ、MSさんの場合直す気もないのかと推測しています。実際世の主流はDHCPですし、OSが混在するような環境で双方でデータ交換するようなことがなければDHCPで何の問題もないわけですが、私に似た環境でVista、Win7をお使いの方はご注意ください。

この記事を書いたのが2010年の7月27日でしたが、その後毎月1000件を越えるアクセスがこの記事にきています。それだけ同じトラブルに見舞われた方が多いと言うことですね。
かなり原因が解りにくいトラブルなのでOSの再インストールをした人とかもいらっしゃるのではと思います。Win7ではSP1も含めて今年に入ってからだけでも約30個の更新がリリースされていますが、未だにこの記事へのアクセアスが減っていないところをみると予想通りバグフィックスはされていないのでしょうか。
このあたりの情報お持ちの方がいらっしゃればコメントなどいただけると有り難いです。

未分類

VPSサーバーでサイト構築 — その9

VPSサーバーでサイト構築 — その9

9.postfixの設定 その2

ここまでの設定が終了したら postfix を起動するわけですが、設定ファイルに間違いがないか一応確認しておきます。(大抵は単純なタイプミスが多いですが)

>service postfix check

問題がなければ [OK] 表示されます。何らかのエラーが出力される場合はエラー内容に従って設定内容を見直してみてください。

テスト用のアカウントをLDAPデータベースに作成します。
と、ここでひとつ。 phpldapadmin には多数のテンプレートが用意されていますが、これが結構目障りになります。不要なテンプレートは別のディレクトリに移動させておくといいでしょう。
次の画面は初期レコードとして登録したメールアカウント格納用の ou を開いた画面です。

“VPSサーバーでサイト構築 — その9” の続きを読む

未分類

VPSサーバーでサイト構築 — その8

8.postfixの設定  その1

いよいよメールサーバーの設定に入っていきます。今回はLDAPを使用するということで、いくつかのLDAP用設定ファイルを用意しなければなりません。
postfix設定ファイルの置き場所は /etc/postfix/ ですのでこの中に設定ファイルを作っていきます。

まずはpostfixの設定ファイルである main.cf ファイルにいくつかの変更を加えておきます。

/etc/postfix/main.cfファイル修正内容

# INTERNET HOST AND DOMAIN NAMES
myhostname = mail.hogehoge.com  ←postfixを稼働するホスト名
mydomain = hogehoge.com  ←メールサーバーのヴァーチャルではない実際のドメイン

# RECEIVING MAI
mydestination = $myhostname, localhost, localhost.localdomain
↑受信可能とする宛先メールサーバー

# TRUST AND RELAY CONTROL
mynetworks = xxx.xxx.xxx.xxx/32
relay_domains = $mydestination
↑リレーを許可するドメイン(ローカル配送用)と物理ネットワーク

# ADDRESS REDIRECTION (VIRTUAL DOMAIN)
virtual_mailbox_domains = hogehoge.com
↑バーチャルで取り扱うドメイン。複数設定する場合はカンマ区切りで記述する。
virtual_mailbox_base = /home/virtualMail
↑メールを保存するディレクトリベースでここで設定したディレクトリ配下に配信される。
virtual_mailbox_maps = ldap:/etc/postfix/ldap-account.cf
↑配信マッピングに関する設定ファイルの指定
virtual_minimum_uid = 89
↑ここでは postfix の uid を設定しておく。指定しないと一般ユーザーとして500以上が使われる。
virtual_uid_maps = static:89
virtual_gid_maps = static:89
↑ヴァーチャルユーザーを個別で扱わず postfix のみに限定して処理するようにする。
virtual_alias_maps = ldap:/etc/postfix/forward.cf
ldap:/etc/postfix/virtual-alias.cf
↑エリアスの設定ファイル指定。フォワード転送設定ファイルとエリアス設定ファイルを指定しています。

# DELIVERY TO MAILBOX
home_mailbox = Maildir/
↑Maildir形式で扱うことの指定

後ほど Smtp-Auth やセキュリティー関係の設定を追記していくので、ここでは基本的な設定だけを修正、加筆しておきます。

次に上の設定ファイルに合うよう設定ファイルの作成、ディレクトリの作成などを行っていきます。まず基本となるメールボックスのディレクトリを作成し所有者を postfix に変更しておきます。

>mkdir /home/virtualMail
>chown postfix.postfix /home/virtualMail “VPSサーバーでサイト構築 — その8” の続きを読む

未分類

VPSサーバーでサイト構築 — その7

7.phpLdapAdminの実装

CentOS5にはphpLdapAdminのパッケージは用意されていないことは前述しました。まずは最新版のLinux用をここから入手します。
これをFTPでアップロードするわけですが、BlueOnyxのサイト管理でヴァーチャルサイトの管理ユーザーを作り、パス指定なしでFTP接続すると自動的にウェブのドキュメントルートである /home/sites/ドメイン/web ディレクトリに入ります。この辺がややこしいところで、SSHでターミナル接続をした場合にはヴァーチャルサイト・ディレクトリの users 配下のホームディレクトリに入りますが、FTPだと変わってしまいます。
実のところ、私の場合FTPは普段使用しておらず、WinSCP もしくは FileZila というSFTPが使用できるソフトでSFTP接続しているので気がつきませんでした。SFTPで接続するとターミナルと同様の動作になるからです。これに気がついたのがDreamWeaverでサイト設定をしているときでした。DreamWeaverの内蔵FTPでパス指定接続しようとするとエラーになってしまうのです。
試しに FileZilaでパス指定なしのFTP接続をしてみたら web ディレクトリだったのです。この辺は注意が必要ですね。

さて、ファイルをアップロードしたら展開するわけですが、このままウェブ公開ディレクトリ配下に置くのは危険です。別の任意の場所に展開しましょう。私の場合は /usr/local 配下に展開しました。シェルでログインしてrootになりアップロードしたディレクトリに移動して展開します。

>tar zxvf ./phpldapadmin-1.2.0.5.tgz -C /usr/local/

展開が終わったら元の圧縮ファイルはどこかにバックアップしておきましょう。
展開したディレクトリに移動し、ディレクトリ名を変更しておきます。

>cd /usr/local
>mv phpldapadmin-1.2.0.5 phpldapadmin

次に設定ファイルを作成しておきます。といっても特別な設定は必要ありません。

>cd phpldapadmin/config
>ls
config.php.example

設定ファイルの置き場所に入ると config.php.example というファイルがあります。このファイルを config.php と改名してコピーすれば終わりです。

>cp config.php.example config.php

次に phpldapadmin を展開した場所をウェブから見えるように設定してやる必要があります。

“VPSサーバーでサイト構築 — その7” の続きを読む

未分類

VPSサーバーでサイト構築 — その6

6.LDAPサーバーの構築 データ編

LDAPデータベースの管理にphpLdapAdminを使用することは前述していますが、まだデータベースには何も無い状態ですので使用することはできません。まずは基本となる root dn とドメイン情報を除く管理情報を登録することにします。

テキストエディタでLDIFファイルを作成して基本情報をコマンドで流し込むわけですが、この行程では過去に苦い思いをしています。各種文字コードに対応した汎用エディタで作成したファイルをサーバーのデフォルト文字コードであるUTF-8で保存してアップロードし、流し込もうとしたらエラーで流し込めなかったのです。セットアップ時にLDAPサーバーのログを取るようにしたのもこのことがあったからなのです。半日近い時間をかけて自己解決したのですが、原因は文字コードがUTF-8 BOM付になっていたためでした。
使用していたエディタの設定にはUTF-8しか表示されなかったためまったくの意識外でした。アップロードしたファイルを vi で開いても自動判別のため解りません。使用するエディタは必ず UTF-8N に対応したものを使用してください。もしくは直接 vi で記述するようにしたほうが良いでしょう。

さて、初期化用の LDIFファイルの内容は以下のようなものです。 “VPSサーバーでサイト構築 — その6” の続きを読む

未分類

iPadの商業利用

iPad発売前の3月頃からiPadを商業施設や仕事で使いたいという問い合わせがあり、7月1日現在で7件ほどの相談が寄せられています。

主な用途としては
・ショールームまたは店頭への設置(商品のプロモーション及び説明などの販促用)
・セミナー施設での利用(セミナー端末として資料閲覧やプレゼンテーションの同期再生)
が圧倒的に多く、皆さんiPadという新しいツールにかなりの興味を示しておられます。

従来、タッチパネル付PCを使用していろいろなキオスク端末を開発していましたが、
・設置スペースの関係で台数が制限される。
・端末台数に対して初期費用がかなり大きくなってしまう。
・定期的なメンテナンスが必要なため、ランニングコストもそこそこかかる。
・1日中起動している状態のためPCの耐用年数から最長でも5年程度しかもたない。
などが必ずと言っていいほど問題になっていました。
iPadはこの問題を根本から解決してくれる端末として私たちも注目しています。

iPadはウェブのWi-Fi端末として使用できますので、コンテンツをサーバーに置くことで情報のリアルタイム更新やインターネットとの連携などが可能ですので、従来のキオスク型端末に比べてはるかに多くの情報を提供することが可能です。
しかし、商業利用となると提供目的以外に使用されては困りますので、いろいろな制限(ホームボタンを押せないようにするなど)も必要です。コンテンツもタッチパネルにあった内容にしなければなりません。サーバー側からのプッシュ配信に対応したアプリケーションで端末側の更新処理をなくすなども必要不可欠な機能となります。

現在お話をいただいている案件それぞれに開発をすると、時間的にも費用的にもお客様への負担が大きくなることから、考え得る要望にすべて対応できるようなシステムが開発できないかと考えました。

具体的にはiPad、iPhone(iPod Touch含む)専用のCMS(コンテンツ・マネジメント・システム)をサーバーパッケージソフトとして開発することにいたしました。いつもお世話になっている株式会社クイーリー様と共同で、この、サーバーソフトと専用iPad用アプリケーションとの組み合わせをパッケージ化して今夏リリースする予定でいます。
現在、基本設計がほぼ終わり具体的な動作仕様の策定と詳細設計に入っています。

興味を持たれた方は問い合わせフォームよりお問い合わせください。