前回:自宅用VPNはOPENVPNが最適解か1 サーバ構築編 - paloma blog
OPENVPNサーバが構築できましたのでスマホからアクセスできるようにします。
まずは手順に沿ってOPENVPN Connectをインストール。
私はAndroid使ってます。
通信フローはこんな感じです。
ovpnファイルの作成
OPENVPN Client用のファイルです。
ここに設定や証明書がひとまとめになるようです。
クライアント証明書周りを作成用フォルダへ移動。
masashi@PC-ubuntu:~/client-configs$ tree . ├── base.conf ├── files ├── keys │ ├── ca.crt │ ├── client1.crt │ ├── client1.key │ └── ta.key └── make_config.sh
make_config.shは手順のものをコピペで、パスを少し編集しました。
スクリプトの引数がファイル名になります。
masashi@PC-ubuntu:~/client-configs$ sudo bash make_config.sh client1
これで作成完了。
masashi@PC-ubuntu:~/client-configs$ ls -l files/ 合計 12 -rw-r--r-- 1 root root 11805 6月 4 11:35 client1.ovpn
ovpnファイル、触るまでは中身が想像つきませんでしたがただの設定と証明書がまとまっているだけなんですね。
スマホへインポート
作成したovpnをスマホへインポートします。
USBからだとファイラの権限の問題かインポートできなかったのでGoogleドライブからインポートしました。
しかし、インポート失敗。
証明書のパースエラーのメッセージのようですが、これもフォーラムを見ると証明書がファイルに書かれている場合は configファイルから証明書ファイルの情報を抜かないといけないみたいです。
ovpn作成用のclient.confを修正。
スマホ用に接続先のIPも修正してます。
masashi@PC-ubuntu:~/client-configs$ diff -u /etc/openvpn/client/client.conf ./base.conf --- /etc/openvpn/client/client.conf 2022-06-04 04:42:36.750973040 +0900 +++ ./base.conf 2022-06-04 17:06:59.211034803 +0900 @@ -39,7 +39,7 @@ # The hostname/IP and port of the server. # You can have multiple remote entries # to load balance between the servers. -remote localhost 443 +remote 118.xxx.xxx.xxx 443 ;remote my-server-2 1194 # Choose a random host from the remote @@ -85,9 +85,9 @@ # a separate .crt/.key file pair # for each client. A single ca # file can be used for all clients. -ca ca.crt -cert client1.crt -key client1.key +;ca ca.crt +;cert client1.crt +;key client1.key
接続
ファイルを作り直して再度インポート。
今回は成功しました。
そのまま接続しますか?にチェックをつけて接続してみます。
ルータはNAT定義設定済みです。
OK。接続できました!
※先ほどの失敗例とインポートは再現で実施したのでスクショの時間が前後してます。
Wifiをつないだまま接続してしまいましたがグローバルIPに届いているので大丈夫でしょう。
それではFireflyへ接続してみましょう。
SSHフォワーディングと違いLAN環境とおなじアクセスでOKです。
(この時はWifi切って繋ぎ直してアクセスしてますので完全にキャリア経由です。)
OK!見えましたね。
OPENVPN環境構築完了です!
まとめ
スマホからVPN接続とアクセス確認まで完了しました。
配布ルートのチューニングが必要かもしれませんが、これでLXD環境のみならずLAN環境にアクセスできることになります。
外から家の環境に繋いで何でもできますね。
こういう外から繋げられる様にするのがネットワークの領域の面白いところだと思います。