Yappli Tech Blog

株式会社ヤプリの開発メンバーによるブログです。最新の技術情報からチーム・働き方に関するテーマまで、日々の熱い想いを持って発信していきます。

Android 12以降でVPNに接続する方法

ヤプリの新卒Androidエンジニアの近藤(ふなち/@_hunachi)です。

AndroidでVPNに接続する一般的な方法とその問題点

皆さんは、AndroidでVPN接続するときはどのようにしていますか?

私は、OSに標準で搭載されているVPN接続機能を使用するのが一般的な方法かなと思います!

一般的なVPNの設定方法

この方法ですね↑

ですがAndroid 12以降では、この方法だと使われているプロトコルが IKEv2/IPsec 系の場合しか対応できなくなってしまいました😭

設定できるプロトコルを表示

しかもAndroid 12ではAndroid 11以前で設定できていたものを使用して接続できるのですが、Android 13ではその方法での接続もできなくなっています。

でもAndroid 11以前で使用していたプロトコルなど、違うプロトコルを使っているVPNを使いたい時ってありますよね。

この問題の解決方法としては、主に

  • アプリを使う方法
    • クライアントを自作する
    • 既に存在するアプリを使う方法
  • VPNのプロトコルを使うことができるPCを中継する方法

があると思います。

WireGuardとかOpenVPNを使う場合は、公式がAndroid用クライアントアプリを出しているためそちらを使うことをオススメします!

ですがそれ以外の場合、VPNクライアントを作るのはある程度コストがかかりますし、いい既存のアプリを私は知りません😢

そこで今回は、IKEv2/IPsec 以外のプロトコルを使用しているVPNに、PCを中継させることでAndroid端末を接続させる方法を2つ紹介します。

Gnirehtetを使う方法

必要なもの

  • 以下の条件を満たすPC
    • 使いたいVPNのプロトコルを使うことができ、そのVPNに接続できる
    • Gnirehtetがインストールできる

セットアップ手順

1. VPNに繋ぎたい端末とadb接続ができる状態にする

参考になる資料はこちら

Android Debug Bridge(adb)  |  Android デベロッパー  |  Android Developers

2. PCを繋ぎたいVPNに接続する

macOSの場合

support.apple.com

3. Gnirehtetのダウンロードとセットアップをする。(ここではmacOSを使用する方法のみ記載)

github.com に書いてある通りに進める。

brewを使ってインストールする場合

  • brew install gnirehtet
  • gnirehtet run

アプリもAndroid端末に勝手にインストールしてくれる。その場合にVPN接続していいかのダイアログが出るのでOKを選択する。

VPNの接続を許可するためのダイアログ

Tips:Java版は動かない端末が存在するので、Rust版を使うことをおすすめします。

以下が確認できたらVPN接続成功です。

  • Android端末でVPN接続されているのが確認できた。
  • ターミナル上でパケットの送受信がされてそうなことが確認できる。

macOSの標準機能を使う方法

必要なもの

  • 使いたいVPNのプロトコルを使うことができ、そのVPNに接続できるmacOSのPC
  • 上記のPCを有線接続でネットワーク接続できる環境

セットアップ手順

1. PCを繋ぎたいVPNに接続する

support.apple.com

2. インターネット共有を行う

  1. PCを有線接続でネットワーク接続する。
  2. システム環境設定 > 共有 を開く。

システム環境設定 > 共有

  1. インターネット共有を選択する。
  2. 共有する接続経路で繋ぎたいVPNを選択する。チェックはまだ入れない!
  3. 相手のコンピュータでのポートにWi-Fiを選択する。
  4. Wi-Fiオプションからパスワードを設定できるので、LANがゲストを許可する場合などは特に安全なパスワードを設定する。

インターネット共有の設定画面

  1. 繋ぎたいVPNに接続した状態で、インターネット共有にチェック✅を入れる。
  2. Android端末側で2画面のコンピュータ名のwi-fiネットワークに接続する。

VPNに接続できてないとアクセスできないところにアクセスできたら成功です!

まとめ

今回は、Android12以降でVPNに接続する方法を紹介しました。

このブログに書いてある方法以外の方法も存在すると思います。 その場合は、是非新しいブログやTwitterなどで方法を教えていただけるととても嬉しいです!その際に、このブログをリンクしていただけるともっと嬉しいです!

興味を持たれた方はぜひカジュアル面談にお越しください🙌

open.talentio.com

最後に、知見提供など協力していただいたチームメンバーの皆さんありがとうございました!