ホーム > サーバ > OpenVPN on IS01

OpenVPN on IS01

2010 年 12 月 11 日 コメントをどうぞ コメント

先日購入したIS01OpenVPNのクライアントとして動作させてみました。
うろ覚えの部分も多いですが忘備録として掲載しておきます。
利用の際は自己責任で。
内容に過不足・誤り等がありましたらお知らせ願います。

[2010/12/30] tunモジュールのミラーを追加・redirect-gatewayについて追記


– – – – –

OpenVPN Installerも試したのですが、インストールされたバイナリが正しく動作しませんでした。
また、OpenVPN Settingsは常駐しつつ接続を維持してくれるので便利なのですが、
デフォルトでは”au IS01 rooter”が作成した”/sbin/su”を検出してくれません。
そのため”Some system requirements are not met! You need root!”と怒られてしまうので、
この問題に対応した改変版を作成してみました。(ダウンロード)
(オリジナルの”OpenVPN Settings”がインストールされている場合は先に削除してください。)

  • PCでの作業
    1. modules_enablerをダウンロードし”modules_enabler.ko”を取得します。
    2. tunモジュール(ミラー)をダウンロードし”tun.ko”を取得します。
    3. openvpn-static-2.1.1.bz2をダウンロードし、”openvpn-static-2.1.1″を取得します。
    4. “openvpn-static-2.1.1″のファイル名を”openvpn”へ変更します。
    5. 3つのファイルをmicroSDカードの”tmp”フォルダへコピーします。
    6. OpenVPN設定ファイルをmicroSDカードの”openvpn”フォルダへコピーします。
  • IS01での作業
    1. Android Terminal Emulatorをインストールします。
    2. Superuserをインストールします。
    3. au IS01 rooterをインストールしStep3まで完了します。
    4. “au IS01 rooter”のウィジェットを設置します。
    5. “Android Terminal Emulator”を起動します。
    6. ライブラリファイルを”/sqlite_journals/is01root”へコピーします。
      $ cp /sdcard/tmp/modules_enabler.ko /sqlite_journals/is01root
      $ cp /sdcard/tmp/tun.ko /sqlite_journals/is01root
    7. 2つのkoファイルの所有者とパーミッションを変更します。
      $ su
      # cd /sqlite_journals/is01root
      # chown root.root modules_enabler.ko
      # chown root.root tun.ko
      # chmod 644 modules_enabler.ko
      # chmod 644 tun.ko
    8. “autoexec.sh”ファイルを以下のように編集します。
      # vi autoexec.sh
      #!/system/bin/sh
      /sqlite_journals/is01root/_su 0 insmod /sqlite_journals/is01root/modules_enabler.ko
      /sqlite_journals/is01root/_su 0 insmod /sqlite_journals/is01root/tun.ko
      /sqlite_journals/is01root/_su 0 insmod /sqlite_journals/is01root/msm_nand_ex.ko
      #/sqlite_journals/is01root/_su 0 insmod /sqlite_journals/is01root/modules_enabler.ko
      /sqlite_journals/is01root/_su 0 setprop rild.libpath `getprop rild.libpath2`

      #/sqlite_journals/is01root/su -c /sqlite_journals/is01root/boot.sh
    9. IS01を再起動します。
      # restart
    10. “au IS01 rooter”のウィジェットから管理者権限を取得します。
    11. “Android Terminal Emulator”を起動します。
    12. “lsmod”を実行しモジュールが組み込まれたか確認します。
      $ lsmod
      unifi_sdio 294368 2 - Live 0x7f01e000
      msm_nand_ex 43200 0 - Live 0x7f00e000
      tun 11476 0 - Live 0x7f006000
      modules_enabler 1716 0 - Live 0x7f000000 (P)
    13. “sysremount_atmyownrisk.sh”を実行します。
      $ su
      # cd /sqlite_journals/is01root
      # sysremount_atmyownrisk.sh
    14. “openvpn”を”/system/bin”へコピーします。
      # cp /sdcard/tmp/openvpn /system/bin
    15. “openvpn”の所有者とパーミッションを変更します。
      # cd /system/bin
      # chown root.root openvpn
      # chmod 755 openvpn
    16. ディレクトリ”/system/xbin/bb”を作成します。
      # mkdir /system/xbin/bb
    17. OpenVPNに必要なBusyBoxコマンドをシンボリックリンクで作成します。
      # ln -s /sqlite_journals/is01root/busybox /system/xbin/bb/ifconfig
      # ln -s /sqlite_journals/is01root/busybox /system/xbin/bb/route
    18. シンボリックリンクを確認します。
      # cd /system/xbin/bb
      # ls -l
      lrwxrwxrwx root root 2010-12-09 00:00 ifconfig -> /sqlite_journals/is01root/busybox
      lrwxrwxrwx root root 2010-12-09 00:00 route -> /sqlite_journals/is01root/busybox
    19. OpenVPN設定ファイルの構成を確認します。
      # cd /sdcard/openvpn
      # ls
      ca.crt
      dh2048.pem
      client-is01.conf
      client-is01.crt
      client-is01.key
      client-is01.ovpn
    20. OpenVPNを起動し、エラーが発生していないかを確認します。
      # openvpn client-is01.conf
    21. 改変版OpenVPN Settingsをインストール・起動します。
      (“設定”→”アプリケーション”→”提供元不明のアプリ”を有効にする必要があります。)
    22. “MENU”→”Advanced”→”Path to openvpn binary”が
      “/system/bin/openvpn”となっている事を確認します。
    23. “戻る”でメニューを閉じます。
    24. “OpenVPN”が無効になっている場合はタップして有効にします。
    25. “client-is01.conf”をタップして接続を開始します。
      (有効にならずに”OpenVPN Settings がスーパユーザ権限を獲得しました”と表示された場合はもう一度タップします。)
    26. “Select to turn on OpenVPN tunel”が”Connected to (サーバ側IPアドレス) as (クライアント側IPアドレス)”となれば完了です。
  • 使用方法
    1. “au IS01 rooter”のウィジェットから管理者権限を取得します。
    2. 改変版OpenVPN Settingsを起動します。
    3. 上記手順24.以降を参照してください。

手順は以上です。
IS01は初めて持ったスマートフォンですが、
色々遊べるしとても便利ですお(^ω^ )

最後に”OpenVPN Settings”のソース改変部分を掲載しておきます。
【Shell.java 57行目】

  • Before
    for (String bin : new String[]{"/system/bin/", "/system/xbin/"}) {
  • After
    for (String bin : new String[]{"/system/bin/", "/system/xbin/", "/sbin/"}) {

[2010/12/30追記]
“client-is01.conf”の末尾に

redirect-gateway

と追記すると、全てのデータ通信がOpenVPN接続先のサーバを経由するようになります。

カテゴリー: サーバ タグ: ,
  1. コメントはまだありません。
  1. トラックバックはまだありません。