LinuxにCloudFlareWARPをインストールする(Slackware)
How to install Cloudflare WARP with Linux
はじめに
最近、手元の環境でCloudflare WARPを使いたい場面があったのですが、公式のLinux向けクライアントはUbuntu/Debian系やRHEL系といったメジャーなディストリビューションしかサポートしていませんでした。
今回は、公開されていないCloudflare WARPのRPMリポジトリを直接解析してパッケージを取得し、Slackware用に変換してインストールするという方法を試してみました。非対応OSでも工夫次第で動かせるという記事になっています。
RPMパッケージのパスを特定する
CloudflareのRPMリポジトリは、ブラウザ等でURLを叩いてもインデックスが表示されない仕様になっています。そのため、パッケージマネージャ(dnfやyum)が裏で行っているように、リポジトリのメタデータ(repomd.xml)を手動で読み解いて、RPMの正確なファイルパスを特定する必要があります。
まずは、リポジトリの設定ファイルを取得してベースとなるURLを確認します。
$ wget https://pkg.cloudflareclient.com/cloudflare-warp-ascii.repo
$ cat cloudflare-warp-ascii.repo
[cloudflare-warp-stable]
name=cloudflare-warp-stable
baseurl=https://pkg.cloudflareclient.com/rpm
enabled=1
type=rpm
gpgcheck=1
gpgkey=https://pkg.cloudflareclient.com/pubkey.gpg
これで、baseurl=https://pkg.cloudflareclient.com/rpm であることがわかります。
次に、このURLを元にリポジトリのメタデータ(repomd.xml)を取得します。ここには、各種パッケージ情報のリストがどこにあるかが記載されています。
wget -q -O - "https://pkg.cloudflareclient.com/rpm/repodata/repomd.xml"出力されたXMLの中から、primary.xml.gz のハッシュ値が含まれたパス(例: repodata/2d83a15e...primary.xml.gz)を探し出してコピーします。
さらに、そのハッシュ値を使って primary.xml.gz 本体をダウンロードし、中身を展開して実際のRPMファイル名を抽出します。
※<HASH>はrepomd.xmlで取得したものに変更してください
wget -q -O - "https://pkg.cloudflareclient.com/rpm/repodata/<HASH>-primary.xml.gz" | zcat | grep -o 'href="[^"]*\.rpm"'href="aarch64/cloudflare-warp-2026.4.1350.0.aarch64.rpm"
href="x86_64/cloudflare-warp-2026.4.1350.0.x86_64.rpm"これでようやく、隠されていたパッケージのフルパスが判明しました。今回は x86_64 版を使用するので、そのままwgetでダウンロードします。
wget "https://pkg.cloudflareclient.com/rpm/x86_64/cloudflare-warp-2026.4.1350.0.x86_64.rpm"Slackware形式への変換とインストール
SlackwareはRPMを直接インストールできないため、標準で用意されている rpm2tgz コマンドを使用してSlackwareネイティブのパッケージ形式(.tgz)に変換します。
rpm2tgz cloudflare-warp-2026.4.1350.0.x86_64.rpm変換が完了すると、同じディレクトリに cloudflare-warp-2026.4.1350.0.x86_64.tgz が生成されます。
あとはこれをインストールするだけです。
sudo installpkg cloudflare-warp-2026.4.1350.0.x86_64.tgzちなみに、Debian系でRPMしかないソフトウェアを入れたい場合は alien コマンド、Arch Linuxなどであれば rpmextract 等を使えば、同じような手順でインストールが可能です。
初期設定と接続確認
無事にインストールできたら、WARPのバックグラウンドデーモンを起動します。
sudo warp-svc &※もしパスが通っていない場合は、find / -name "warp-svc" 2>/dev/null で実行ファイルの場所を探してください。
初回のみデバイスの登録が必要なので、以下のコマンドを実行します。利用規約への同意を求められたら y を入力します。
warp-cli registration new
warp-cli connect正しく接続されているかを確認するため、Cloudflareのトレース用エンドポイントを叩いてみます。
curl https://www.cloudflare.com/cdn-cgi/trace
fl=767f10
h=www.cloudflare.com
ip=2a09:bac5:...
colo=KIX
warp=on
loc=JP出力内に warp=on と含まれており、colo が KIX(大阪)や NRT(成田)など最寄りのデータセンターになっていれば成功です。
接続を中断・デーモンの停止をしたいときは以下のコマンドを実行します。
# 切断する
warp-cli disconnect
# デーモン停止
sudo pkill warp-svcアップデートと運用について
手動で強引に入れているため、新バージョンが出ても自動アップデートはされません。アップデートの際は、再度 repomd.xml の解析から行い、古いパッケージを削除してから新しいものを入れ直す必要があります。
# インストール済みパッケージ名の確認と削除
ls /var/log/packages/ | grep cloudflare
sudo removepkg cloudflare-warp-2026.4.1350.0.x86_64手動管理の手間は増えますが、手順さえ確立してしまえばシェルスクリプト化して自動化することもできそうです。
まとめ
以上、SlackwareにCloudflare WARPをインストールしてみたという記事でした。
公開されていないURLをXMLから読み解いてバイナリを引きずり出すという作業は、少し手間ではありますが、やり方さえわかれば、どのOSでも簡単にインストール可能だと思います。
OSが非対応と書かれていても、依存関係さえどうにかなれば力技で動かせてしまうのがLinuxの面白いところです。他のマイナーなディストリビューションを使っている方も、もし使いたいツールがRPMやDEBでしか配布されていなかったら、諦めずに試してみてもらえたらなと思います。
おわり
参考URL