Summary ¶
OPNsense (or pfSense) で cloudflared をインストールするのに手こずったためインストール方法を残す
Topic
OPNsense の公式では cloudflared は FreeBSD で提供されていないが、 FreeBSD.org の ports でバイナリーパッケージが提供されているためこれを使う。 2024/02 現在配布されいてるバージョンは 2023.10 で若干古いのと service 化する rc.d のファイルが古く、 CloudFlare Dashboard で設定を管理できる接続方式に対応していなかったため合わせて対応した。
なお、下記のようなコマンドインストールする場合も 2024/02 現在ではうまくビルドできなかったのでこの方法になった
1
2
3
| opnsense-code ports
cd /usr/ports/net/cloudflared/
make install
|
インストール ¶
OPNsense 24.1 では FreeBSD.conf があるのでこれを使う
1
2
| sed -ie 's/enabled: no/enabled: yes/g' /usr/local/etc/pkg/repos/FreeBSD.conf
cat /usr/local/etc/pkg/repos/FreeBSD.conf
|
/usr/local/etc/pkg/repos/FreeBSD.conf
1
| FreeBSD: { enabled: yes }
|
update cache
検索してみる
1
2
| # pkg search cloudflared
cloudflared-2023.10.0_1 Cloudflare's Argo Tunnel client
|
インストール
1
| pkg install cloudflared
|
認証 ¶
CloudFlare と接続するために証明書のダウンロード認証をする
1
| cloudflared tunnel login
|
Service ファイルを作る ¶
rc.d では名前がかぶると面倒なのでコピー先は /etc/rc.d/cloudflaredd とする
/etc/rc.d/cloudflaredd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| #!/bin/sh
# PROVIDE: cloudflaredd
# REQUIRE: cleanvar DAEMON NETWORKING
#
# Options to configure cloudflaredd via /etc/rc.conf:
#
# cloudflaredd_enable (bool) Enable service on boot
# Default: NO
#
# cloudflaredd_token (str) Tunnel token.
# Default: Required
. /etc/rc.subr
name="cloudflaredd"
rcvar="cloudflaredd_enable"
logfile="/var/log/cloudflared.log"
pidfile="/var/run/cloudflared.pid"
procname="/usr/local/bin/cloudflared"
load_rc_config ${name}
: ${cloudflaredd_enable:="NO"}
: ${cloudflaredd_token:="<Required TOKEN>"}
if [ "${cloudflaredd_token}" = "<Required TOKEN>" ]; then
echo -e "Required: 'cloudflaredd_token' must be set in /etc/rc.conf.d/${name}.\n\n"
echo -e "cloudflaredd_token=\"<Required TOKEN>\"\n"
echo -e "This command part"
echo -e "> sudo cloudflared service install <TOKEN>"
echo -e "cloudflaredd_token=\"<Required TOKEN>\"\n" > "/etc/rc.conf.d/${name}"
exit 1
fi
command="/usr/sbin/daemon"
command_args="-o ${logfile} -p ${pidfile} -f ${procname} --no-autoupdate tunnel run --token ${cloudflaredd_token}"
run_rc_command "$1"
|
1
2
| touch /etc/rc.d/cloudflaredd
vi /etc/rc.d/cloudflaredd
|
設定ファイルの配置 ¶
何もしてないと、設定をするように促すようにしたので、それ通り設定
1
2
3
4
5
6
7
8
| root@OPNsense:/etc/rc.d # service cloudflaredd enable
Required: 'cloudflaredd_token' must be set in /etc/rc.conf.d/cloudflaredd.
cloudflaredd_token="<TOKEN>"
This command part
> sudo cloudflared service install <TOKEN>
|
Dashboard でトンネルを作ると、続きに sudo cloudflared service install
から始まるコマンドが表示されるがこれは cloudflared がネイティブで対応している OS の場合 service ファイルの作成と登録を実施してくれるが、、 FreeBSD は恩恵に預かれないので後半の token を下記のファイルに貼り付けて保存する。
1
| vi /etc/rc.conf.d/cloudflaredd
|
/etc/rc.conf.d/cloudflaredd
1
| cloudflaredd_token="<Required TOKEN>"
|
起動と自動起動を設定する。
正しく完了すれば、 Dashboard に表示されるはず
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| root@OPNsense:/etc/rc.d # service cloudflaredd enable
cloudflaredd enabled in /etc/rc.conf
root@OPNsense:/etc/rc.d # service cloudflaredd status
cloudflaredd is not running.
root@OPNsense:/etc/rc.d # service cloudflaredd start
Starting cloudflaredd.
root@OPNsense:/etc/rc.d # service cloudflaredd status
cloudflaredd is running as pid 32664.
root@OPNsense:/etc/rc.d # service -e | grep cloudflaredd
/etc/rc.d/cloudflaredd
|