時々あるじゃーないですか。あ、なんかサーバの調子が変!ログインして状況確認したい~!!(無いって?)そんな時に、普段持っているスマフォで様子を観察できたら、あら、これは便利!なんてことを考えてました。果たしたいと思い、まずはOpenVPNを試してみました。Android4.0(ICS)だと、OpenVPNが動くというので、やってみたのですが、なぜかSIGUSR1が発行されてうまく動いてくれないとです。いうことで、他の方法でやってみることとしました。IPsec/L2TPトンネルにチャレンジしてみることとしました。ちなみにググってみると、設定の仕方は諸説ありますが...manファイル調べながらやってみて、以下としました。HeartBeatを使用してフローティングIPアドレスを使用してる人にはお役立ちだと思います。以下のようなネットワークでAndroidスマフォと内部LANに立てたIPsec/L2TPサーバとVPN確立を目指します。OpenSwanはIPsecを提供するツール、xl2tpdはL2TPトンネリングを提供するツールです。Android4.0(ICS)は、OS標準のIPsec-toolにバグがあり、そのままでは繋がってくれないとのこと。Portageのパッケージ管理内でなんとか事を済ませたい。このためにかなりイリーガルなやり方をしています。OpenSwan2.6.38をAndroid4.0(ICS)で動作できるようにするために、[[Android4.0(ICS)のバグ回避用パッチ>http://code.google.com/p/android/issues/attachmentText?id=23124&aid=231240180000&name=openswan-android-ics-natoa.patch]]をダウンロードしてきます。これをPortageパッケージツリーのOpenSwanの下に置いておきます。Portageのパスがデフォルトの/usr/portageだとしますね。emergeでBuild時にパッチを当ててくれるようにebuildファイルを編集する。openswan打つとファイルのDigestサイズが合わないとケチつけられます。コンパイルオプションの追加が必要。”-DSUPPORT_BROKEN_ANDROID_ICS”を追加してあげてください。今回は、PreSharedKeyという、事前共有鍵方式を使います。鍵交換方式のほうがセキュリティは高いのかもしれんが...まぁ、そこまで知識がないので、まずはこれで。PreSharedKeyを作ります。”事前共有鍵”にはIPsecをつなぐ場合のパスフレーズを書いておきます。続いて設定ファイルの編集。/etc/ipsec.d/examplesにあるl2tp-psk.confを参考に作ってます。/etc/xl2tpd/xl2tpd.confをいじります。L2TPのchapで認証します。fileのユーザ/パスワードで接続いたします。HeartBeatを使ってる時のポイントはlisten-addrを指定することですね。HeartBeatで2重化運用している場合、固定のIPアドレスと、HeartBeatで切替時に付与されるフローティングIPアドレスがあります。切り替えても運用に支障がないように、フローティングIPアドレス側をIPsecサーバのアドレスとして運用したいですよね。それを固定するのがlisten-addrです。これが無いと、IFの1番目に振ってあるアドレス(固定IPアドレス)が使用されちゃいます。ユーザ名、パスワードは自分で任意に決めてやって。serverの欄は、xl2tpd.confで設定したnameと合わせます。xl2tpdから起動されるpppデーモンの設定です。xl2tpd.confのpppoptfileに指定したファイルを編集します。L2TPには、IPsec経由でしか接続させないように以下のIPフィルタを設定。外部からのIPパケット受信にフィルタをかけてる方は、外部からのIPsecのネゴシエーションを受け付けるように、以下のIPフィルタも追加。Payload))を受信するためのポートをオープンします。500をサーバにNAT変換するアドレス変換テーブルを設定します。