先日構築した自宅ラボにFirefly III、Pi-holeなどを移植したのでいよいよ運用が始まりました。
こう揃ってくると出先からもアクセスしたいところです。
家のインターネット環境ではTCPのOpenVPNがやりやすいのでpfSenseで環境を作成します。
OpenVPNサービスの作成
OpenVPNのパッケージで作成したことがあるのですが、pfSenseはウィザードに沿っていくだけでOKです。
公式ドキュメントのほかブログにも作成記事が転がっていますので簡単でした。
自己CA
FW、LB等のレイヤ4以上を扱えるNWアプライアンスには大抵証明書作成機能が備わっているのですがpfSenseもありました。 画面からポチポチしていくだけでOKです。
鍵長だけ4096bitにしてアルゴリズム系は基本デフォルトです。 個人情報部分は隠します。
サーバ証明書
同じ。
Listen設定
待ち受けポート設定。
管理画面とのポート競合の関係でVPNは10443にしました。
スクショはhttpアクセスのままですがこの後httpsに変更してます。
トンネル、配布ルート等。
配布ルートの設定がOpenVPNパッケージでやった時はできなかったのでありがたいです。
Splitトンネルは配布ルート以外はトンネルを使わないので帯域等セーブできます。
(利用者が数人だと効果がないかもしれませんが)
DNS系。自宅のドメインは動いていませんが一応入力しておきます。
Pi-homeもswarm内にインストールしたのでクライアントのDNSサーバ上書き出来たりする?
一応設定しておきます。
AndroidはDNSの変更ができないみたいなので外でも広告ブロック使いたいですよね。
あとはついでにFW、OpenVPN用のルールを追加してFinishです。
ユーザ作成
アクセス用ユーザを作成します。 (これは作っちゃった後だけど)
クライアント証明書
同じ画面から作成できます。 (これも)
.ovpnファイル用拡張パッケージインストール
作成した証明書や鍵は単体ごとかpkcs#12ファイルでしかダウンロードできません。
専用ファイル作成のパッケージを別途インストールする必要があります。
インストール後はアクセス用のIPやドメインを指定して専用ファイルとしてダウンロードできます。 グローバルIPなので一応伏せ。
スマホに投入
OpenVPNの純正アプリにインストール。(割愛)
繋いだところ。
OKです。VPNが繋がりました!
アクセス
ルートが配布されているはずなのでdockerコンテナにアクセスできるでしょうか。
- Firefly III
OK!
- portainer
OK!
(実は事前にローカルIP用のプロファイルで試してますので接続時の時刻と前後してます。)
ちなみにswarm環境なので10.0.1.2にアクセスしても同じコンテナにアクセスできます。
VIPかリバースプロキシを前段に入れてIPをまとめてもいいかもしれませんね。
まとめ
過去にUbuntuでOpenVPN環境を作成したことがありましたが、初めてだったのでコマンドを打ち打ちなんとか作成できました。
今回はpfSense上でサクッと出来てしまいました。
楽だった半面パラメータ系これでいいのかとも思いましたがとりあえず繋がってよかったです。
外出先からもスマホやPCでアクセスできるようになったので引きこもりをやめて外でPCをいじりたいと思います(笑)