2009/09/19(土)OpenPNE(Amazon API)

放置してたので1ヶ月ぐらい前の話です。


ある所でOpenPNEを使ってSNSを運用しているのですが、amazonのレビューが使えないとのこと。運用モードになると基本放置なので、まったく忘れていたのですが、そういえばこんなのを読んだ気が、、、しかもずんぶん以前に、、、

ということで、なんとかすることになりました。もっとも本家OpenPNEはかなり前にamazon対応バージョンが上がっていたので、こちらもバージョンを上げて解決、、、のはずがうまくいきません。おそらくフィルタリングが原因と予想しつつも一応確認してみることにします。方法は外部にproxyを立てて、OpenPNEのアクセスをproxy経由に、、、


sshでトンネルを張って、接続先(nblog.jp)でproxyを立てます。チェックするだけの簡易的なものでいいのでstoneを利用することにします。
ssh -p80 username@nblog.jp -L 8080:localhost:8080
で、トンネルを張って(例によって80を通す)、接続したnblog.jpでstoneを実行。
stone proxy 8080
stoneがないよ、とエラー。apt-getで入れようとするも、Ubuntu9.04だとないらしいので、自分でコンパイルしてインストールすることに。で、コンパイルするとエラーが。。。なんかハマりの予感がしてきましたが、検索して解決法発見で乗りきりました。
Proxyを越えて。
http://blog.yakumo.la/?p=347
OpenPNEはproxyを使ってアクセスできるので、localhostの8080をproxy指定してレビュー機能が使用できるか確認すると、何の問題もなく使うことができました。stoneが流すHTTPリクエストを見ているとどうやら、http://ecs.amazonaws.jp/onca/xml が引っかかってる様子。

というわけで上記のアドレスをフィルタリングから解除するようにしたらproxyを使わなくてもレビュー機能が使えるようになりました。

2009/09/02(水)SSHの自動再接続

SSHの自動再接続のメモ


かなり用途限定なので、個人的メモとして。一応前提条件があって以下の通り。
  1. LAN内にサーバーが置いてあって、外部に公開しない。
  2. でもたまに外からメンテナンスしたい。
  3. サーバーといっても常時起動されているわけではなく、アドレスもDHCPで取得。
  4. USB-HDDだったりするので、物理的にあちこち移動して起動される。
こんなサーバーなので、サーバー自身でLANの外側へSSHコネクションを張ってもらい、それをたどって外側からLAN内のサーバーにアクセスするようにする。当然外側にはSSHを受けるマシンが必要となる。



自動再接続と言ってるが、これを自動接続と再接続で分けて考える。

まずは自動接続の部分。
接続時にパスワードを要求されるといろいろ面倒なので、最初はその辺りの設定から。
参考
sshでパスワードなしにログインするには
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/447nonpassh.html
この辺を参考に、よく設定し忘れるのはchmodなので注意。googleでssh パスワードなしとかで検索するとこれでもか、ってぐらい出てくるので適当にいくつか見ておけば問題ないと思う。


次に、起動時のsshの実行だが、これは起動時に実行すればいいので、/etc/rc.localに書く。今回のサーバーはUbuntuデスクトップなので、システム>設定>セッション、に記載。
参考
システム起動時に SSH トンネルを掘らせる
http://d.hatena.ne.jp/kamicup/20090619/1245405583
fとNオプションは使ったことなかったのでmanを見ると、backgroundで実行するのと、コマンドを実行させないようにするためのものらしい。ちなみにpでポートを80に指定しているのは、LAN内から外部に出るとき22が宛先だと出れない設定にしてあるから、という個人的事情な追加設定。これでnblog.jpマシンからlocalhostの10022にsshでアクセスするとLAN内のサーバーに接続される。
/usr/bin/ssh -f -N -p80 username@nblog.jp -R 10022:localhost:22


次に再接続の部分。
同じようなことを考える人はいるもので、いろいろスクリプトを書いてる人がいて苦労しそうかなと思いきや、今はautosshというコマンドで一発解決。使い方は単純でsshを単にautosshに置き換えるだけ。というわけで以下のコマンドを起動時に実行するように設定。
/usr/bin/autossh -f -N -p80 username@nblog.jp -R 10022:localhost:22

これで、LAN内のサーバーを起動すると、起動時に外側にSSHコネクションを張るようになり、また回線が切断されても復帰時に再接続してくれる、とても便利。