目的
Debian 11 (bullseye) Linux に Cloudflare WARP を入れて世界各地にばら撒いた上で接続体験を可視化する必要があったので、その時のメモ。
OS バージョン
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
Cloudflare WARP インストール
以下のリンク先にある手順に沿ってインストールできます。
# Add cloudflare gpg key
curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg
# Add this repo to your apt repositories
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list
# Install
sudo apt-get update && sudo apt-get install cloudflare-warp
以下のコマンドでインストールされたバージョンが確認できます。
$ warp-cli --version
warp-cli 2023.10.120
証明書インストール
Cloudflare WARP エージェントによる自動インストールを有効化した上で、以下のコマンドを実施します。
cd /usr/local/share/ca-certificates
sudo mv managed-warp.pem managed-warp.crt
sudo update-ca-certificates
サービストークン作成
UI によるインタラクティブな認証プロセスを省略したいため、サービストークンを作成します。
Device enrollment permissions でサービストークンを許可
作成したサービストークンを使ってアカウント認証が許可されるように Device enrollment permissions を設定します。
MDM ファイル作成
作成したサービストークンを使って自動認証されるように変数定義し MDM ファイルを作成します。
export TEAM_NAME='YOUR_TEAM_NAME'
export CLIENT_ID='YOUR_CLIENT_ID'
export CLIENT_SECRET='YOUR_CLIENT_SECRET'
cat << EOS | sudo tee /var/lib/cloudflare-warp/mdm.xml
<dict>
<key>organization</key>
<string>$TEAM_NAME</string>
<key>service_mode</key>
<string>warp</string>
<key>onboarding</key>
<false />
<key>switch_locked</key>
<false />
<key>auto_connect</key>
<integer>0</integer>
<key>auth_client_id</key>
<string>$CLIENT_ID</string>
<key>auth_client_secret</key>
<string>$CLIENT_SECRET</string>
</dict>
EOS
SSH 接続元は Split Tunnel しておく
リモートから SSH ログインしている Linux サーバーに Cloudflare WARP を入れる場合には、SSH 接続元の IP アドレスは Split Tunnel しておきましょう。
そうしないと Cloudflare WARP が接続された途端に SSH 通信がつながらなくなってしまいます。
接続確認
MDM ファイルが作成された時点で自動で読み取られるため、そのまま warp-cli connect
により接続できます。
$ warp-cli get-organization
YOUR_TEAM_NAME
$ warp-cli status
Status update: Disconnected. Reason: Manual Disconnection
Success
$ warp-cli connect
Success
$ warp-cli status
Status update: Connected
Success
$ warp-cli disconnect
Success
$ warp-cli status
Status update: Disconnected. Reason: Settings Changed
Success
まとめ
このようにして世界各所にばら撒くことができました。
これらの Cloudflare WARP 端末に対して HTTP や Traceroute のテストを仕込むことで、各端末での接続体験を可視化することができます。