外部のサービスに依存する形で自宅鯖を運用すると、そのサービスが停止した時に大変に辛いという経験が過去にあって、可能な限り依存しないようにしている。東日本大震災の時に家族の安否を最初に確認できた手段が自宅鯖経由のメールで、電話は輻輳しててアウト、ISPのメールやメッセージサービスでも連絡は取れなかった。
で、自宅鯖のリモートメンテをどうするかという話に派生する。Tailscaleが便利なのは知っているけれど、可能な限り自己完結するようにしたいという考え方からはどうしても採用できない。一方で、sshのポート番号はずらした上に、外からはアクセスできないようにしてあり、VPNを利用するようにしている(今回調べていたら、WireGuardが良いっぽいので後日採用予定)。この「自己完結」というのは大事で、電力はポタ電+太陽光だし、auひかりが切れてもStarlinkが使えるようにしてある、と。データのバックアップはWASABIに飛ばしてるが、数日間使えなくても支障は無い。
ということを考えた時に、自宅鯖の時刻同期は外部のNTPサーバに依存してるなぁと思い当たった。GPSレシーバでPPS対応してれば、Stratum 1じゃーんと思って調べたところ、USBで接続してポン!で使えるものはほぼ見当たらず、ArduinoとかRasPiで工作しないとならないっぽい。大して高いものではないけれど、面倒くさいなぁと思いながら、ふと、そのGPSレシーバの設置場所を考えていたら、そもそも拙宅にはStarlinkがあるのに、なんでGPSレシーバを追加しないとならないんだ?と思い当たり。
あるじゃんよー、Starlinkの中にNTPサーバがw
問題はネットワークで、拙宅のLANは192.168.1.0/24、WiFiは192.168.50.0/24、StarlinkのWiFiは192.168.2.0/24で吹いており、StarlinkのNTPサーバはルータ内の192.168.100.1で喋ってる。メインの自宅鯖はWiFiモジュールがないので、RHEL9が入ってるミニPCのWiFiモジュールを有効にして、192.168.100.1へのデフォゲを192.168.2.1に、でchronyの設定をしたと。さらにfirewall-cmdでntpをadd-serviceすれば、StarlinkのNTPサーバが上位にあるNTPサーバが出来上がると。
これでStarlinkの電源が入っていて衛星を捕まえている状態なら、時刻同期が保証できるようになりました。
