自宅でFirefly iiiを本格的に運用し始めたのですが、支払いはすぐに記帳したいところです。
マネートラッキングをFireflyに一本化する API投入編 - paloma blog
特に旅行中など自宅にいないときに感じます。
メモっておけば済む話ですが、VPNでも張って外からサーバにアクセス出来たら便利ですよね。
現在家に常時稼働したサーバはないのですが、試しにVirtual BOXで環境を作ってみました。
構成図
以前紹介したものから色々アップデートしました。
今はこんな感じです。
環境
こちらも以前作った環境を使います。 ノートPC内にVirtual BOXで環境を作っています。
nwdiagで自宅ネットワーク構成図を自動アップデート - paloma blog
今回ちょっと環境変更したので構成図は上記が最新です。
やること
いったん自宅内での構築ということでスマホ(Mobile)からpfSenceにVPNを張って内部NW(VirtualBOXNW)のFirefly検証機にアクセスしたいと思います。
Firefly検証機はVirtual BOXの内部ネットワークに接続しており、pfSenseしか出口が無いのでHomeNWからは直接アクセスできません。
Internet経由のアクセスを想定して、FWポリシーを許可するのではなくpfSenseとVPNを張ってそれ経由でアクセスさせます。
VPNをどう張るか
仕事でやったことあるのはSSL-VPNとIPsecです。
スマホからならSSL-VPNのほうが簡単そうですが、openVPN等のツールを入れないといけないのでAndroidに標準についているIPsecで環境を作ります。
(iPhoneユーザではないのでiOSはわかりません)
pfSenceの構築
VPN用のマシンについてNWエンジニアとしてはメーカーのアプライアンスを使いたいところですが、すぐに導入出来てわりと構築が簡単なものがいいということでpfSenceを使います。 オープンソースFirewallという位置づけながら高機能で触っていて面白いです。
基本的な構築は割愛してIPsec部分だけ紹介します。
ユーザ認証方式
IPsecはSite-to-siteしか業務の経験がないのですがいろいろ検索した結果
IPsec + xauthを使います。
登録したユーザ名の認証が通ったらVPNが張れます。
SSL-VPNならこの方式でやったことあります。
当然かもしれませんがIPsecもできるんですね。
手順は以下の通りです。
各パラメータ
- IPsec(Phase1、Phase2)
アルゴリズムはそんなに強くないですが、Android側の仕様のようなのでドキュメント通りに設定しています。
あとモバイル端末直なのでアグレッシブモードにするのも肝ですね。
Mobile Client Supportは有効化しておかないと繋がりませんでした。
- Pre Shered Key
証明書認証もありますがIPsecといったらPSKですよね。
識別IDとキーは一応隠します。
- FWルール
家のNWなのでいったん全空けです。
- ユーザ
IPsecのユーザ認証用に作成。
L2TP/IPsecで一回失敗したのでxauthにしました。
(今振り返るとL2TP前のIPsecで何かこけてたと思う)
AndroidからVPN接続
これでIPsecの準備は完了したのでAndroidからつなげてみます。
設定アプリから行います。
プロファイル名、Pre Shered Key、認証ユーザを設定します。
アルゴリズムは選択できないのでやはり仕様で決まっている様ですね。
プロファイルができましたので接続してみます。
一応鍵マーク付きましたね。
ギガぞうのプロファイルはお気になさらず。
Firefly検証機へアクセス
Androidはルータ向けのデフォルトゲートウェイしかなく内部NWの10.0.0.0/24へはアクセスできません。
接続できればVPN接続もOKということですね。
OK!
AndroidからではNWの詳細が確認できませんが検証サーバへアクセス出来ています。
テスト用に資産100万を入力したきりですね。
あとpfSence上ではIPsecステータスが有効になっています。
まとめ
というわけでAndroidとpfSenseでIPsecを張って内部サーバへアクセスすることができました。
手順通りなのであまり考える余地はありませんでしたがその分すんなり作れたので良しとします。
買う買う言いながら全然ホームサーバ用のマシンを買っていませんが、環境は作ったのでOVAかコンフィグのimportでいつでも移動できるようになりました。
もう少しVPN環境について再考するかもしれませんが、今回やりたいことはできました。
今年のGWは1~3日までキャンプへ行っていてその時本件を思いついたのですが、一応GW内に接続まで確認できました。
今年はカレンダー通りでそこまでの連休は取れませんでしたが、とりあえず期間内に1本記事を書けてよかったです。
本当は外からアクセスするまでやりたかったですが、いったんここまでですね。