paloma blog

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

AndroidからpfSenseにIPsec接続して内部NWにアクセスする

自宅でFirefly iiiを本格的に運用し始めたのですが、支払いはすぐに記帳したいところです。

マネートラッキングをFireflyに一本化する API投入編 - paloma blog

特に旅行中など自宅にいないときに感じます。
メモっておけば済む話ですが、VPNでも張って外からサーバにアクセス出来たら便利ですよね。

現在家に常時稼働したサーバはないのですが、試しにVirtual BOXで環境を作ってみました。

構成図

以前紹介したものから色々アップデートしました。
今はこんな感じです。

f:id:paloma69:20210505155946p:plain

環境

こちらも以前作った環境を使います。 ノートPC内にVirtual BOXで環境を作っています。

nwdiagで自宅ネットワーク構成図を自動アップデート - paloma blog

今回ちょっと環境変更したので構成図は上記が最新です。

やること

いったん自宅内での構築ということでスマホ(Mobile)からpfSenceにVPNを張って内部NW(VirtualBOXNW)のFirefly検証機にアクセスしたいと思います。
Firefly検証機はVirtual BOXの内部ネットワークに接続しており、pfSenseしか出口が無いのでHomeNWからは直接アクセスできません。

Internet経由のアクセスを想定して、FWポリシーを許可するのではなくpfSenseとVPNを張ってそれ経由でアクセスさせます。

VPNをどう張るか

仕事でやったことあるのはSSL-VPNIPsecです。
スマホからならSSL-VPNのほうが簡単そうですが、openVPN等のツールを入れないといけないのでAndroidに標準についているIPsecで環境を作ります。
(iPhoneユーザではないのでiOSはわかりません)

pfSenceの構築

VPN用のマシンについてNWエンジニアとしてはメーカーのアプライアンスを使いたいところですが、すぐに導入出来てわりと構築が簡単なものがいいということでpfSenceを使います。 オープンソースFirewallという位置づけながら高機能で触っていて面白いです。

基本的な構築は割愛してIPsec部分だけ紹介します。

ユーザ認証方式

IPsecはSite-to-siteしか業務の経験がないのですがいろいろ検索した結果
IPsec + xauthを使います。

登録したユーザ名の認証が通ったらVPNが張れます。
SSL-VPNならこの方式でやったことあります。
当然かもしれませんがIPsecもできるんですね。

手順は以下の通りです。

pfSense Configuration Recipes — IPsec Remote Access VPN Example Using IKEv1 with Xauth | pfSense Documentation

各パラメータ

アルゴリズムはそんなに強くないですが、Android側の仕様のようなのでドキュメント通りに設定しています。

f:id:paloma69:20210505160136p:plain

あとモバイル端末直なのでアグレッシブモードにするのも肝ですね。

Mobile Client Supportは有効化しておかないと繋がりませんでした。

f:id:paloma69:20210505160209p:plain

  • Pre Shered Key

証明書認証もありますがIPsecといったらPSKですよね。
識別IDとキーは一応隠します。

f:id:paloma69:20210505160255p:plain

  • FWルール

家のNWなのでいったん全空けです。

f:id:paloma69:20210505160319p:plain

  • ユーザ

IPsecのユーザ認証用に作成。
L2TP/IPsecで一回失敗したのでxauthにしました。
(今振り返るとL2TP前のIPsecで何かこけてたと思う)

f:id:paloma69:20210505160343p:plain

AndroidからVPN接続

これでIPsecの準備は完了したのでAndroidからつなげてみます。
設定アプリから行います。

f:id:paloma69:20210505160729p:plain

プロファイル名、Pre Shered Key、認証ユーザを設定します。
アルゴリズムは選択できないのでやはり仕様で決まっている様ですね。

プロファイルができましたので接続してみます。

f:id:paloma69:20210505160852p:plain

f:id:paloma69:20210505160928p:plain

一応鍵マーク付きましたね。
ギガぞうのプロファイルはお気になさらず。

Firefly検証機へアクセス

Androidはルータ向けのデフォルトゲートウェイしかなく内部NWの10.0.0.0/24へはアクセスできません。
接続できればVPN接続もOKということですね。

f:id:paloma69:20210505161038p:plain

OK!

AndroidからではNWの詳細が確認できませんが検証サーバへアクセス出来ています。
テスト用に資産100万を入力したきりですね。

あとpfSence上ではIPsecステータスが有効になっています。

f:id:paloma69:20210505161259p:plain

まとめ

というわけでAndroidとpfSenseでIPsecを張って内部サーバへアクセスすることができました。
手順通りなのであまり考える余地はありませんでしたがその分すんなり作れたので良しとします。

買う買う言いながら全然ホームサーバ用のマシンを買っていませんが、環境は作ったのでOVAかコンフィグのimportでいつでも移動できるようになりました。

もう少しVPN環境について再考するかもしれませんが、今回やりたいことはできました。
今年のGWは1~3日までキャンプへ行っていてその時本件を思いついたのですが、一応GW内に接続まで確認できました。
今年はカレンダー通りでそこまでの連休は取れませんでしたが、とりあえず期間内に1本記事を書けてよかったです。

本当は外からアクセスするまでやりたかったですが、いったんここまでですね。