Open5
OPNsense で Cloudflare Tunnel を使う
OPNsense に cloudflared を入れる
# opnsense-code ports
# cd /usr/ports/net/cloudflared/
# make install
ソースコードからビルドするので結構時間がかかる。
アップデートしたいときはこうする。
# opnsense-code ports
# cd /usr/ports/net/cloudflared/
# make clean
# make reinstall
cloudflared にログインする
以下のコマンドを実行して、表示されたURLにブラウザでアクセスする。
# cloudflared tunnel login
Please open the following URL and log in with your Cloudflare account:
https://dash.cloudflare.com/argotunnel?callback=https%3A%2F%2Flogin.cloudflareaccess.org%2F*******************
Leave cloudflared running to download the cert automatically.
You have successfully logged in.
If you wish to copy your credentials to a server, they have been saved to:
/root/.cloudflared/cert.pem
トンネルを作成する
アカウントにトンネルが作成され、接続情報が格納された json ファイルが /root/.cloudflared/
に保存される。
# cloudflared tunnel create <your-tunnel-name>
Tunnel credentials written to /root/.cloudflared/<your-tunnel-UUID>.json. cloudflared chose this file based on where your origin certificate was found. Keep this file secret. To revoke these credentials, delete the tunnel.
Created tunnel <your-tunnel-name> with id <your-tunnel-UUID>
json ファイルの中身はこんな感じ
{
"AccountTag": "cloudflareにログインした直後のURLに含まれる文字列",
"TunnelSecret": "base64エンコードされたシークレット",
"TunnelID": "トンネルのUUID"
}
ダッシュボード管理のトンネル vs ローカル管理のトンネル
Cloudflare Tunnel を作成するには、
- Zero Trust ダッシュボード 上で Access > Tunnels > Create a tunnel
- コマンドラインで
cloudflared tunnel create <your-tunnel-name>
の 2 種類の方法がある。前者の方が ingress をブラウザから設定できるので便利。後者の方は ingress をテキストファイル or コマンドライン引数で設定する必要がある。
便宜上、前者をダッシュボード管理、後者をローカル管理と呼ぶことにする。
ローカル管理のトンネルも、Zero Trust ダッシュボードから操作することでダッシュボード管理に変更することができる。ただし、この変更は不可逆なので注意されたし。
今回 OPNsense で作成したトンネルもダッシュボード管理に変更しておく。
cloudflared 設定ファイルの作成
以下の内容で /root/.cloudflared/config.yml
を作成する。<your-tunnel-UUID>
は実際のトンネルの UUID に置き換える。
/root/.cloudflared/config.yml
tunnel: <your-tunnel-UUID>
credentials-file: /root/.cloudflared/<your-tunnel-UUID>.json
サービスの設定
以下のコマンドを実行して /etc/rc.conf.local
に設定を追記する。
# echo 'cloudflared_conf="/root/.cloudflared/config.yml"' > /etc/rc.conf.local
# echo 'cloudflared_mode="tunnel run"' >> /etc/rc.conf.local
これらの変数は /usr/local/etc/rc.d/cloudflared
によって読み取られる。
サービスの有効化と起動
# service cloudflared enable
# service cloudflared start
トンネルが正常に繋がっているかどうかは Zero Trust ダッシュボードから確認できる。