概要
ルーターを変更せずにVPNを構築する。
対応していないなどルーターでポート解放などが出来ないネットワークにインターネットからアクセス出来るようにngrokを経由してネットワーク内のRaspberry PiのVPNに繋げ、ネットワーク内のPCなどに接続する環境を構築する。
環境
- Raspbian GNU/Linux 11 (bullseye) 2023-05-03
- ngrok version 3.2.2
- PiVPN 4.2.0 (Open VPN 2.4)
手順
PiVPNをRaspberry Piにインストール
$ curl -L https://install.pivpn.io | bash
- インストーラの説明
- 固定IPアドレスが必要ですよと書いてますが、DHCPでも大丈夫です
- DHCPを選択するために <YES>
- ユーザーを選択
- VPNを選択 OpenVPN に変更
-
<YES> に変更
-
TCP に変更
- ポート設定
- ポートの確認
- DNSはGoogleを選択
- 追加のドメインは不要
- IPアドレスはngrokに変更するのでそのままで良い
- クライアントが古い場合にはNoに変えたほうが良い
- デフォルトのままで十分
- 鍵を生成します
- 自動更新の勧め
- 自分で何とか出来ない場合は自動更新しないうように No
- 感謝
- 再起動を勧められますが、アカウントを追加してから
- 10年間有効なアカウントを追加
pivpn add --name *ユーザー名* --password *パスワード* --days 3650
- ~/ovpns/ユーザー名.ovpnを接続するPCにコピーしておく
- 再起動
$ sudo reboot
ngrok
- https://ngrok.comでアカウントを作成
- ここからダウンロード
- 解凍
unzip /path/to/ngrok.zip
- Your Authtokenで自分のトークンをコピーしておく
- サービスを設定 ${Your_Authtoken}には上記でコピーした文字列と入れ替え
/etc/systemd/system/ngrok-ssh.service
[Unit]
Description = ngrok SSH tunnel
After=network.target
[Service]
ExecStart=/usr/local/bin/ngrok --log stdout tcp 443 --authtoken ${Your_Authtoken}
User=pi
Group=pi
Restart=always
RestartSec=60
[Install]
WantedBy=multi-user.target
- サービスの更新、有効化、再起動
$ sudo systemctl daemon-reload
$ sudo systemctl enable ngrok-ssh.service
$ sudo systemctl restart ngrok-ssh.service
OpenVPN
- OpenVPN Clientをダウンロード、インストール
- Endpointsのポート番号をコピー
ngrok-ssh.serviceを再起動するたびに変わります
-
ユーザー名.ovpnを修正
${Endpoints}には上記ポート番号を入れる
- remote xxx.xxx.xxx.xxx 443
+ remote 0.tcp.jp.ngrok.io ${Endpoints}
- 修正した.ovpnファイルをOpenVPN Connectにドラッグ