サンドボックス環境の構築メモ
Lastmod: 2023-06-23
  1. Cloudflare tunnelをローカルで作成する
  2. Cloudflaredを対象マシンにインストールする
  3. クレデンシャルを対象マシンに転送、設定ファイル記述、起動
  4. ローカルからアクセス

Cloudflare tunnelをローカルで作成する

すでにcloudflaredでログインは完了しているものとする。

cloudflared tunnel create <NAME>

あとで転送する、~/.cloudflared/<ID>.jsonというようなファイルが作成される。<ID>[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}の形式。

Cloudflaredを対象マシンにインストールする

rootで実行。rootではない場合、dpkgsudoつける。

wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb && dpkg -i cloudflared-linux-amd64.deb

クレデンシャルを対象マシンに転送、設定ファイル記述、起動

クレデンシャルの転送先は /root/.cloudflared/<ID>.json、設定ファイルは以下のように書いて /root/.cloudflared/config.ymlに設置

tunnel: <ID>
credentials-file: /root/.cloudflared/<ID>.json

ingress:
  - hostname: hoge.example.com
    service: http://localhost:80
  - hostname: fuga.example.com
    service: ssh://localhost:22
  - service: http_status:404 # 必須

また、ローカルでDNSとtunnelの結びつけを行っておく。

cloudflared tunnel route dns <id> <hostname>

最後に起動する。

sudo cloudflared service install
sudo systemctl start cloudflared
sudo systemctl enable cloudflared

ローカルからアクセス

ProxyCommandでcloudflared accessを介さないといけないのが唯一の落とし穴。

Host sandbox-c
    HostName fuga.example.com
    User <USER>
    IdentityFile ~/.ssh/<PRIVATE KEY>
    ProxyCommand cloudflared access ssh --hostname %h