OpenWrtでCloudflaredを動かしてみる

ルーター上でCloudflaredを動かしてみたかったのでやってみた

ビルド方法

1. OpenWrtのSDKをダウンロードして解凍

ここからターゲットのSDKをダウンロードして解凍する

自分はGL-MT300N-V2で動かしたいのでhttps://archive.openwrt.org/releases/21.02.0/targets/ramips/mt76x8/openwrt-sdk-21.02.0-ramips-mt76x8_gcc-8.4.0_musl.Linux-x86_64.tar.xzをダウンロードした

2. リポジトリをクローン

packages内にこれgit clone

3. ビルドの準備

次のコマンドを実行してパッケージをインストールする

./scripts/feeds update -a
./scripts/feeds install -a

make menuconfigを実行してExtra packages内のopenwrt-cloudflaredにスペースで*を入れる

4. ビルド

次のコマンドでビルドする

make ./package/openwrt-cloudflared/compile

終わるとbin内にパッケージができる

バイナリだけ欲しい場合

これをクローン

GOOS=linux GOARCH=mipsle GOMIPS=softfloat go build -trimpath -ldflags "-s -w" ./cmd/cloudflaredでビルド

アーキテクチャは必要に応じて変更してください

動かす

バイナリが20MBくらいあるので、exrootで拡張するかパッケージを解凍してtmp等別の場所に入れてうごかすことをおすすめします。

自分は/etc/init.d/cloudflaredを作成して、起動時にバイナリをGithubからダウンロードするようにしました

デーモン化する場合は/root/.cloudflaredの中身を/etc/cloudflaredにコピーする必要があります。

#!/bin/sh /etc/rc.common

START=99
STOP=15

start() {
        # commands to launch application
        if [ ! -e /tmp/cloudflared ];then
                wget https://github.com/minetaro12/openwrt-cloudflared/releases/download/2021.11.0/cloudflared-linux-mipsel -O /tmp/cloudflared
        fi
        chmod +x /tmp/cloudflared
        tmux new-session -s cloudflared-ssh -d "/tmp/cloudflared tunnel --hostname hogehoge.com --url ssh://localhost:22"
}

stop() {
        # commands to kill application
        tmux send-keys -t cloudflared-ssh C-c
        sleep 5
}