先週は急遽予定を変更してしまい、申し訳ありません。今回は、予定通り、アンドロイドでVPNを使う方法を解説します。前々回に解説したようにすでに自宅などでVPNサーバーが動作していることを想定します。このVPNサーバーは、以下のような条件をみたいしていれば、必ずしも前回解説したSoftether VPNサーバーでなくてもかまいません。
- グローバルIPアドレスでアクセス可能なこと
- アンドロイドが対応可能なVPN方式であること(第69回参照)
- 自宅などの場合、VPNサーバーが動いているマシンにパケットが到達するようにルーターが設定されていること
今回は、前回解説したSoftether VPNサーバーが動作していることを前提にアンドロイド側の設定方法を解説します。
VPNの設定
設定は、「無線とネットワーク」 ⇒ 「その他...」 ⇒ 「VPN」で行います(写真01)。何も設定していなければVPNプロフィールが作成されていないはずなので、画面右上にある「+」ボタンを使ってプロフィールを作成します。
設定項目は以下の4つです(写真02)。
名前 | プロフィールの名前です。区別しやすいものを付けます。動作には関係ありません |
---|---|
タイプ | 「L2TP/IPsec PSK」を選択します |
サーバーアドレス | Softether VPNの場合、ダイナミックDNSで登録したドメイン名「~.softether.net」を指定します |
IPsec事前共有鍵 | Softether VPNの「IPsec/L2TP/EtherIP/L2TPv3設定」で設定した「IPsec事前共有鍵」と同じものを指定します |
基本的には、これでOKのはずです。なお、この4項目の設定だけを行うと、VPNの利用中は、すべてのインターネットアクセスは、VPNサーバー側を経由します。たとえば、クロームブラウザでWebページを閲覧したとき、Webサーバー側からみると、VPNサーバーが動作しているマシンからアクセスが行われているように見えてしまいます。一般的には、これで問題になることはありませんが、経由するルーターの数が多いため、環境などによっては、Webページの表示やサービスなどがタイムアウトしてしまうことがあります。
逆に、国外からのアクセスを拒否するようなサイトでも、この設定を使えば、海外にあるアンドロイドからのアクセスでも、自宅(日本国内)のVPNサーバー経由となるため、国内からのアクセスとして認識されるようになります。
もし、問題がある場合には、自宅ネットワークのみ、VPN経由として、それ以外のサイトは、VPN側へパケットが転送されないように設定します。この設定は、プロフィールにある「詳細オプションを表示する」のチェックボックスをオンにして、「転送ルート」の設定を行います(写真03)。
「転送ルート」とは、一般的にTCP/IPでいう「経路設定」です。VPNの接続に対して、特定のネットワークアドレスを対応付け、そのネットワーク内のホストに向かうパケットのみをVPNで転送するようにします。それ以外のアドレス宛のパケットは、アンドロイドが通常処理(VPNがないときと同じ)します。
この「転送ルート」の指定ですが以下のような形式で行います。
ネットワークアドレス "/" ネットマスクビット数
ネットワークに詳しい方は「自宅のネットワークアドレス」というだけで何を設定するのかがわかると思いますので、ここからは、わからない人向けの説明です。「転送ルート」で指定するのは、自宅のネットワークです。通常のISP利用契約では、一時的なグローバルIPアドレスを割り当てるため、NATと呼ばれる仕組みを使ってインターネットアクセスを行います。このとき、自宅のネットワークには、「プライベートアドレス」と呼ばれる特殊なIPアドレスを使います。これは「192.168.~」から始まるIPアドレスが使われることが多く、調べるには、自宅のルーターの設定を調べます。ネットマスクビット数は、自宅のネットワークの大きさを表す数字で、「192.168」で始まるネットワークでは「24」を使います。この設定を行うことで、自宅内にあるホストへアクセスするときだけVPN経由となり、それ以外のインターネットアクセスなどは、VPNを経由しなくなります。
プロフィールは複数登録可能なので、転送ルートを指定したものと、そうでないものの2つを登録しておくといいかもしれません。
接続をテストする
では、実際にVPNが利用可能かどうかをテストしてみます。テストするには、アンドロイド側と自宅ネットワーク側に通信を行えるサーバーやクライアントが必要になります。VPNサーバー側で接続状態を確認することもできるのですが、実際にアクセスが可能かどうかは、たとえば、FTPやWindowsのファイル共有機能などを使わないと確実にテストできません。また、VPNを接続する目的の1つに、外出先から自宅ネットワークへのアクセスがあるので、なんらかのクライアントを入れておくべきでしょう。たとえば、Windowsのファイル共有であれば、「Network Browser」などが利用可能です(写真04)。
アンドロイドのシェルを使っても一部のネットワークコマンド(netstatなど)は利用できるのですが、tracerouteなどのコマンドはありません。こちらは、PlayストアにGUIから実行できるもの(たとえば、IP Tools。)があるようなので、入れておくと便利でしょう(写真05)。
また、テストは、インターネット側から行う必要があるので、モバイルネットワークなど、自宅のネットワーク以外の方法でインターネットに接続させます。この状態で、「設定」 ⇒ 「無線とネットワーク」 ⇒ 「その他...」 ⇒ 「VPN」で、登録したVPNプロフィールをタップして接続を開始させます。VPNサーバーが動作していれば、接続が完了するはずです。なお、接続時にユーザー名やパスワードを聞いてきますので、VPNサーバーに登録してあるユーザー名とパスワードを入力します(写真06)。このとき、「アカウント情報を保存する」のチェックボックスをオンにすると、次回からユーザー名とパスワードが残った状態でダイアログボックスが開くようになります。
接続が完了すると、プロフィール名の下に「接続されました」と表示され(写真07)、通知シェードにカギアイコンで「VPNが有効になりました」という通知が出るようになります(写真08)。VPNを切断したり、転送状況を見る場合には、この通知をタップして行います。
接続が完了したら、VPNサーバー側で、通信セッションなどを確認します。Softether VPNの場合、サーバー管理マネージャで、localhostの管理ページ(写真09)を開き、上のリストに登録してある仮想ハブをダブルクリックして「VPNの管理」画面(写真10)にある「セッションの管理」ボタンを押します。表示されるウィンドウ(写真11)に、項目が2つあり、片方がアンドロイドマシンのIPアドレスになっていればOKです。ただし、このリストにある「~LOCLA BRIDGE~」という項目は、VPNサーバーと自宅ネットワークの接続なので、VPNによるセッションではないことに注意します。
写真11: 2つの項目が表示されていれば、接続が行われている。1つめの項目は、VPNサーバーとLANを接続するブリッジなのでVPNが未接続でも常に表示されている。インターネットからのVPN接続はリストの2つめ |
セッションが確立しているなら、前述のアンドロイドアプリなどを使って、自宅ネットワークにあるホストにアクセスしてみます。うまくいくようなら、設定は完了です。