是非に及ばず

プログラミングに関する話題などを書いていきます(主にRailsやAndroidアプリ開発について)

お名前.comのVPSの設定メモ

スペックと月額費用のバランスが一番良いと思うVPSなので思い切って借りてみた。
初期設定(yumの入れ方とか)は、id:wadap:20091014を参考に。

スペック

CPU CPUx8。Quad-Core AMD Opteron(tm) Processor 2384、2700.111MHz
メモリ 1GB
HDD 50GB
スワップ なし

※/proc/cpuinfoの情報

sudoの警告を消す

visuoで設定を行えば、sudoできるようになるのだが、毎回"audit_log_user_command(): Connection refused"というメッセージが表示されてしまう。ググって調べてみたが、結論はrpmのsudoを消して、ソースをコンパイルして入れるという事になった。

# cp -p /etc/sudoers /etc/sudoers.org
# wget http://www.sudo.ws/sudo/dist/sudo-1.6.9p20.tar.gz
# tar xvzf sudo-1.6.9p20.tar.gz
# cd sudo-1.6.9p20
# ./configure
# make
# make install
# yum remove sudo
# cp -p /etc/sudoers.org /etc/sudoers

sysstatを入れる

sarコマンドが使いたいので、入れておく。

# yum install sysstat -y

使用可能なポートについて

今回のサーバはDBサーバ(PostgreSQL)として使うつもりで、外部のサーバから5432番で接続したかったのだが、お名前.comでは使用可能なポートが制限されているっぽい?
iptablesをオフにしても接続できないので、FAQを検索すると該当するものが見つかった。
http://www.onamae-server.com/support/faq/vps/common/common_28.php

使用可能なポートは以下の通り。DB以外にもsshのポートを22番以外に変更してお手軽にsshアタックを防ごうと思ったんだけど、これはあきらめるしかない。

HTTP 80
HTTPS 443
SMTP 25
POP3 110
IMAP 143
Submission 587
FTP(FTPS) 20/21
SSH 22
DNS 53
SMTPS 465
IMAPS 993
POP3S 995

外部サーバからのDB接続については、sshトンネルを使って接続する事ができたので、解決という事に。

  • クライアント側でトンネル接続。
$ ssh -L 5432:localhost:5432 foo@example.com
  • クライアントの別ターミナルでpsqllocalhost:5432へ接続
$ psql -U ユーザ -h localhost -p 5432 -d データベース名

このままでは、ログインしているターミナルを閉じると接続が切れてしまうので実用的ではない。
そこで、以下のようにする。

  • クライアントからお名前.comのVPSへ鍵認証でパスワードなしでログインできるようにする
  • クライアントからはバックグラウンドオプションをつけてトンネルする
$ ssh -f -N -L 5432:localhost:5432 foo@example.com
または
$ ssh -f -N -L 5432:examle.com:5432 foo@example.com

この方法で運用するなら、sshトンネル接続を常に維持する必要があるので、
トンネルの接続状態を監視ツールなどでモニタして、切断されたら自動で再接続する必要がある。