IX2015を通してiPhoneでVPNを張る

IX2015を通して、自宅LAN内のPPTPサーバーと、3G回線上のiPhoneとでVPNを張りました。その際、ハマってえらく苦労したので、メモ書きを残しておきます。


1.PPTPサーバーの用意
WindowsでもLinuxでもいいので、PPTPサーバーを用意します。
Linux(CentOS)での環境構築は、ここを参考にさせてもらいました。

CentOS 5.3 で PPTP-VPN サーバーを構築してみる


2.IX2015にポートフォワードを設定
PPPoEを設定しているインターフェースに、NAPTでポート番号1723とGREプロトコルにポートフォワードを設定します。例としてPPTサーバーのIPアドレスを192.168.5.30とすると、インターフェースの設定は以下のようになります。

interface FastEthernet0/1.1
encapsulation pppoe
auto-connect
ppp binding sonet
ip address ipcp
ip napt enable
ip napt static 192.168.5.30 47
ip napt static 192.168.5.30 tcp 1723
no shutdown

3.iPhoneVPNを設定
iPhoneVPNを設定します。僕はここを参考にさせてもらいました。

iPhone 3G回線と自鯖をVPN接続

注意点ですが、ここで「RSA SecurID」をオンにして設定を保存するとアウトですルーター側がRSA SecurIDに対応していなければ接続に失敗するようになるのは当然ですが、「RSA SecurID」をオフに戻して設定を保存しても適用されず、内部的にはオンになったままになるようです。

ここでハマりました。パケットキャプチャを設定してGREパケットのやりとりを観察したところ、設定を元に戻しても、iPhoneが無茶な開始要求をPPTPサーバーに送って、PPTPサーバーに蹴られるようです。改めてiPhone側で新しい接続設定を作ったら、あっさり繋がりました。僕の環境では、必ず再現します(iOSのバージョンは4.2.1)。




追記:12/03/19
注意点:
GREプロトコルVPNサーバーにポートフォワードしてしまうと、このVPNサーバーしか、他所のVPNサーバーへの接続ができなくなってしまうようです。上記の例だと、たとえば192.168.5.X系のマシンが192.168.12.XのVPNサーバーに接続したいといった場合、192.168.5.30のマシンしかVPN接続に成功しません。

HDD Regenerator 2011でHDD修復

自宅サーバーのML115でなんか異音がするうえ、/var/log/messagesを見ると

smartd[2704]: Device: /dev/sda, 283 Offline uncorrectable sectors 

といういやなログが大量に出てました。
急いでHDD買ってきて交換してみたら、異音の発生源はHDDファンでした。
ズコー。


じゃぁHDDまだ使えるかなってことでHDD Tuneで不良セクタをチェックしてみたら、下図のようなことに。

ちょっと破損箇所が多すぎるので、HDD Regenerator 2011を購入することにしました。



USDで$59.95、日本円で5131円ということで、どっちで支払うか迷いましたが、
結局USDで購入しました。
JCBのカードでUSDを決済すれば、UFJ 銀行(東京)の TTS 始値の仲値 + 1 円
が支払い金額となるはずなので、(決済日のTTS始値を82円と想定 + 1円) x 59.95 = 4975円
程度で買えるはず、と。決済日までにさらに円高が進めばもうちょっと安くなりますが、
これ以上の円高は正直勘弁してほしいです…。


購入して入手したレジストリキーをセットし、USBメモリにブートイメージを書き込み、
修復作業を行ったところ、1.5TBのHDDで13時間程度で作業が完了。
計2249セクターが異常となっており、全部修復できた様子です。


本当に全部修復できたのか、と疑問に思ったので、もう一度HDD Tuneをかけてみました。
結果、まだちょっと破損箇所が残ってました。


どうせなら全部修復したい、ということで修復作業を再実行。
HDD Regenerator 2011はWindows7からでも実行できたので、こっちから実行してます。

まぁ仮に全部直せても、再利用し始めたらまたぽこぽこセクタエラー出るんだろうなぁ…。

<追記>
2回目のスキャンでは、エラーは1つも検知されませんでした。
また、クレジットカードの明細をみたら、支払い金額は4,948円になってました。

Pixiview 1.42リリース

Pixiviewの1.42をリリースしました。
Pixiview

バグフィックスと、過去のランキングも閲覧できるようにしてみました。

「何日前」というスライダーで1以上を設定すると、現在からの日数分もどった過去のランキングが閲覧できます。たとえば10/20から724日前もどると、2008/10/26のランキングを表示します。

ただ現在のバージョンでは、以下のバグがあることがわかっています。

  • 古いランキングだと、1位、2位、4位のように、ランキングが歯抜けになっている場合があるが、歯抜けの数が多いと、2ページ目以降の読み込みに失敗する
  • 1000日前までしか選択できず、デイリーランキングの最も古い日(2007/9/13)近辺を閲覧できない

これらは次のバージョンで修正します。

iPhoneSimulatorExchangeでインストーラ配布

kusaret2009-10-07

MOONGIFTさんのところで紹介されていたiPhoneSimulatorExchangeを使って、審査中アプリのインストーラを作成し、配布してみました。

配布先:http://sites.google.com/site/hrfnsn/app01
(接続先で認証方法に変更があったようで、ログインができなくなってしまったので削除しました。)

ビルドを実行すると、デスクトップに「Install <プロジェクト名>」というインストーラが作成されます。これを実行すると、iPhoneシミュレータが起動し、アプリがインストールされます。

至極簡潔な動作ですが、ウィンドウ左下の「Exclude user data」というオプションには注意したほうがよいです。デフォルトではチェックがついていますが、このままだと、NSUserDefaultsに保存した値もインストーラに含まれてしまいます。IDやパスワードを記録したままだとよろしくないです。かといってチェックをはずすと、僕の場合はフォントがおかしくなってしまいました。

クリーンインストールした状態でiPhoneSimulatorExchangeを起動し、インストーラを作成するのがよいかと思います。

wxRuby1.99をOpenSuse11.1で使う

以前にOpenSuse11.0でwxRubyをrakeしたときは、ユニコード関連のエラーで先に進めなくなり結局諦めてしまったのですが、OpenSuse11.1をインストールして試してみたところ、割とあっさり動きました。(やっぱりgem install wxrubyでは動いてくれませんでしたが。)

以下、そのときの作業メモです。

まずはgcc-c++やmake, MesaGLw-develなどコンパイラや、OpenGLのヘッダをインストールしまた。

swigについては、swig1.3.5をダウンロードして、インストールしました。
OpenSuse11.1ではswig1.3.6がパッケージされていて、「これ新しすぎ」とrakeで怒られます。

MediaCtrlは結局のところビルドできなかったので、rake/rakeunixish.rbを編集し、ビルド対象からはずしました。やり方は、

$wx_libs = wx_config("--libs std,stc,gl,media")

のmediaを削除することと、

if not $excluded_classes.include?('\MediaCtrl')

から続くブロックを削除することで行いました。

これでrakeが通り、インストール、動作させることができました。

wxRubyをFedora9で使う

前日Fedora10でのwxRubyセットアップについて書きましたが、今日はFedora9についてです。

Fedora10ではyumでwxWidget(wxGTK)をインストール後、wxRubyをビルドという流れでセットアップできましたが、Fedora9ではyumでwxGTKをセットアップすると、wxRubyがビルドできません。

しかたないので、公式からwxGTKのtar.gzをダウンロードして、ビルドしました。
その際、configureでは

./configure --enable-unicode

のように、ユニコードオプションを有効にしておく必要がありました。
make installが完了したら、wxrubyのtar.gzを展開して、rake。

その際、MediaCtrlのコンパイルが失敗してしまいました。
解説サイトをみるとgstreamer-plugins-baseをインストールすればよさげでしたが、develパッケージを入れても結局コンパイルに成功しませんでした。
仕方ないので、先の解説サイトを参考に、wxruby-1.9.9/rake/rakeunixish.rbを編集し、MediaCtrlをビルド対象からはずしました。

これでrakeが通るので、rake installでインストール。
/usr/local/libをライブラリのパスに追加して、サンプルが動きました。

ruby samples/minimal/minimal.rb

wxRubyをFedora10で使う

「初めてのRuby」でも紹介されてる、クロスプラットフォームGUIライブラリであるwxRubyですが、Fedora10での導入にハマったのでメモ残しときます。

Ubuntu8.10では

sudo apt-get install libwxgtk2.8-dev
gem install wxruby

の2コマンドでさっくりインストール、動作ができてしまうのですが、
Fedora10で同じように

yum install wxBase wxGTK wxGTK-devel wxGTK-gl
gem install wxruby

の2コマンドでインストールしてもさっくり動きません。

Wx WARNING:####

のような警告メッセージを吐いた後、セグメンテーションフォールト
で落ちてしまいます。

どうやらgemコマンドでインストールするバイナリがfedoraに合わない様子。
wxRubyのソースを公式からダウンロードして、rakeでコンパイルしたらちゃんと動きました。

Fedora9ではもっと面倒だったのですが、それはまた後日。