paloma blog

NWエンジニアやってます。主に自宅環境のお遊びを書きます。Pythonもちょっと。タイトルは好きなカクテルから。

ConnectBotでAndroidの簡易VPNを作る

ブログでちょこちょこ紹介しているFirefly iiiですが、いい加減外出先からでも操作したくなりました。

個人の資産情報が入っており、Internetに直接公開するのは危ないのでVPNを張ってアクセスしたいと思います。

Team viewerとかGoogle desktopを使えば簡単ですが、それだと面白くないのでNWエンジニアらしくVPNを張ることにしました。

VPNの選択肢

ぱっと浮かぶ選択肢としては

  1. ローカルサーバにVPNサーバを構築する
  2. ルータにVPNサーバを構築する
  3. SSHポートフォワーディングを使う

とありますが、今回は環境の都合上3を選択しました。
ルータはISPのレンタルルータなのですが、いろいろできない事が多かったためです。

  1. ルータのポートフォワーディングが効かない
    • TCPはポートフォワーディングできるのですが、なぜかUDPはできませんでした。設定上は選択できるのに...
  2. ルータにVPNサーバ機能が無かった
    • VPNクライアントのみでした。

ということでルータがポートフォワーディングでき、VPNということでSSHのポートフォワーディングを使うことにしました。

環境

こんな感じです。
流石にsshポートをそのまま公開するのも何なので気持ち番号を変更しました。

f:id:paloma69:20210822200345p:plain

各環境の設定は以下の通りです。

Android

ポートフォワーディングできるSSHクライアントアプリを探したらConnectBotが良さそうだったのでこれにしました。

ConnectBot - Home

設定画面はこんな感じです。

f:id:paloma69:20210822200417p:plain

SSHのポート変更もできるし、シェルセッションを使わないという事もできます。(ポートフォワードのみ)
公開鍵も作成できて結構いいアプリですね。

ローカルポートの8000番をUbuntuフォワーディングします。
リモートフォワードだとサーバが転送用IPをlocalhostでListenしてしまう様なので、ひと手間加えるくらいならということでローカルフォワードにしました。

RT

TCPのポートフォワーディングのみ行います。

12345番ポートを22番に変換します。
これだけ。

Ubuntu

このブログでもよく出てくるサブ機です。
FireflyはこのマシンのLXD内にありますが、ホストの80ポートにアクセスすればそのままProxyでFireflyにアクセスできます。

sshdは公開鍵認証のみにしてあるので、突破は至難の業ですよ。

アクセスしてみます

ConnectBotの起動

作成済みの接続を起動します。

f:id:paloma69:20210822200502p:plain

シェルターミナルは起動してないので画面は何も表示されません。

f:id:paloma69:20210822200519p:plain

Fireflyへアクセス

ローカルIPの8000へアクセスします。
先にこっちをスクショ取ったので時刻はお気になさらず。
ログイン画面は割愛しますが、無事にログインできました!
ConnectBotがアクティブのタスクじゃなくてもちゃんと動いてくれてますね。

ちなみにこの8000番はsshで包まれているのでキャプチャしても発見できません。

f:id:paloma69:20210822200809p:plain

f:id:paloma69:20210822200818p:plain

いいですね、ちゃんとデータが見えます。

ちなみにlocalhostだと表示されません。

f:id:paloma69:20210822200849p:plain

Androidの各ファイルをちゃんと見たことありませんが、hostsに書かれてないんでしょうね。

まとめ

今回は環境の制約でSSHポートフォワードを使ったVPN環境を作りました。
これで外出先からすぐに家計簿をつけられるようになりましたw

SSHポートフォワードはお手軽なVPNで良いですが、単体へのアクセスしかできないので、やはりいつかはIPsecあたりでちゃんとしたVPNを作りたいですね。