Ethernetコントローラがイケてない?OpenSwan→LibreSwanへ移行OpenSwanをアンインストールLibreSwanをインストールAndroid7用に設定を変更するサービス再起動AndroidとVPN接続をしたい!時々あるじゃーないですか。あ、なんかサーバの調子が変!ログインして状況確認したい~!!(無いって?)そんな時に、普段持っているスマフォで様子を観察できたら、あら、これは便利!なんてことを考えてました。それを実現するのが、AndroidでVPN接続!リモート端末からのサーバへのコンソールログイン&メンテナンス動画/音楽/写真をケータイにダウンロードすることなく閲覧を果たしたいと思い、まずはOpenVPNを試してみました。Android4.0(ICS)だと、OpenVPNが動くというので、やってみたのですが、なぜかSIGUSR1が発行されてうまく動いてくれないとです。いうことで、他の方法でやってみることとしました。IPsec/L2TPトンネルPPTPトンネルただし、PPTPは、この間MS-CHAPv2がクラックされて危険だ、と言うことSPモードはPPTP接続に対応していないということだったので、IPsec/L2TPトンネルにチャレンジしてみることとしました。ちなみにググってみると、設定の仕方は諸説ありますが...manファイル調べながらやってみて、以下としました。HeartBeatを使用してフローティングIPアドレスを使用してる人にはお役立ちだと思います。以下のようなネットワークでAndroidスマフォと内部LANに立てたIPsec/L2TPサーバとVPN確立を目指します。設定OpenSwan/xl2tpdのインストールOpenSwanはIPsecを提供するツール、xl2tpdはL2TPトンネリングを提供するツールです。Android4.0(ICS)は、OS標準のIPsec-toolにバグがあり、そのままでは繋がってくれないとのこと。Portageのパッケージ管理内でなんとか事を済ませたい。このためにかなりイリーガルなやり方をしています。Gentooな方の参考になれば...まず、OpenSwan2.6.38をAndroid4.0(ICS)で動作できるようにするために、Android4.0(ICS)のバグ回避用パッチをダウンロードしてきます。これをPortageパッケージツリーのOpenSwanの下に置いておきます。Portageのパスがデフォルトの/usr/portageだとしますね。/usr/portage/net-misc/openswan/filesで、emergeでBuild時にパッチを当ててくれるようにebuildファイルを編集する。openswan打つとファイルのDigestサイズが合わないとケチつけられます。digestさらに、コンパイルオプションの追加が必要。”-DSUPPORT_BROKEN_ANDROID_ICS”を追加してあげてください。今回は、PreSharedKeyという、事前共有鍵方式を使います。鍵交換方式のほうがセキュリティは高いのかもしれんが...まぁ、そこまで知識がないので、まずはこれで。PreSharedKeyを作ります。"事前共有鍵"”事前共有鍵”にはIPsecをつなぐ場合のパスフレーズを書いておきます。続いて設定ファイルの編集。/etc/ipsec.conf/etc/ipsec.d/examplesにあるl2tp-psk.confを参考に作ってます。rightprotoport=17/%anyxl2tpdの設定/etc/xl2tpd/xl2tpd.confをいじります。/etc/ppp/xl2tpd-optionsL2TPのchapで認証します。fileのユーザ/パスワードで接続いたします。HeartBeatを使ってる時のポイントはlisten-addrを指定することですね。HeartBeatで2重化運用している場合、固定のIPアドレスと、HeartBeatで切替時に付与されるフローティングIPアドレスがあります。切り替えても運用に支障がないように、フローティングIPアドレス側をIPsecサーバのアドレスとして運用したいですよね。それを固定するのがlisten-addrです。これが無いと、IFの1番目に振ってあるアドレス(固定IPアドレス)が使用されちゃいます。*ユーザ名、パスワードは自分で任意に決めてやって。serverの欄は、xl2tpd.confで設定したnameと合わせます。pppdの設定xl2tpdから起動されるpppデーモンの設定です。xl2tpd.confのpppoptfileに指定したファイルを編集します。DNSサーバのIPアドレスさて...サーバの設定は終了セキュリティの設定L2TPには、IPsec経由でしか接続させないように以下のIPフィルタを設定。icmp-port-unreachableさらに、外部からのIPパケット受信にフィルタをかけてる方は、外部からのIPsecのネゴシエーションを受け付けるように、以下のIPフィルタも追加。ACCEPTIKE鍵交換プロトコルと、IPsecのESP*1を受信するためのポートをオープンします。500をサーバにNAT変換するアドレス変換テーブルを設定します。PSKサーバアドレスIPsec/L2TPサーバのIPアドレス若しくはホスト名IPsec事前共有鍵/etc/ipsec.secretsに設定した事前共有鍵んで、保存。接続するときはユーザー名/etc/ppp/chap-secretsに設定したユーザ名パスワード/etc/ppp/chap-secretsに設定したパスワードで接続をタップ。トラブルシューティングさて...つながりましたか??つながらない場合は...Syslogを見てどんなエラーメッセージが出てるか調べましょう...私がぶつかったのは以下。notAndroid4.0(ICS)のバグです。one.IPsec⇔L2TP間でパケットがやり取りされていません。=”が一致してないとつながりませんでした。Keyboardで、3G→サーバログインできました。AndroidからWindowsマシンにリモートデスクトップおじさんは用途がないのでやってません。LAN内にWindowsを立ててる人は、便利かもね。リモートデスクトップアプリもあるようなので試してみて~DLNAアプリで、動画/音楽/写真をストリーミングSkiftaは、ダメでした。UPnPパケットを通過させてくれないみたい。PlugPlayerは、一度通信できたDLNAサーバを記憶してくれるので、VPNからもうまく閲覧できました。Windows共有ディスクの参照ESファイルエクスプローラ使用したら意外に簡単にできました。実はDLNAよりも、音楽/写真/動画の共有はこっちのほうが楽かしら...??その他アイディア募集中。AR8161NICドライバがイケてない模様で、2013/2/20付の最新ドライバだとIPsecの接続に以下のようなメッセージ出して失敗します。Adapterをインスコすることで解決してしまいました。内蔵EtherはOFFで。なんか負けた気分だけど...安定動作が信条のサーバでは致し方なしですかね。OpenSwan→LibreSwanへ移行OpenSwanは、メンテナンスから外れ、フォークしたLibreSwanに引き継がれました。このため、新たに移行を致します。VPNが接続できませんでしたので、そちらも合わせて。utils続いて、LibreSwanをインストールします。libreswanおしまいです。設定などはそのまま使用できます。Android7用に設定を変更するAndroidで要求してくる暗号化アルゴリズムを指定する必要があるとのことで、ipsec.confを以下の部分を修正及び追加いたします。ゆえに我あり携帯用QRコード。