OpenVPNって面倒なんですよね。
証明書を使ったりCAを作ったり、プロファイルを作ったり面倒なんですよね。
管理画面が公式から提供されていた。
OpenVPN Access Server という名前(通称 OpenVPN-AS ) で管理画面WebUIが提供されていた。 これで、OpenVPNのVPN管理できるじゃん。
インストールの手順も公式サイトに記述がある。
Setting Up OpenVPN Access Server On Ubuntu
無料フリー版だと2接続(セッション)に限られるが、管理が楽であるなら使ってみても良いかも
準備
アカウント作って、ログイン
フリー版のサブスクリプションを申し込む
ライセンス・キーをコピーして保存しておく
OpenVPN Access Serverをインストールする。
raspiにインストールして試す
ssh raspi-ubuntu
lxc launch ubuntu:22.04 ovpn lxc exec ovpn -- bash -c 'apt update && apt upgrade -y'
lxc へホスト側と同じNICで同じLANをMacVlanで使わせる。
lxc config device add ovpn mvlan0 nic nictype=macvlan parent=eth0 lxc exec ovpn dhclient -v eth1
OpenVpnサーバーのインストール lxc コンテナ内部へ入る。
lxc shell ovpn
必要なパッケージをインストール
apt update && apt -y install ca-certificates wget net-tools gnupg wget https://as-repository.openvpn.net/as-repo-public.asc -qO /etc/apt/trusted.gpg.d/as-repository.asc truncate -s0 /etc/apt/sources.list.d/openvpn-as-repo.list ## arm用 echo "deb [arch=arm64 signed-by=/etc/apt/trusted.gpg.d/as-repository.asc] http://as-repository.openvpn.net/as/debian jammy main" >>/etc/apt/sources.list.d/openvpn-as-repo.list ## x86用 echo "deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/as-repository.asc] http://as-repository.openvpn.net/as/debian jammy main" >> /etc/apt/sources.list.d/openvpn-as-repo.list apt update && apt -y install openvpn-as
日付と言語を設定
dpkg-reconfigure tzdata dpkg-reconfigure locales
APTのURLははOpenVPNにアカウントを作れば見える。
インストールが完了した
初期パスワードなどが表示される。
キーを登録してアクティベーション
OpenVPN利用者アカウントを作る
アカウント名とパスワードを登録する。(離れているので注意)
ネットワークのアクセスを許可する。(VPNを超えてLANネットワークやグローバルにアクセスできるように)
アクセス許可をつけないと、VPNホスト以外に通信ができなかった。
コマンドから管理
コマンドから再起動
systemctl restart openvpnas.service
または、専用コマンドから管理。
/usr/local/openvpn_as/scripts/sacli --help
プロセスが動く
次のようなプロセスが動く
openvpn+ 4793 0.0 1.0 125268 81252 ? S May22 1:42 \_ /usr/bin/python3 -c from pyovpn.cserv.wserv_entry import start ; start() -no -u openvpn_as -g openvpn_as --pidfile /usr/local/open root 4794 0.0 0.6 62096 50168 ? S May22 0:08 \_ /usr/bin/python3 -c from pyovpn.log.logworker import start ; start() root 4823 0.0 0.4 46888 35616 ? S May22 0:00 \_ /usr/bin/python3 -c from pyovpn.sagent.iptworker import start6 ; start6() root 4824 0.0 0.4 46912 35696 ? S May22 0:53 \_ /usr/bin/python3 -c from pyovpn.sagent.iptworker import start ; start() root 4861 0.0 0.0 3620 2276 ? S May22 0:00 | \_ iptables-restore -n openvpn+ 4827 0.0 0.0 9476 7800 ? S May22 0:00 \_ openvpn-openssl --errors-to-stderr --config stdin openvpn+ 4828 0.0 0.0 8940 2900 ? S May22 0:00 | \_ openvpn-openssl --errors-to-stderr --config stdin openvpn+ 4837 0.0 0.0 9208 7496 ? S May22 0:00 \_ openvpn-openssl --errors-to-stderr --config stdin openvpn+ 4839 0.0 0.0 8940 1484 ? S May22 0:00 | \_ openvpn-openssl --errors-to-stderr --config stdin openvpn+ 4845 0.0 0.0 9208 7504 ? S May22 0:00 \_ openvpn-openssl --errors-to-stderr --config stdin openvpn+ 4847 0.0 0.0 8940 1484 ? S May22 0:00 | \_ openvpn-openssl --errors-to-stderr --config stdin openvpn+ 4853 0.0 0.0 9208 7488 ? S May22 0:00 \_ openvpn-openssl --errors-to-stderr --config stdin openvpn+ 4855 0.0 0.0 8940 1484 ? S May22 0:00 | \_ openvpn-openssl --errors-to-stderr --config stdin openvpn+ 4862 0.0 0.0 9356 7808 ? S May22 0:01 \_ openvpn-openssl --errors-to-stderr --config stdin openvpn+ 4869 0.0 0.0 9100 7424 ? S May22 0:01 \_ openvpn-openssl --errors-to-stderr --config stdin openvpn+ 4876 0.0 0.0 9100 7408 ? S May22 0:01 \_ openvpn-openssl --errors-to-stderr --config stdin openvpn+ 4883 0.0 0.0 9100 7424 ? S May22 0:01 \_ openvpn-openssl --errors-to-stderr --config stdin
リッスンポートなどを適宜変更する
iOSなどの接続設定(プロファイル)は自動生成されるので、そのために必要な設定をする。
Hostname or IP Address
が、OVPNプロファイルに設定される名前
Port number:
が、OVPNプロファイルに設定されるポートとこのサーバがリッスンするポート
ここで設定した、サーバー名:ポート(TCP)が、iOSから接続するときのプロファイルになる。(プロファイル生成用とリッスンポートは同じ設定になり、分割した設定ができない)
ポート転送などを行う。
ルーターでポート転送を行う。
ルーターでポート・フォワーディングやDNATをして、接続できるようにする
プロファイルの確認
管理画面(/admin)ではなくユーザー用CWEB画面( / )にアクセスする。
ログインしてプロファイルを取り出す
プロファイルをダウンロードして
中身を確認する
意図したとおりに、接続先アドレスとポートが設定されていたらOK
iOSを準備する
インストールしたサーバにアクセスしてログインして、プロファイルをダウンロード
シェアシート(↑)を開いて、OpenVPNを指定する。
OpenVPNにプロファイルが取り込まれる。
パスワードは、作成したアカウントのパスワードを入れる。
プロファイル追加時にiOSのVPN追加のためiOSのロックパスワードが要求される。
OpenVPNのアプリではなく、iOSの設定(VPN)から接続する方がいいみたい。
速度を試してみる。
Wireguardで 70-80Mbps
OpenVPN経由で20-30Mbps
同条件での速度測定ではなく、WireguardはUDPでOpenVPNはTCPなので、遅いのは仕方ないのですが。それでもスループットは期待したほどでない。。。
docker 版
linuxserver.ioによるDocker版もあります。こちらの方が動かすには楽ちんかもしれない。
ただし、もうメンテナンスされてないので、注意が必要です。私は、lxc で一通り試した後にDockerにしましたが、メンテナンスされてないと気づいて焦ってます。
また、linuxserver.io 版のdocker は compose up するたびに apt install から始まるので、インストールに時間がかかります。カスタマイズして使ったほうが良いでしょう。
sslh と組み合わせ
sshlと組み合わせることで、443/tcp で httpsとOpenVPNを共用することができて便利です。
FWでのVPNの疎通を考えると、問題なく使えるのではないでしょうか。