ラベル Android の投稿を表示しています。 すべての投稿を表示
ラベル Android の投稿を表示しています。 すべての投稿を表示

2013年8月6日火曜日

Android端末でOpenVPNを使ってみよう

何やらRTX810でVPNを張ってRDP経由でゲームするのが流行っているという噂を 某所で聞きました.しかし,RTX810は高くて買えないという方も多いので はないでしょうか. そこで,RTX810を買えない方でも気軽に試せるオープンソースのVPNソフト, OpenVPNを用いたVPN環境をWindowsとAndroid端末間で作る方法を紹介してみよ うと思います.

ここで例に上げる環境は,以下の通りになるよう構成します.

  • LAN: 10.39.39.0/24
  • VPN: 10.3.9.0/24
  • Windows: LAN - 10.39.39.31, VPN - 10.3.9.1
  • Android: LAN - 10.39.39.33, VPN - 自動割当

OpenVPNのインストール

サーバ(Windows)側

まずはOpenVPNサーバ環境をWindows側に準備します.公式ページでWindows用のイン ストーラが用意されているので,これをダウンロードしインストールしてくだ さい.
http://openvpn.net/index.php/open-source/downloads.html
インストール時に,「OpenVPN RSA Certificate Management Scripts」もイン ストールするようチェックするのを忘れないでください.

クライアント(Android)側

次に,クライアント環境をAndoroid側に準備します.OpenVPNはGoogle Playに て公式に配信されているため,これをインストールします.
https://play.google.com/store/apps/details?id=net.openvpn.openvpn&hl=ja
残念ながら,古いAndroidでは利用できないようです.(私は4.0以降の端末で動作確認しました)

OpenVPNでは,共通鍵暗号と公開鍵暗号の両方をサポートしていますが, Android版では公開鍵暗号のみをサポートしているため,こちらを利用します.

鍵生成の設定

OpenVPNの公開鍵生成の支援ツールは,C:\Program Files\OpenVPN\easy-rsa以 下にインストールされています.まずeasy-rsaディレクトリごとデスクトップ などにコピーし,メモ帳などでeasy-rsa\vars.bat.sampleの 以下の部分を環境に合わせて編集,vars.batとして保存します.

set KEY_COUNTRY="US"
set KEY_PROVINCE="CA"
set KEY_CITY="SanFrancisco"
set KEY_ORG="Fort-Funston"
set KEY_EMAIL="me@myhost.mydomain"
set KEY_OU="MyOrganizationalUnit"

今回の環境では,以下のように定義しなおしました.

set KEY_COUNTRY="JP"
set KEY_PROVINCE="Kanagawa"
set KEY_CITY="Kawasaki"
set KEY_ORG="Hachunet"
set KEY_EMAIL="phenomer@g.hachune.net"
set KEY_OU="Hachunet"

鍵生成

管理者権限でcmd.exeを開き実際に鍵生成スクリプトを実行します. build-*実行時にCommonNameとNameを問い合わせられた際には,それぞれの鍵 に適した名前を入力してください. また,buikd-key-serverとbuild-keyを実行する際に,以下のように問い合わ せがありますが,これは共にyとしてください.

  • Sign the certificate? [y/n]
  • 1 out of 1 certificate requests certified, commit? [y/n]
> cd \Program Files\OpenVPN\easy-rsa
> init-config
> vars
> mkdir keys
> clean-all
> build-ca
> build-key-server server
> build-key android
> build-dh

以上の作業で,それぞれの端末に必要な鍵ファイルの生成ができました. OpenVPNの実行に必要なファイルは以下の表のとおりです.

ファイル名必要とするホスト
ca.crtサーバ,クライアント
dh2048.pemサーバ
server.crtサーバ
server.keyサーバ
android.crtクライアント
android.keyクライアント

鍵生成まわりは,いろいろとハマりどころが多いように感じるので, 失敗した場合はドキュメント やエラーメッセージをよく読んでやり直してみてください.

サーバ(Windows)側の準備

メモ帳等を利用し,設定ファイルserver.ovpnを記述します. サーバ側の設定ファイルは,以下のようになります.

port  1194
proto udp
dev   tun
ca         ca.crt
cert       server.crt
key        server.key
dh         dh2048.pem

server   10.3.9.0 255.255.255.0
ifconfig 10.3.9.1 255.255.255.0

comp-lzo
keepalive 10 60
ping-timer-rem
persist-key
persist-tun
max-clients 5

この設定ファイルを保存したフォルダ内に,先ほど生成した鍵ファイルのうち サーバ側で必要なものをまとめて入れておいてください.

クライアント(Android端末)側の準備

Android用OpenVPNの設定は,以下のように記述します. 通常のOpenVPNの設定ファイルと異なる点として,次のようなタグを用い鍵ファイルの内容を全て 設定ファイル内に記述しなければならない点があります.

  • <ca> - ca.crt
  • <cert> - android.crt
  • <key> - android.key
client
dev tun
proto udp
remote 10.39.39.31 1194
persist-key
persist-tun
ns-cert-type server
comp-lzo

<ca>
-----BEGIN CERTIFICATE-----
MIIE6DCCA9CgAwIBAgIJAI7WSDBm6otGMA0GCSqGSIb3DQEBCwUAMIGoMQswCQYD
VQQGEwJKUDERMA8GA1UECBMIS2FuYWdhd2ExETAPBgNVBAcTCEthd2FzYWtpMREw
DwYDVQQKEwhIYWNodW5ldDERMA8GA1UECxMISGFjaHVuZXQxFDASBgNVBAMTC0hh
Y2h1bmV0IENBMRAwDgYDVQQpEwdFYXN5UlNBMSUwIwYJKoZIhvcNAQkBFhZwaGVu
b21lckBnLmhhY2h1bmUubmV0MB4XDTEzMDgwNjA3MjgyM1oXDTIzMDgwNDA3Mjgy
M1owgagxCzAJBgNVBAYTAkpQMREwDwYDVQQIEwhLYW5hZ2F3YTERMA8GA1UEBxMI
S2F3YXNha2kxETAPBgNVBAoTCEhhY2h1bmV0MREwDwYDVQQLEwhIYWNodW5ldDEU
MBIGA1UEAxMLSGFjaHVuZXQgQ0ExEDAOBgNVBCkTB0Vhc3lSU0ExJTAjBgkqhkiG
9w0BCQEWFnBoZW5vbWVyQGcuaGFjaHVuZS5uZXQwggEiMA0GCSqGSIb3DQEBAQUA
A4IBDwAwggEKAoIBAQChYUPyhc0vD1OVa3RU1wtbPUYDZXxQuMKTv9wiuIp60Eep
keR7CpolWNDxsksptUNAk0MIpc6t+SuBw80Kx6uLe4MeEulPsZ9ztG92OZ7k28cf
ufoOcxFSbnbJlwyhhHkjRMjxw/XL06gL1b/DakjfW/yW3LBXL4pn2ZFajGBapw48
2Z76mq/O21RiXMYy1LCRcYqhAGsC5TPHeXHRPecwPOFfO/YvnhKquuSxe06/hIvC
4ceJ9/jQ1tK8zFhA2TGgv2ae3VDdurinWiO0I9omzd7JYr/xq9XrGP2Zqujbp45H
KLzn8hCo83e/zj6zyzUOlwqYZu6FhtdV5XP2isVRAgMBAAGjggERMIIBDTAdBgNV
HQ4EFgQUdKavhZG6LzXHLOUrVP2M+bjSYh0wgd0GA1UdIwSB1TCB0oAUdKavhZG6
LzXHLOUrVP2M+bjSYh2hga6kgaswgagxCzAJBgNVBAYTAkpQMREwDwYDVQQIEwhL
YW5hZ2F3YTERMA8GA1UEBxMIS2F3YXNha2kxETAPBgNVBAoTCEhhY2h1bmV0MREw
DwYDVQQLEwhIYWNodW5ldDEUMBIGA1UEAxMLSGFjaHVuZXQgQ0ExEDAOBgNVBCkT
B0Vhc3lSU0ExJTAjBgkqhkiG9w0BCQEWFnBoZW5vbWVyQGcuaGFjaHVuZS5uZXSC
CQCO1kgwZuqLRjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQB1hZnf
UdGllXFPSKp80IT5B0uwV1TGy2ixw9WdVQGPnB/GMgxEHUaoc3ctdKjYcis7fxzf
aDMCgt8/GgxsG1zGwmSYDxpjK+0VOSi6uAb6hzWamPggSIV9Dz237mrPMV+eJMcC
NoTiX4oD07tMkvWMC2FAOTaY7ARBiXBnI4qUrPVT+HxL2AdihmOIn4BrCLfUg1RK
8ptsOP1qNP2WBjouh37wb+TlvfzTwFi2JcyQw8lpdL3qmLdkBtasYzo4IE9o+rDr
9C9tHyLRe/itvGwU/RWUKG0MgQMIWN1gKmhuzxoHiOhT9NmU3F5g6vYSYT0akWRi
qbpxmVm5yJAo9kSL
-----END CERTIFICATE-----
</ca>

<cert>
-----BEGIN CERTIFICATE-----
MIIFKjCCBBKgAwIBAgIBAjANBgkqhkiG9w0BAQsFADCBqDELMAkGA1UEBhMCSlAx
ETAPBgNVBAgTCEthbmFnYXdhMREwDwYDVQQHEwhLYXdhc2FraTERMA8GA1UEChMI
SGFjaHVuZXQxETAPBgNVBAsTCEhhY2h1bmV0MRQwEgYDVQQDEwtIYWNodW5ldCBD
QTEQMA4GA1UEKRMHRWFzeVJTQTElMCMGCSqGSIb3DQEJARYWcGhlbm9tZXJAZy5o
YWNodW5lLm5ldDAeFw0xMzA4MDYwNzMwMTNaFw0yMzA4MDQwNzMwMTNaMIGkMQsw
CQYDVQQGEwJKUDERMA8GA1UECBMIS2FuYWdhd2ExETAPBgNVBAcTCEthd2FzYWtp
MREwDwYDVQQKEwhIYWNodW5ldDERMA8GA1UECxMISGFjaHVuZXQxEDAOBgNVBAMT
B2FuZHJvaWQxEDAOBgNVBCkTB2FuZHJvaWQxJTAjBgkqhkiG9w0BCQEWFnBoZW5v
bWVyQGcuaGFjaHVuZS5uZXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
AQDaPA6/FlqlL6gbz/r1AzBF+VazenL6WHV2NkcPd1Fj0HUdowGaQR8E23rzN0dg
wRkcRIp86dTMkPVNhpvp3HE6ECcsW6LaskrIqXLZPkx5n9iVGvM0YPVY8zQkCM5u
UhHQjDPaJry9fo58nVr1YO8jFB7p0AxbZOyqVxKpsaZ49UOzLUTGIgP6QoqBGuR2
YNmd/7OE+pG7A/m912u8G5CZ3XHoDAUUh0nazn4ob6PTGb0csZGjdhNJoOsIIQcV
h0A3slgRlCMiYKLYCKSXpvrvo3vwtJP3Fq3coU0dytriPJKrX6R6NSclVl7/cO4J
nXZCuC3xXJNcADYuaKvawvqbAgMBAAGjggFfMIIBWzAJBgNVHRMEAjAAMC0GCWCG
SAGG+EIBDQQgFh5FYXN5LVJTQSBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0O
BBYEFCfOnKmBT1kX72NW//8iRzOCA1M+MIHdBgNVHSMEgdUwgdKAFHSmr4WRui81
xyzlK1T9jPm40mIdoYGupIGrMIGoMQswCQYDVQQGEwJKUDERMA8GA1UECBMIS2Fu
YWdhd2ExETAPBgNVBAcTCEthd2FzYWtpMREwDwYDVQQKEwhIYWNodW5ldDERMA8G
A1UECxMISGFjaHVuZXQxFDASBgNVBAMTC0hhY2h1bmV0IENBMRAwDgYDVQQpEwdF
YXN5UlNBMSUwIwYJKoZIhvcNAQkBFhZwaGVub21lckBnLmhhY2h1bmUubmV0ggkA
jtZIMGbqi0YwEwYDVR0lBAwwCgYIKwYBBQUHAwIwCwYDVR0PBAQDAgeAMA0GCSqG
SIb3DQEBCwUAA4IBAQBwbK5ZTfiM6Ce8wbfPeU6RSzswiY9LypvR7LFrbufYwiNt
ptWJVR9zG5JKzPIthgEesjEyhlucaPfReCfox8+2uADDjjTIr8aXO/UgeuPz06X7
os6an6KV/czSBspA3XVn6mrPaixaNVHUluPDKQlfinW8LjZdE1dcHHSsF79NBIeo
x1LLjMl9avGntkAV1WmUdaE+atNgeGYwJzBV9gqmWX01StIb3hsVSCINGu85Woch
2YP8N0UM52LXbgXPy6Jnpy80GfoaXjxNI/+xtmnQfzrm8OisKx+HWdaBjFE6lOtR
DtHKIm3/sL5Dj3nAiiDw4xyuFqTIZ9Di7ZAjQ15E
-----END CERTIFICATE-----
</cert>

<key>
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDaPA6/FlqlL6gb
z/r1AzBF+VazenL6WHV2NkcPd1Fj0HUdowGaQR8E23rzN0dgwRkcRIp86dTMkPVN
hpvp3HE6ECcsW6LaskrIqXLZPkx5n9iVGvM0YPVY8zQkCM5uUhHQjDPaJry9fo58
nVr1YO8jFB7p0AxbZOyqVxKpsaZ49UOzLUTGIgP6QoqBGuR2YNmd/7OE+pG7A/m9
12u8G5CZ3XHoDAUUh0nazn4ob6PTGb0csZGjdhNJoOsIIQcVh0A3slgRlCMiYKLY
CKSXpvrvo3vwtJP3Fq3coU0dytriPJKrX6R6NSclVl7/cO4JnXZCuC3xXJNcADYu
aKvawvqbAgMBAAECggEAGWTnqmClh5c2DpZy81O9qEbNSfEzs+HbOTgzqJ8Pv3eg
SSSQqSxuuZf4hJioG6Acled73fEvq+YqRS0ms13NZx4+ELFRD/WzMgpVrOXM7FIn
V6JdLnkh04npRVApBTlTjVrjJb1gNQSm++UrkmYHLaPHvRlSdsgVqfSb3VcoseZR
Q0RTTm6iAx0+7fFUJg+rPfhtDpKCPdIOSPXksTObts+7ErWDGlr9DglIuJqUSo/Y
crPpkk8gZp1X6bJNS+glxJtwvXP0P2pikQIqKwM2MNgjRxr4fGtoD50LwC6N068o
ZSXKGOR+miw/5u+KJySdbGNlu5AbbIkeJtUEbPC2sQKBgQDz7pLhGCB1dw6Ga+Ox
wwxuAApPIBpywxHesEF06dQFITXs60Xm4LWmUAXdCjFO4NMQ0Fl6I9ozP1S7hQur
Qkds76dx9VJg6NkBwy/Ncma5oADjBi3hRbN6sO6MKBvqlF9nm8guR4dn5ZhoyO1v
uBnmvMOlIZzY88VlUf2PHPSuHwKBgQDlCAYx54vHylP49w/I19v/MzgX9OcTegz1
JxewFmpKvEgehNgvQpYbSIGjZ5UctoSbslDU47B2gb75ocI1JXIfhpNHkNqCZZ5j
zdtaKSp2NurEcop4tJ0f3h2o8zBhwrgsDsegIwP4XJVF7xjF/+ohLj6Vmk/Xhhaa
4hYBWansBQKBgQCbdXVoPT8afZjlNEc1mBAI3r+zM8uHTijKWlwtDYSRDFxYtIyl
GprJ9n/2IjPQiFobgh00STsbpAX1SFJqf+ATXhzB9M3ecycyB1okvf8X2BAYn2yI
ACrlS3OMIVfBRXQUDOUkEXQLU/iw9zTTGWpwcebiC6zxW1J3Qyysk5CgkwKBgGDa
8tu54tf7zWU0/hzehG+49ljTPcFz1PT7sj3KTOsMEqetYEskKpyhHgm/bUS2PwAk
+Z/+JgsHtX6WFK4rBsckPzZ9oJqSZNgqH0BStl1FviSTl9GR9/yZDwv6xBQjp4Ui
PvOOu0gVxx7LDTv2jMm5Z8gWePtY/khDojCx/XUNAoGAHEZ3i2mBT0/PPTbHdrK7
UkBMEZdXgVfwWkN7pDz18hqH2e5c0jX9BREd3DA6PLs9tUkwmw+acvbt9B3/igYl
pGwHdrIntfbDeVz2EoYXp/slEHHE0g6Gws36nIIy+2NKFIh/PfFWG+P/ylMwoek5
TgEVSiKmUDWPP7G8JbTQSp4=
-----END PRIVATE KEY-----
</key>

サーバ側の起動

サーバ側では,コマンドプロンプトを管理者権限で実行し,以下のように openvpnコマンドを実行します.

> openvpn server.ovpn

クライアント側の起動

OpenVPN Connectアプリを起動し,メニューから「Import Profile from SD card」を選択,先ほどコピーした設定ファイルandroid.ovpnを開きます.する と,「Connect」ボタンが出てくるので,これをタップします.

正しく接続が確立できると,以下のような画面になります.

また,サーバ側には以下のようにPeer Connection Initiatedと出るはずです.

Tue Aug  6 16:42:55 2013 10.39.39.32:48589 [android] Peer Connection Initiated with [AF_INET]10.39.39.32:48589

その他の設定

後はインターネット接続に利用しているルータ側で, UDP 1194番ポートへの通信をサーバ側に転送するよう設定し,クライアント側の設定をそのサーバのアドレスに変更すれば,インター ネット経由のVPNを介しWindowsマシンに安全にアクセスすることができるように なるはずです. 合わせて,Dynamic DNSの設定などもおこなうと,より便利になるかもしれま せん.

参考

2011年8月12日金曜日

Xperia X10(SO-01B)とAndroid 2.3

昨年の夏、使用していたP701iDの液晶がついに壊れ、それならばと思い切って乗り換えたXperia X10(SO-01B)。 使い始めて1年経ったこともあり、少し纏めてみようと思う。

Androidとは

Xperia X10のOS、Androidは、Googleが開発・公開しているOSである。 Androidでは、各メーカが独自にカスタマイズしたものを、 キャリア向けにカスタマイズし販売、ユーザが購入する、というのが主流である。 Windowsならば、Microsoftがリリースし、各メーカがカスタマイズしたものを「メーカ製PC」 として販売するのが主流。

WindowsとAndroidの大きく異なる点は、間に介入する存在が多い点と、更新の方法が異なる点。 このため、Android開発元のGoogleがOSを更新してもすぐには反映されないどころか、 まったく反映されないことも多々ある。

Androidの更新を保証

そこで、18ヶ月間のupdateを保証するプログラムというものが発表されたことがあった。

GoogleとOEM各社、Android端末のアップデート保証プログラムを発表
http://japanese.engadget.com/2011/05/10/google-oem-android/

その結果か、Xperia X10のグローバルモデルにAndroid 2.3の更新が登場。 散々無いと言われ続けていたが、Sony Ericssonは出来る子だったようだ。

Android 2.3 for Xperia™ X10 is here
http://www.sonyericsson.com/update/?lc=en&cc=gb&pid=xperiax10

まさかの事態

しかし、これに水を差すとんでもない奴が居た。キャリアである。

Xperia(SO-01B)のAndroid 2.3アップデート見送りの理由が明らかに
http://gigazine.net/news/20110622_xperia_so_01b_not_gingerbread_reason/

これによると、更新を見送る理由は、

  • Android 2.3モデルとして今年発表した「Xperia arc(SO-01C)」や「Xperia acro(SO-02C)」のようなパフォーマンスを発揮できない
  • バージョンアップの際にユーザーデータを保持できず、必ず本体が初期化されてしまう
  • データのバックアップアプリが無くなる
  • カメラ撮影時の笑顔認識機能「スマイルシャッター」が無くなる
  • 現行のAndroid 2.1版で提供している日本語フォント「モトヤフォント」が適用できなくなる
とのこと。

パフォーマンスを発揮できない? そりゃハードの性能が違うんだから当たり前だろう。 本体内蔵データが消える? Android Marketのアプリは仕方ないとしても、ユーザデータを本体に保存しているとか、 何のためにGoogleのOSを使っているのか。 そして最大の「わけがわからないよ」はフォント。 フォントを理由としてサポートする側がupdate見送る携帯端末用OSというのは聞いたことがない。

こうして更新が見送られるほんの少し前、キャリアであるドコモ側はこんな事を言っていたらしい。

「我々の使命は最新OSをお届けすることに加え、日本独自の機能を入れていくこと」、ドコモの山田社長がAndroidのバージョンアップについて言及 http://gigazine.net/news/20110516_docomo_android_version_up/

まったく、わけがわからないよ。

アップデート見送りの問題点

当然ながら、(一部の)SO-01Bユーザからは失望の声が上がり、グローバルモデルのファームウェアと OSをインストールする方も出てきている。だが、それはあくまで非公認のやり方であり、リスクは端末更新で データ消失するより遥かに大きい。 また、「2.3待ってんのなんてオタだけだよw そんなんめんどいし儲からないからキャリアがやらなくて当然じゃんw」 という意見も見受けられる。

だが、アップデートされるのは何も見た目の機能だけではない。セキュリティホールに対する更新も含めての更新なのである。つい最近も、Android 2.2以前にSSLにおける重大な脆弱性が判明したばかりだ。

JVN#43105011 Android における SSL 証明書の表示に関する脆弱性
http://jvn.jp/jp/JVN43105011/

PC向けのWindows等と違い、Androidはユーザ側がパッチを適用することはできない。root権限すら持てない。 既存の携帯電話、いわゆる「ガラケー」と違い、Androidはオープンでグローバルなものであり、 脆弱性もオープンかつグローバル。これまでの常識は通用しない。 Androidの更新を提供しないメーカ・キャリアは、OS更新を提供しないことに対するリスクを、 全てユーザ側に押し付けているということになる。

それでは不味いと一応思ったらしく、「ドコモ あんしんスキャン」なるウィルス対策ソフトウェアの無償提供を開始した。

スマートフォン向けウイルス対策サービス「ドコモ あんしんスキャン」を無料で提供開始
http://www.nttdocomo.co.jp/info/news_release/2011/06/22_01.html

しかし、こんなモノは気休めでしか無い。根本的に解決しなければならないものを、 小手先の工作で誤魔化しているようにしか見えない。OSの更新によるセキュリティホールへのパッチと ウィルス対策は両方必須、Windowsではよく言われていることである。古いAndroidを使い続けるのは、 ウィルス対策ソフトがあるからとMicrosoftによる更新サポートが切れたWindows 9xや2000を使い続けるようなものだ。

それに、"Android 2.3モデルとして今年発表した「Xperia arc(SO-01C)」や「Xperia acro(SO-02C)」 のようなパフォーマンスを発揮できない"などと言ったのだから、ウィルス対策ソフトを導入することによる 負荷増・パフォーマンスの低下も考慮していただきたい。

また、脆弱性情報に対して、Android 2.2以前を用いて製品を販売している国内企業からの反応が ほとんど無いというのも問題がある。("JVN#43105011"でググって出てくるのは1300件。そのうち殆どがtwitterやblog) 例えそのセキュリティホールが販売している端末に対して問題なかったとしても、「問題なかった」 という情報を公開しなければ、不安が募るだけだ。

何を言いたかったか

簡単に言うと、言い訳言ってないでさっさと公式で更新提供するか、 日本独自モデルなんて止めるか、更新打ち切った端末で2年縛りは止めるかしてね!ということだと思う。

いろいろ文句や愚痴を書いたが、AndroidやXperiaが嫌いな訳ではない。 サポートする筈のキャリア(ドコモ)が足を引っ張っている現状に怒っているのである。 update以外にも、Windowsのメーカ製PCを思い起こされる量、かつアンインストール不可なアプリケーションを 大量にプレインストールといった、Androidのメリットである自由さを損ねるようなやり方など、 キャリアのやり方に対する不満点は多く存在する。

ドコモスマートフォン for Businessには、「セキュリティも安心」と書いてある。 しかし、現状のような対応では、私は安心してドコモやその他国内キャリアのスマートフォンを利用することはできない。 情報が流出したり、壊されてからサポートされるのでは遅すぎるのである。