【ntpsec】geminiさんに聞いてみよう

監視カメラを運用しているので、そこで動かしているZoneMinderにはできるだけ正確な時計を与えてやらないといけない。

Raspberry Pi 4には、USB接続のGPSを接続していて、それをgpsd経由でntpsecにデータを渡してやり、GPSから時刻データを得るようにしている。

サーバー負荷に応じて、GPSから得た時刻データを調整するのだが、見ているウチに「あれ、進めるんだっけ?遅らせるんだっけ?」と混乱してくるので、AIのgeminiさんに丸投げ(^^:

ntpq -pn の結果から判断すると、適切な time1 の設定値は 0.077(またはより正確には 0.077251)となります。
計算の根拠
NTPにおける offset(オフセット)の単位はミリ秒(ms)です。
現在の設定(time1 0.106)において、基準となる公的機関の NICT(日本の標準時サーバー)と、お使いの GPS(SHM(0))の間で以下のズレが生じています。
    • SHM(0) のオフセット: +5.7048 ms (システム時間より 5.7ms 進んでいる)
    • NICT のオフセット: -23.0438 ms (システム時間より 23.0ms 遅れている)

GPS(SHM)を正確な NICT の時刻に一致させるためには、両者の差分である 28.7486 ms5.7048 - (-23.0438))だけ GPS の時間を遅らせる(マイナスする)必要があります。
    • 現在の設定値: 0.106
    • 必要な修正量: -0.0287486
    • 新しい設定値: 0.106 - 0.0287486 = 0.0772514

修正後の設定例
/etc/ntp.conf の該当箇所を以下のように書き換えてください。

この設定値は、USB接続のGPSからデータを取ってくるのに、遅延が発生するので、設定値によって、遅延分の時刻を先に進ませるという趣旨のパラメータ。

なので、設定値を増やすと時計が進むし、少なくすると時計が遅れるという仕組み。

ntpqコマンドで状態を見ると、基準となっているのが、Raspberry Pi 4のシステム時計で、それよりもGPSやNTPサーバーの時刻が進んでいたら正の値で、遅れていると負の値になる。

GPSの値と、基準とするNTPサーバーの値を見ていると、プラスだったりマイナスだったりするので、混乱してくるのだ(笑)

geminiさんに丸投げは楽でいいね 🙂

TP-LINK Tapo C545D ZoneMinderに設定

通常の監視範囲だと死角になっている玄関を自動で追尾してくれる。追尾後、動態検知をしなくなると元の位置へ戻る。

カメラが動くとモーター作動音がするので、敷地に入ってきた柿どろぼうさんは結構ビビるに違いない(笑)

TP-LINK Tapo C545Dはデュアルレンズで、ZoneMinderのモニタ設定は広角とズームでそれぞれ1つずつ設定する必要がある。

広角が常時録画で、ズームはカメラが動態検知して追跡するので、動態検知録画に設定してある。次に挙げるのは弄ったとこだけ。

・C545D(wide)
【general】
Source Type: [remote]
Function: [mocord] ※1
Reference Image Blend: [12.5% (Outdoor)]
【source】
Protocol: [RTSP]
Method: [RTP/RTSP]
Host: [アカウント:パスワード@カメラIPアドレス ※2
Port: [554]
Path: [/stream2] ※3
Capture Resolution (pixels): [640][368] ※4
Use RTSP Response Media URL:☑
【Storage】
Save JPEGs: [disabled] ※5
Video Writer: [encode]
OutputCodec: [h264]
Encoder:[libx264]

※注
1. 常時録画
2. Tapoアプリで作成したアカウント
3. 高画質は /stream1
4. ディスク容量節約で640×368
5. 映像で確認するので、画像は保存しない

・C545D(zoom)
【general】
Source Type: [remote]
Function: [modect] ※1
Reference Image Blend: [12.5% (Outdoor)]
【source】
Protocol: [RTSP]
Method: [RTP/RTSP]
Host: [アカウント:パスワード@カメラIPアドレス ※2
Port: [554]
Path: [/stream7] ※3
Capture Resolution (pixels): [640][368] ※4
Use RTSP Response Media URL:☑
【ONVIF】
ONVIF_URL: [カメラIPアドレス:2020]
Username: [アカウント] ※2
Password: [パスワード] ※2
【Storage】
Save JPEGs: [disabled] ※5
Video Writer: [encode]
OutputCodec: [h264]
Encoder:[libx264]
【control】
Controllable: ☑
Control Type: [ONVIF_camera]
Control Device: [profile_2]
Control Address: アカウント:パスワード@カメラIPアドレス:2020 ※2

※注
1. 動態検知のみ録画
2. Tapoアプリで作成したアカウント
3. 高画質は /stream6
4. ディスク容量節約で640×368
5. 映像で確認するので、画像は保存しない

ZoneMinderでONVIFにより、カメラのpan/tiltは制御できるが、Tapoアプリのzoomはソフトウェア処理なので対応していない。

使った感想としては、ZoneMinderは、検知設定を詰めてないと、動態検知では録画できてない場合があるので、常時録画にしてあるが、Tapo C545Dは割と動態検知がよくできている。

カメラの追尾は車などでは追尾しないが、自転車や歩行者など人と認識できるものは割とすぐ追尾状態になる。従って、ズームカメラが動く時=録画すべき時なので、ZoneMinder側の検知設定を煮詰める必要がない。

夜間は赤外線カメラに切り替わるので、前のRaspberry Pi3 + Webカメラよりはハッキリ見える。

Tapoアプリだと、ライト点灯や音声通話が可能なので、夜間の侵入者への威嚇にも使える。

なんかもう一台欲しくなった(笑)

家のサーバーがクラックされた?

家のサーバーがハングアップして再起動したが、監視カメラWebアプリのzoneminderが古い見た目になり、sshで外からログインしようとすると、

なんてのが出てくる。

# cat /etc/os-release

RETTY_NAME=”Debian GNU/Linux 10 (buster)”

って、OSが古くなっとる!?

よくよく考えてみると、ディスクケースがお陀仏になって、そこから抜き出したハードディスクをUSB変換器で接続してたから、古いハードディスクで再起動しちゃってたんだな。

古いハードディスクを繋いでいた事を完全に失念してて、ちょっとしたオカルト気分を味わったよ (^^;

XSERVER APIでDDNSモドキ

XSERVER からサーバー操作できるAPIのお知らせメールが来ていたので、早速、今まで使っていたツールをそれ用に書き換え。

asahiネットにプロバイダ変更して、IPv6環境になり、XSERVER以外のサーバーにアクセスすると、IPv6のアドレスが記録されちゃうので、file_get_contents()で、明示的にIPv4でアクセスするようにしてある。

次のプログラムは、XSERVERに置いておいて、家のサーバーからアクセスすると、家の回線のIPv4アドレスが分かるやつ。

VPNで家のサーバーに接続する際に、家の回線はIPアドレス固定じゃないので、ルーター再起動したりすると、IPアドレスが変わってしまう。

その為、家のサーバーで、5分おきに ipcheck.php を走らせて、DNS情報と、実際のIPアドレスに相違があるかをチェックしていて、違っていたら、XSERVERのDNSをAPIで変更するようになっている。

【皇紀2686年4月21日追加 ここから】
APIのパラメータはjsonエンコードが必要なので、ソースを変更しました。
【皇紀2686年4月21日追加 ここまで】

【fail2ban】VPSサーバーより狙われる光回線接続

最近、不正アクセスの遮断を調整しているが、VPSサーバーよりも家のサーバーの方がやたら多いのに気がついた。

VPSサーバーが 635件、家が 1,503件と倍以上の不正アクセスがある。

やはり、外に立てたサーバーより、家庭につないだ回線に存在するサーバーの方がセキュリティが甘いから、多いのかな?

適当なIPアドレスの範囲に対して、不正アクセスを試みていると思っていたが、ちゃんと確率の高そうな所へ資源の投入をしてるんだなあ。

まあ、家もVPSもsshdは公開鍵認証で、プライベートIPアドレスのみパスワード認証も許可している設定なので、そもそも総当たりのパスワード破りが最初からできないようにしてあるから、特に心配は無い。

しかし、ログにだらだらと記録されるのがウザいので、臭いにおいは元から断たなきゃダメという事で、接続遮断している 🙂

外も家も同条件のフィルタだが、3日間で4回以上の不正アクセスで1週間接続遮断し、それ以降も2週間以内に同じIPアドレスが不正アクセスして来たら、再犯ルールで1年間接続遮断するようにしている。

不正アクセスのパターンを見ていると、2~3回で止め、時間を置いて再び繰り返すという明らかに fail2ban の設定を意識した不正アクセスをして来ているので、判定期間を長めに取って、再犯ルールも追加したという次第。

ルーターは接続を通すポートのみポート変換機能で一々登録して通しているが、面倒くさがりだと、DMZとしてサーバー1台丸々外から見える状態にしてるってのもあるだろう。

踏み台にされて警察にお呼ばれする前に、厳密な設定の運用にした方がいい象。

【Raspberry Pi4】dovecot設定

Rasberry Pi OS liteのメールサーバーdovecotで、またパラメータが変わってて、Maildirの設定にちょっと苦労した。

mail_location が廃止されたので、namespace で解決するのが正しいようだ。

情報源: Namespaces | Dovecot CE

INBOX は /var/mail/noizumi で、他のフォルダ類は Maildir形式の /home/noizumi/Maildir に保管してるので先の設定にした。

昔、mbox 形式だと、メールフォルダの階層化ができなくて、フォルダ削除して Trash/delFolder みたいな状況になると、削除できなくなるってのがあったので、Maildirにしている。

今、mbox はフォルダの階層化できるようになってるんだろうか? AIさんに聞いてみる 🙂

はい、IMAPを利用している場合、mbox形式のメールボックスであってもフォルダの階層化(サブフォルダ作成)は可能です。

技術的には、ThunderbirdなどのIMAP対応メールクライアントを使用してサーバー上にフォルダを作成・管理することで、階層構造が実現されます。

あー、mboxはサーバー側にディレクトリを掘らずにファイルしか配置できないから、ファイル名に区切り文字で階層を表してる。

つまり、メールクライアントによっては、うまく判別できずに階層構造にならないって事もあり得るんだな。

じゃあ、Maildir形式の方がいいな。

新しく買ったHDDケース

ORICO 9928RU3を買った。

支那製だが、レオナルド・ディカプリオのカードのCMとは関係ない 🙂

どうせ日本メーカーでも、中身は支那製だし、日本メーカーと同価格帯なら、日本企業のマージン分、中の品質が高い可能性がある。

買って、大爆死する可能性があるので、今まで買った製品に触れなかったけど、アルミ筐体で冷えやすく、従来品よりファンの音もうるさく無く、速度も速いので、中々良い。

Amazonだと、同じ製品で、もっと安いページもあるが、低評価レビューがあって、欠陥品ロットがまとめられたページの気がするので、高い方のページでこうにう。

RAID1を構成するのに、この手の製品は今まで使っていたRAID1のデータの入ったディスクを継承できないので、新規にWD20EARZ-ECを2つこうにう。
昔買った値段より1.5倍くらいになっとるね 🙁

新規RAID1のディスクを構築してから、今まで使ってたディスクの1本をGREENHOUSEのIDE/SATA→USB2.0の変換コネクタを繋いで、必要なデータをコピーした。

新しく買ったディスクは、データ転送速度が180MB/s だそうなので、HDDケースに入れて、速度を計ってみる。

「UASP対応」と謳ってるだけあって速い。
元のディスクスピードの180MB/sを上回ってるのは、RAID1は読み出しに関しては2台のディスクから読めるので、その分高速化されるのだろう。

果たして耐久性はいかがなものか。
せめてハードディスクより先に逝って欲しくないなあ。

【Raspberry Pi4】家のサーバー復旧ちう

HDDケースぶっ壊れた。

という事で、Raspberry Pi Imagerを取ってきて、Raspberry Pi OS Lite 64bitをRAID1のHDDケースにインストール。

どうせ、GUI使わないので、X Window System系が入ってないのにした。

割と短時間で終了し、HDDが2TBなのに、ディスクイメージのサイズで限定され、容量が少ないなんて事もなく、フルに2TBを使っていた。

最近のディストリビューションは、swapパーティション切らないのね。

後、SoftEther VPN serverを使う上で、ネットワークでbridgeデバイスを使う必要がある。

今までのUbuntu 24.04LTSでの構築経験上、desktop版は正常に作成できず、server版だとうまくいくというのがあって、NetworkManagerベースは避けたかった。

で、Raspberry Pi4(以下RP4)にHDDを繋ぎ替えて起動すると、ルーターでRP4のMACアドレスに192.168.11.254を割り当てていたので、DHCPでIPアドレス設定はできたから、これもサクッとssh接続できた。

bridgeデバイスを作成する上で、Ubuntuのserver版だと、netplanのスクリプト書いて、netplan apply でサクッと作れていた。

しかし、NetworkManagerが生きてると、bridgeにeth0とtap_softetherの2つをぶら下げないといけないのに、eth0しか無いという状態にされる。

恐らく、NetworkManagerの不具合だと思われるが、bridgeに2つのslaveぶら下げてて、1つしか有効にならないなんて事例が無いw

netplanとNetworkManagerの統合を進めているらしいが、Raspberry Pi OSのベースのdebian 13では、よりNetworkManager寄りになっているようだ。

という事で、

無事に br0 デバイスができた 🙂

あと、やった事色々。

apt install fail2ban tcpdump apache2 telnet  default-jre-headless php php-xml php-curl php-mbstring samba smbclient certbot nslookup bind9-dnsutils python3-certbot-apache

a2ensite 000-default-le-ssl
a2enmod userdir
a2enmod rewrite
a2enmod ssl
a2enmod auth_digest
a2enconf auth_digest

そして、コピー元ディスク見ていて、メールサーバーの postfix がインストールされてて、設定もやってるんだけど、何でだったのかと暫く考える……

あー、SPFの設定で、silverfox.noizumi.orgを送信ホストとして登録したくなかったから、家のサーバーのメールもirc.noizumi.orgへ投げるようにしたんだっけ。

あと、zoneminderとかあるけど、家の玄関リフォームしたせいで監視カメラ撤去したし、その間にプロバイダ変更したから、監視カメラのWiFi設定変えないといけないし、面倒だから、後回しにして原神やろう 🙂

新しく買ったHDDケース

Wineで原神

REDMAGIC 10 Pro買ったので、ゲーム動作テストによく使われる原神とやらを入れてみるかと思ったが、PC版があるので、そいつをまずインストール。

どうせなら、LinuxでWindowsプログラムが動かせるWineを使ってやってみようとインストール開始。

苦戦させられると思いきや、あっさりインストーラーの画面が出た。

 

 

何度も落ちるけど、「ダウンロード再開のおかげで最後までリソースが読み込めた。

 

 

ゲーム画面が出るまでが、全画面表示待ちでフリーズしたかと思ったが、根気よく待つとちゃんと開始され、それなりに遊べる。

ただ、場面によっては、レンダリングがうまく動かない時があるとか、やっぱり10年前のマシンでは100%とはいかんな。