Android端末をVPNサーバーとして利用する 総まとめ 完全版

Android端末をVPNサーバーとして利用する 総まとめ

総まとめをしたはずなのですが、この後に大規模な変更をしたので改めてまとめなおします。

なお追加される内容は証明書の自前発行関係です。

ここから更に変更されなければ良いのですが・・・

Advertisement
目次

Android端末をVPNサーバーとして使うためにServers Ultimateというアプリを使う

Servers Ultimateを利用してAndroid端末を各種サーバーにする

Servers UltimateはAndroid端末を様々なサーバーとして使えるようにしてくれるアプリです。

とりあえずProじゃない版お試し版を利用してからPro版を購入しましょう。

本当に様々なサーバー、ツール機能があります。

今の所私が利用しているのは、SMBサーバー、Wake On LANクライアント、VPNサーバー、Dynamic DNS アップデーターといったところです。

もちろんこれ以外にも様々なサーバーが利用できます。使っていないAndroid端末の活用先として最高。だだしroot化が必須です。

余っているAndroid端末の活用

DDNSの設定(固定IPではない場合)

Servers UltimateでAndroid端末をDynamic DNS アップデーターとして利用して無料DDNSサービスを利用する

ということで使えるように設定していきます。

まず事前にこれを見てDDNSの設定をしておいてください。
固定IPを契約している人は必要ありませんが、一般的には必要だと思います。
よくわからない人は設定してください。

Advertisement

Servers Ultimateの設定

Servers UltimateでAndroid端末をVPNサーバーとして利用する

Android端末で建てたVPNサーバーを何故か接続できない所で接続できるようにする記事

Servers Ultimate本体とVPNサーバーに必要なPackをインストールしておいてください。

Servers Ultimateを起動したらServersからADDを押してVPN Serverを選択してください。

開くと英語でなにか書かれているので自前の英語力かGoogle翻訳パワーを活用して読んでください。

GENERAL

SERVER NAME

好みでつけてください。

Start on Bootにチェックを入れてください。

SPECIFIC

PROTOCOL TYPE(VPN接続などが規制されている回線で接続する場合のみ変更)

一般的には高速と言われているUDPのままにしますが、VPN接続が拒否されるような場所でも利用できるようにする場合にはTCPを選択します。

Address 1

ここには初期からGoogle Public DNSである8.8.8.8が登録されていると思います。
VPN経由で接続する場合、ここで指定したDNSが利用されるので、好みのDNSを指定してください。
Google AdSenseやアフィリエイトなどブロックされて困る私としては勧めたくありませんが、例えばAdGuard DNS(176.103.130.130)を指定すると広告ブロックできちゃったりします。
DNSブロッキングってやつです。DNSブロッキングの正しい(間違った)使い方です。
ただし、AdGuard DNSは名前解決がGoogle Public DNSなどより若干遅い気がします。

Address 2

Google Public DNSの代替DNSである8.8.8.4が登録されていると思います。
AdGuard DNSの代替DNSは176.103.130.131です。

OTHER

Enable compression(comp-lzo)

私の環境では何故かこれを有効にするとインターネット接続が非常に不安定になってしまったので無効にします。

Enable client to client communication(client-to-client)

必要そうだったので有効に。違いはわかりません。

CLIENT SERVER IP

これはDDNSで設定したドメインを指定してください。

固定IPの方はそのIPアドレスを指定してください。

USERS(自分で証明書を用意する場合は不要)

後々使うので追加します。

自分で証明書を用意する場合は証明書で認証するので必要ありません。

CLIENT DATAを保存

SPECIFICのCLIENT DATAからSaveしてください。
保存すると英語が表示されるので読んでください。内容はサーバーの設定を変えたらまたSaveし直してねって感じです。多分。

Advertisement

ポート開放

AndroidサーバーをIP固定

各種ネットワーク機器側でIPアドレスを固定する

これを見てAndroidサーバー側のローカルIPを固定してください。

ルーター側の設定

Android端末で建てたVPNサーバーを何故か接続できない所で接続できるようにする記事 完全解決編

ルーターの設定画面でポート開放なりポートマッピングなり静的IPマスカレード設定なり書かれているところから設定します。


私のONU(PR-S300SE)の場合、詳細設定→静的IPマスカレード設定から空いているエントリー番号をクリックし、このように設定します。
優先順位は1、宛先IPアドレスは先程固定したAndroidサーバーのIPアドレス、変換対象プロトコルはTCPとUDP両方(一応)、宛先ポートと変換対象ポートは変更していなければ1194と入力してください。
あとは設定で保存します。

なお、上でVPN接続が拒否される場所でも接続できるようにTCPを選択した場合は変換対象ポートのみ443に設定してください。

Advertisement

.ovpnファイルの編集

Android端末で建てたVPNサーバーを何故か接続できない所で接続できるようにする記事 完全解決編

Android端末で建てたVPNサーバーをWindowsで利用して自宅PC共有ドライブに接続するために奮闘する記事

CLIENT DATAを保存で保存されたzipファイルを展開すると”client.ovpn”のような.ovpnファイルが存在していると思います。

それを適当なテキストエディターで開き、編集します。

VPN接続が拒否される場所でも接続できるようにプロトコルをTCP、変換対象ポートを443にした人はremote hogehoge 1149のように自宅のドメインとポートが書かれている部分のポート番号を443に変更してください。

Advertisement

証明書の発行(iOSデバイスで接続したい場合やできそうな人向け)

Android端末をVPNサーバーとして利用する 証明書低セキュリティ問題解決編

一応今までの設定のみで接続自体はできる様になるのですが、Servers Ultimateが発行する証明書は古い時代のものでセキュリティに難があります。

そのため、OpenVPNの公式クライアントで接続しようとするとエラーが出て接続することが出来ません。

Windows版とAndroid版は無理やり接続させる方法があるのですが、iOSデバイスでは出来ません。

そのため、証明書を自分で発行して解決するわけですが、証明書の発行はLinux系の操作をする必要がありますし、そこそこ面倒なのです。

なので、WindowsかAndroidでしか使わないし低セキュリティでもとりあえず接続さえできればOKという人は飛ばしもらっても構いません。

ただし、iOS版で利用したい場合は必須です。頑張ってください。

Windows Subsystem for Linuxの利用(iOSデバイスで接続したい場合やできそうな人向け)

Windows10ではWindows中でLinuxを利用することができるすごい機能があります。

すでに仮想環境やらなんやらでLinuxの環境がある方は良いのですが、私は無いので(とはいっても簡単に作れますが)Windows Subsystem for Linuxを利用します。

Windows Subsystem for Linuxの有効化(iOSデバイスで接続したい場合やできそうな人向け)

コントロールパネル→プログラムと機能→Windowsの機能の有効化または無効化からWindows Subsystem for Linuxを探して有効にしてください。自動でファイルのダウンロードやらインストールやらをやってくれます。

完了したら再起動してください。再起動しないと利用できません。

Microsoft StoreからUbuntuのインストール(iOSデバイスで接続したい場合やできそうな人向け)

Microsoft Storeなんて今までの人生で一回も利用したことがありませんでしたが、WSLを利用する場合はMicrosoft StoreからUbuntuをインストールしなくてはなりません。

検索からWSLと検索し、Ubuntuをインストールします。

他のディストリビューションでも良いような気がしますが、ここは素直にUbuntuにしておきます。

Ubuntuの起動(iOSデバイスで接続したい場合やできそうな人向け)

起動すると初回インストールがあるので待ちましょう。

インストールが完了するとUbuntuで利用するユーザー名とパスワードの作成を求められます。

何でも良いので忘れない適当なものを作りましょう。ただしユーザー名の頭に大文字を使えないなど制約はあります。

また、パスワード入力時は”*”もなにも出てきません。

インストール可能なパッケージの一覧更新(iOSデバイスで接続したい場合やできそうな人向け)

コマンドプロンプトやらなんやらを起動して”ubuntu”と入力することでWSLを利用することが出来ます。

sudo su

パスワードを入力して管理者権限にして、

apt-get update

これを実行してください。

インストール可能なパッケージの一覧が更新されます。

easy-rsaのインストール(iOSデバイスで接続したい場合やできそうな人向け)

apt-get install easy-rsa

OKならばYを入力してインストールしましょう。

ディレクトリの移動(iOSデバイスで接続したい場合やできそうな人向け)

cd /usr/share/easy-rsa

とコマンド入力し、easy-rsaのあるディレクトリに移動します。

varsの編集(iOSデバイスで接続したい場合やできそうな人向け)

編集しないとエラーが出るので編集しておきます。

vim vars

で開き、

export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`

をコメントアウト、

export KEY_CONFIG=/usr/share/easy-rsa/openssl-1.0.0.cnf

を追加します。

認証局の作成(iOSデバイスで接続したい場合やできそうな人向け)

. ./vars

環境変数の設定、

./clean-all

なんか、

./build-ca

で認証局を作ります。秘密鍵とか公開鍵とか色々作成されます。

色々なことを聞かれますが、適当でも大丈夫です。

サーバー証明書の作成(iOSデバイスで接続したい場合やできそうな人向け)

./build-key-server server

秘密鍵と公開鍵が作られます。同じく適当でも大丈夫です。

challenge passwordは何も入力しないでください。

Sign the certificate? と聞かれるのでyで署名します。

またなんか聞かれるのでyでOKです。多分。

DH鍵の生成(iOSデバイスで接続したい場合やできそうな人向け)

鍵交換のなんかすごいやつらしいです。

./build-dh

これで作成します。

クライアント証明書の作成(iOSデバイスで接続したい場合やできそうな人向け)

./build-key client

で作ります。同じく適当でも大丈夫です。

challenge passwordは何も入力しないでください。

Sign the certificate? と聞かれるのでyで署名します。

またなんか聞かれるのでyでOKです。多分。

生成した証明書の取り出し(iOSデバイスで接続したい場合やできそうな人向け)

Explorerから”\\wsl$”にアクセスすると簡単にファイルにアクセスすることが出来ます。

\\wsl$\Ubuntu\usr\share\easy-rsa\keys

に色々作ったものがあります。

ca.crt、client.crt、client.key、dh2048.pem、server.crt、server.keyをどこかわかりやすいところに移動しておきましょう。

Servers UltimateのOpenVPNで利用されるファイルのディレクトリ(iOSデバイスで接続したい場合やできそうな人向け)

Android端末の/data/data/com.icecoldapps.serversultimate.packa/vpnが利用されるファイルの保存先です。

keysに証明書の類があるのがわかりますね?

なにもない人は一旦作成途中のVPNサーバーを起動して止めてください。

証明書をAndroidサーバーへ移動(iOSデバイスで接続したい場合やできそうな人向け)

今必死に作った証明書を利用するAndroid端末に移動させます。

何かしらの方法でAndroidに証明書を持ってきて/data/data/com.icecoldapps.serversultimate.packa/vpn/keysにca.crt、dh2048.pem、server.crt、server.keyを移動させます。

なお、自動生成された証明書は必要なくなりますが、うまくいかなかったときに面倒なので削除せずにリネームして残しておくことをおすすめします。

DH鍵のリネーム(iOSデバイスで接続したい場合やできそうな人向け)

dh2048.pemになっていると思いますが、Servers Ultimateが生成しているDH鍵のファイル名はdh1024.pemになっているのでリネームしてください。

証明書をクライアント設定ファイルフォルダーへ移動(iOSデバイスで接続したい場合やできそうな人向け)

接続するために必要なクライアント接続ファイルをServers Ultimateから受け取っていると思います。

中にあるca.crtとclient.crtとclient.keyを自分で生成したものに置き換えます。

Advertisement

VPNサーバーの起動

サーバー側の設定は終了したのでVPNサーバーを起動してください。

とりあえず自動でシャットダウンされずに動作し続ければひとまず安心です。

Advertisement

OpenVPN接続用ツールの利用

Windows版クライアント

Android端末で建てたVPNサーバーをWindowsで利用して自宅PC共有ドライブに接続するために奮闘する記事

ダウンロード

ここからWindows版のクライアントをダウンロードしてください。

あとは起動してインジケーターにあるOpenVPNのアイコンを右クリックし、上で保存し編集した.opvnファイルをインポートするだけです。

接続ファイルのインポートをしてもエラーが発生した場合

.opvnファイルをインポートしたと思いますが、それだけだと.opvnファイルのみインポートされ他のファイルがインポートされていません。

他の.crtやら.keyやらが必要なので、

Users\%UserName%\OpenVPN\config\client

というフォルダーが存在しているはずなのでそこに残りのファイルも全てコピーします。これで動作するはずです。

なお、Androidサーバーと同じLAN内では接続できないのでモバイル回線なり外の回線を利用してください。

それでも動作しない場合(証明書を自前発行してない上にMD5とかSHA256とかセキュリティ系っぽいエラーの場合)

--tls-cipher DEFAULT:@SECLEVEL=0

と記述してください。これで一応接続できるようになります。

Android版クライアント

Android用公式OpenVPNクライアントで接続できなくなった場合の解決法

証明書を自前発行した場合

公式のOpenVPNクライアントを利用することが出来ます。もちろん後述するクライアントでもOKです。

インストール

このアプリを利用します。

後述するオープンソースクライアントのほうが高機能な気がしますが、こちらはシンプルでわかりやすいと思います。

使い方

最初に開くと三択が表示されるのでOVPN Profileを選択します。

先程作ったクライアント設定ファイル一式を端末内に移動させ、それを指定してIMPORTしてください。

好きな名称を付ければOKです。

あとは開いてうまく接続されることを願うだけです。

なお、Androidサーバーと同じLAN内では接続できないのでモバイル回線なり外の回線を利用してください。

証明書を自前発行していないかオープンソースOpenVPNクライアントを利用する場合

オープンソースOpenVPNクライアントの場合は(今の所)低セキュリティな証明書でも接続することが可能です。

インストール

このアプリを利用します。

公式ではありませんが、オープンソースのクライアントですし、公式と同じくらい利用されているので問題はないでしょう。
むしろ公式のものよりも高機能で色々できそうです。

使い方

.opvnファイルを利用する場合は右上の箱に↓が書かれたようなマークをタップし.opvnファイルを選択します。

プロファイル名を適当につけます。

.opvnファイルを指定しているのだから証明書の類も設定してくれれば良いのですが、してくれないので自分で指定します。

CA証明書にca.crtを、クライアント証明書にclient.crtを、クライアント証明書のキーにclient.keyを選択し右上のチェックをタップします。

あとは完成したプロファイルをタップすれば低セキュリティでも接続できるはずです。

なお、Androidサーバーと同じLAN内では接続できないのでモバイル回線なり外の回線を利用してください。

iOS版クライアント

iOS版では公式クライアントしか存在していませんし、Windows版のように低セキュリティ証明書制限を回避するコマンドもないので自前での証明書発行が必須になります。

インストール

このアプリです。

操作感はAndroid版公式クライアントとほぼ同じなので特に悩むところは無いと思います。

使い方

最初に開くと三択が表示されるのでOVPN Profileを選択します。

先程作ったクライアント設定ファイル一式を端末内に移動させる必要があります。メールでもできそうな雰囲気ですが、素直にiTunesで転送したほうが早いと思います。

ファイルを転送すると転送したファイルの情報が出るのでそれをADDします。

あとは好きな名称を付ければOKです。

あとは開いてうまく接続されることを願うだけです。

なお、Androidサーバーと同じLAN内では接続できないのでモバイル回線なり外の回線を利用してください。

Advertisement

ということで、証明書低セキュリティ問題も解決しましたし、iOSデバイスで利用することも可能になりましたし完璧になりましたね!(速度が若干遅くなるのはそういうものだしそこまで困っていないのでスルーで)

この証明書のセキュリティ問題が解決しないからGCPでOpenVPNを利用しようと色々やっていたのですが解決してしまうと必要がなくなってしまいますね・・・

今詰まっていますしあちらは完結しないかもしれません・・・