LoginSignup
3
2

Debian 11 (bullseye) Linux に Cloudflare WARP を入れて接続体験を可視化する

Last updated at Posted at 2023-12-22

目的

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 エージェントによる自動インストールを有効化した上で、以下のコマンドを実施します。

image.png

cd /usr/local/share/ca-certificates
sudo mv managed-warp.pem managed-warp.crt
sudo update-ca-certificates

サービストークン作成

UI によるインタラクティブな認証プロセスを省略したいため、サービストークンを作成します。

image.png

image.png

image.png

Device enrollment permissions でサービストークンを許可

作成したサービストークンを使ってアカウント認証が許可されるように Device enrollment permissions を設定します。

image.png

image.png

image.png

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 通信がつながらなくなってしまいます。

image.png

接続確認

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

まとめ

このようにして世界各所にばら撒くことができました。

image.png

これらの Cloudflare WARP 端末に対して HTTP や Traceroute のテストを仕込むことで、各端末での接続体験を可視化することができます。

image.png

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2