cloudflare TunnelsがRTX1200だと使えないときの対処法
初投稿なので自己紹介
どうもこんにちは。私はuuといいます!
自宅でサーバー運営したりしてる学生です!
よろしくお願いいたします。
ことの経緯
あー業務用ルーターほしい....せや!RTX1200買お!
ってことで、ヤフオクで買いましたRTX1200
移行作業もできてcloudflare Tunnelsでサイト公開しようとしたら
systemctl [start cloudflared.service] returned with error code exit status 1 due to: Job for cloudflared.service failed because the control process exited with error code.
See "systemctl status cloudflared.service" and "journalctl -xeu cloudflared.service" for details.
ええ何このエラー...
環境
proxmox仮想環境
ubuntu22.04LTS
原因究明
まず、cloudflared.serviceのステータスを確認してエラーの概要を把握することにしました
下のコマンドでわかります
status cloudflared.service
そしたら
May 28 00:32:58 CT106 systemd[1]: cloudflared.service: Main process exited, code=exited, status=1/FAILURE
May 28 00:32:58 CT106 systemd[1]: cloudflared.service: Failed with result 'exit-code'.
May 28 00:32:58 CT106 systemd[1]: Failed to start cloudflared.
CloudflaredTunnels(cloudflared)サービスが起動に失敗し、code=exited, status=1/FAILURE というエラーが表示されているっぽい
もうすこしエラーメッセージの詳細を確認する
journalctl -xeu cloudflared.service
そしたらこう出てきた
-- Subject: Unit process exited
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- An ExecStart= process belonging to unit cloudflared.service has exited.
--
-- The process' exit code is 'exited' and its exit status is 1.
May 28 00:33:50 CT106 systemd[1]: cloudflared.service: Failed with result 'exit-code'.
-- Subject: Unit failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- The unit cloudflared.service has entered the 'failed' state with result 'exit-code'.
May 28 00:33:50 CT106 systemd[1]: Failed to start cloudflared.
-- Subject: A start job for unit cloudflared.service has failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- A start job for unit cloudflared.service has finished with a failure.
--
-- The job identifier is 14578 and the job result is failed.
うーんわかんない....
すべてのログを見てみる
journalctl -u cloudflared.service -b
コマンドを実行したらこう出てきた
May 28 00:10:47 CT106 systemd[1]: Starting cloudflared...
May 28 00:10:47 CT106 cloudflared[770]: 2024-05-28T00:10:47Z INF Starting tunnel tunnelID=c1b2c957-77c8-408c-83c3-7>
May 28 00:10:47 CT106 cloudflared[770]: 2024-05-28T00:10:47Z INF Version 2024.5.0
....(省略)
May 28 00:10:47 CT106 cloudflared[770]: 2024-05-28T00:10:47Z INF Tunnel server stopped
May 28 00:10:47 CT106 cloudflared[770]: 2024-05-28T00:10:47Z ERR Initiating shutdown error="Couldn't resolve SRV re>
May 28 00:10:47 CT106 cloudflared[770]: 2024-05-28T00:10:47Z INF Metrics server stopped
May 28 00:10:47 CT106 cloudflared[770]: Couldn't resolve SRV record &{region1.v2.argotunnel.com. 7844 1 1}: lookup >
May 28 00:10:47 CT106 systemd[1]: cloudflared.service: Main process exited, code=exited, status=1/FAILURE
ログメッセージによると、cloudflaredが起動に失敗する原因は Couldn't resolve SRV record というエラーっぽい。
cloudflaredが特定のDNSレコードを解決できなかったとのこと
RTX1200の設定からなんとかできないだろうか
ちゃんと設定してたのになぜだろうと思って調べてみた
ヤマハのルータは、DNS問い合わせを中継する、DNSリカーシブサーバという機能を持っていて、
普通に設定するとユーザーはDNSリカーシブサーバを利用することになる。
ほとんどのケースでは、それほど問題にはならないけど、
最近はこの機能では名前解決できないケースも増えてきている。
# なぜ最近問題になってきてるのか
ヤマハのDNSリカーシブサーバ機能は、TCPによる名前解決をサポートしていない。
通常はDNSによる名前解決はUDPを使うのでそんなに問題にはならないんだけど、最近ではTCPによる名前解決が増えている。
なのでうまく繋がらなかったり名前解決に時間がかかるケースが増えてきている。
とのこと。
じゃあどうすればいいのかというと、DHCPのDNSをクラウドフレアのDNSなどだけに固定すればよい
dhcp scope option 1 dns=1.1.1.1,1.0.0.1
DNS設定して固定してる人は?
192.168.100(RTX1200のIP)をDNSサーバーとして設定してる人が多いと思うが
DHCPと同じく1.1.1.1と1.0.0.1にすればok
ubuntuでのやり方は
sudo vim /etc/resolv.conf
# --- BEGIN PVE ---
search local
# --- END PVE ---
nameserver 1.1.1.1
nameserver 1.0.0.1
これでcloudflare起動してみたら無事起動した!
RTX1200に対しておもったこと
ホームゲートウェイよりネット速度も速くなっており、まあまあ優秀だと思いました。
具体的には200mbpsぐらいから500mbpsになりました。
(ファームウェアアップデートしないと遅いのでそこは注意)
※私の回線は1Gbpsです
最後に
皆さんもRTX1200などを取り入れてDNSには気を付けながら逸般の御家庭になりましょう!
(私はまだ一般だと思いますが..())
追記
RTX1200も事情でDNSサーバー設定にしたい!という場合は
DHCP
dhcp scope option 1 dns=1.1.1.1,1.0.0.1,192.168.100.1
# --- BEGIN PVE ---
search local
# --- END PVE ---
nameserver 1.1.1.1
nameserver 1.0.0.1
nameserver 192.168.100.1
こうすればよい