WSLでX11 GUIを使う
Windows 11 の WSL になれば、X サーバなど準備しなくても動くようになるんだけどね。WSLのPythonでGUIアプリを動かすにはどうすればいいかと試してみた。
XcXsrv を入れてあったけど、面倒で環境作ってなかった。改めて X関係のソフトを入れてみた。
$ sudo aptitude install x11-apps fonts-ipafont inkscape gimp tgif $ export DISPLAY=192.168.xx.yy:0.0 $ xeyes
GIMPとかInkscapeとかGoogle Chromeなども入れてそれなりに上手く動くけど、emacs が上手く動かないな…
ntpが正しく動かなくなった
ntp サーバが正しく動かない
NTPが正しく動いていない。nagios で、check_ntp_peer コマンドにて、NTP サーバの動作を検証しているが、
# /usr/lib/nagios/plugins/check_ntp_peer -H 127.0.0.1 NTP CRITICAL: Server not synchronized, Offset unknown|offset=0.000000s;60.000000;120.000000;
にて、同期がとれていないとのメッセージ。いろいろと、/etc/ntp.conf を触ってみるが、うまく動いていない。
ntp プロセスを確認すると、
# ps ax | grep ntp 9999 ? Ssl 0:00 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -c /run/ntp.conf.dhcp -u 122:130
となっていて、設定ファイル /etc/ntp.conf を参照せずに、/run/ntp.conf.dhcp を読み込んでいる。この設定ファイルでは、dhclient で DHCP にて IP アドレスをもらう際に、ntp-server が指定されていたら、それを使うための設定らしい。じゃあ、この /run/ntp.conf.dhcp を作っているのはだれ?となる。
NetworkManager が原因
色々と確認したら、NetworkManager が原因のようだ。NetworkManager が管理しているデバイスだと、上記の余計な設定をしてくれるらしい。時期的には、Debian/bookworm に切り替えて、普通に upgrade したら、NetworkManager の機能が増えたんだろう。
eth0 を NetworkManager の管理から外すと無事に動き出す
ということで、NetworkManager が eth0 の設定を触らないようにさせる。
((( /etc/systemd/network/eth0.network で固定アドレスを割振る設定 ))) [Match] Name=eth0 [Network] Address=192.168.xx.2/24 Gateway=192.168.xx.1 ((( /etc/NetworkManager/conf.d/99-unmanaged-devices.conf ))) [keyfile] unmanaged-devices=interface-name:eth0 ((( NetworkMangaerを再起動 ))) # systemctl reload NetworkManager ((( NetworkManagerの確認 ))) # nmcli device status DEVICE TYPE STATE CONNECTION eth0 ethernet 管理無し -- lo loopback 管理無し -- ((( ntpの起動状態を確認 ))) # ps ax | grep ntp 9999 ? Ssl 0:00 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 122:130
ということで、無事に eth0 が NetworkManager の管理から外れ、ntp が正しい設定ファイル /etc/ntp.conf を読むようになった。
でも、”ps ax” を試すと、”dhclient eth0″ が動いている。どうも、IPアドレスの設定がおかしい。以前に、nmcli コマンドを試したときのゴミが残っているのかな。設定情報のファイルを編集。
((( /etc/NetworkManager/system-connections/eth0.nmconnection ))) [connection] id=static <-- ここが eth0 と書かれていた。ここは、dhcp か static になるべき。 uuid=xxxxxxxxxxx type=ethernet interface-name=eth0 :
CCS811は、CO2センサーではない
TVで「最近コロナ対策のCO2センサーは怪しいものが多い」との番組をやってた。
んで、我が家でも安い空気品質センサーということで、Raspberry-PiにCCS811というセンサーをつけてモニタリングしている。んで、CO2値もモニタしてるけど、この番組でも「安い家庭用センサーばらしたけど、CO2センサーといいながらVOC(揮発性有機ガス)センサーしかないじゃん、これじゃ正しくCO2値は測れない。確かめたかったら、消毒用のアルコールをを近づけたら…」という解説だった。
ということで、やってみた。みごとにアルコールに反応して、CO2値が激増。(つまりCO2増えてないはずなのに反応するのは「CO2センサーという意味では、まがい物」)
まあ、CCS811の説明みても、TVOC値からCO2を推定している。”eCO2“/二酸化炭素相当物のセンサー。測定値も かといって、部屋に有機系ガスが溜まっているから、換気したほうがいいよ…ということには違いない。ということで、このCCS811の測定結果は、CO2値というよりは換気の目安だね。
munin-2.0.67-2 で lock ファイルのトラブル
Debian の更新をかけたら、munin-2.0.67-2 となってから、以下のメールが定時処理で届く。
Creating lock /var/run/munin/munin-update.lock failed: Permission denied at /usr/share/perl5/Munin/Master/Update.pm line 127.
検索をすると、どうも 2.0.67-2 で出たトラブルで、対応中みたい。当分、様子見かな。
munin は、止めたくないしなぁ…
でも、5分毎の警告メールはうざいなぁ…
FireWall用のブラックリスト自動生成
自宅サーバでは、FireWall を動かしているけど、アクセス履歴を見ると色々と怪しい接続が気になる。ある程度は LOG を確認して、FireWall の拒否リストを整理していたけど、自動化してみた。
FireWall では、主要なのは iptables で管理し、巨大な拒否リストになりそうなものは、ipset で拒否リストを作り、iptables から、その ipset を参照するようにしている。
GEOIPDENY により国ごと拒否
- 国ごと拒否リスト make-geoip-deny.pl
RIR の IPアドレス範囲と国ドメインのデータベースをダウンロードして、拒否リストを生成。かなり巨大なリストが作られる。
((更新状況を確認)) [root]# ./make-geoip-deny.pl -d | head /usr/bin/wget -q -O - 'ftp://ftp.arin.net/pub/stats/arin/delegated-arin-extended-latest' /usr/bin/wget -q -O - 'ftp://ftp.ripe.net/pub/stats/ripencc/delegated-ripencc-extended-latest' /usr/bin/wget -q -O - 'ftp://ftp.apnic.net/pub/stats/apnic/delegated-apnic-extended-latest' /usr/bin/wget -q -O - 'ftp://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-extended-latest' /usr/bin/wget -q -O - 'ftp://ftp.afrinic.net/pub/stats/afrinic/delegated-afrinic-extended-latest' ipset count before : 65658 ipset count merge : 26038 ipset count after : 39526 ((FireWallの更新)) [root]# systemctl stop ferm && systemctl start ferm
25か国の接続を拒否しているけど、単純に RIR の情報だと 65658件のアドレスブロック。25か国のアドレスブロックで隣接しているアドレスブロックをマージして、26038件に減らせた。しかし、サブネットマスクに指定できるアドレスブロックに変換して、最終的に 39526 行の拒否リストが出来上がっている。
RIRのデータのダウンロードに時間がかかり30秒ほどかかるし、国に割り振られる IPv4 アドレスなんて変化も少ないので、気が向いた時に更新かな。
SMTPDENY と SSHDENY
- SMTPの拒否リスト make-smtp-deny.pl
SASL login を試す攻撃が多いので、/var/log/mail.log の履歴から、拒否リストを生成。 - SSHの拒否リスト make-ssh-deny.pl
ssh は、/etc/hosts.allow で、自分が使うネットワーク以外は接続を拒否して ssh 自身は既に守っているけど、接続を試すような相手はヤバイので ssh 以外すべての接続を拒否させる。/var/log/messages の履歴から生成。
怪しい接続をしてくる IP アドレスを抽出し、クラス C でグループ化して、数十回の接続履歴のあるものを抜粋して、拒否リストを生成している。それぞれ 30 行ほどの拒否リストとなった。
この拒否リストは、生成も1秒程度で生成できるので、cron.weekly にて更新。
homebridge用にnode.jsの更新
家電制御用に動かしている Raspberry Pi の homebridge のために、node.js と npm の更新。
ついでに、最新の node.js を 16.3 にアップグレードしてみた。
$ sudo systemctl stop homebridge $ sudo curl -fsSL https://deb.nodesource.com/setup_16.x | bash - $ sudo systemctl stop homebridge $ sudo apt-get install -y nodejs $ sudo systemctl start homebridge $ sudo npm update $ sudo node -v 16.3.0 $ sudo npm -v 7.15.1
SwitchBot の制御が動かなくなり、プラグインを別の物に切り替え。
rsyslogの設定
Buffalo のルータのログをサーバに保存する設定。ルータを更新した時に、syslog 設定までやってなかった。ということで、改めて設定。
出力するファシリティは、local1 なので、以下の設定を加える。
以前に、設定した時は、/etc/rsyslog.conf を触ったけど、Debian流で /etc/rsyslog.d に local1.conf ファイルにまとめる。
サーバ側の設定
(( /etc/rsyslog.d/local1.conf )) # module(load="imudp") input(type="imudp" port="514") local1.* /var/log/local1.log # (( /etc/logrotate.d/rsyslog )) /var/log/messages + /var/log/local1.log
ルータ側の設定
ラズパイのフレームバッファ出力
家電制御とhomebridge専用のRaspberry-Piだけど、HDMI制御用にテレビに繋がっているし、ラズパイの動作状況なりを出力させられないかと思っていた。
X11 の GUI の autologin を使うのが定番だろうけど、X11 が動いているだけで、OS リソースをかなり食っちゃうので、あまりやりたくなかった。
でも、フレームバッファ出力で映像を出すための fbi コマンドをみつける。
そこで、wkhtmltopdf パッケージの wkhtmltoimage コマンドを使って、状況表示のページをキャプチャさせ、その画像を fbi コマンドで、フレームバッファ表示させてみた。
/usr/bin/wkhtmltoimage --width 1200 --height 800 \ -q 'http://www.example.co.jp' /tmp/web.png /usr/bin/sudo /usr/bin/fbi -T 1 -d /dev/fb0 --noverbose \ /tmp/web.png > /dev/null 2>&1
proxyサーバヒット率1%
以前より、自宅内のCache Proxyサーバって、ヒット率低いのはわかっていたけど、一応動かしていたSquid。これまた気まぐれに cache のヒット率確認したら、1%。意味ないね。
自分しか使ってないだろうと、これまた気まぐれにばっさりと、aptitude purge squid したら、子供と奥さんが「ネット切れた」と駆け込んできた。proxy自動設定のproxy.pacとかも置いといたので、想定外に使ってたのね。
ということで、家族に「proxy はずしてね」と伝え、proxy.pac を、return “DIRECT”; に修正しておく。
homebridgeのlogrotate
raspberry-pi で動かしている homebridge の LOG もそれなりに成長するので、logrotate で切り詰める。
設定したけど、うまく出力してくれていないので、postrotate 機能で、homebridge を再起動するようにする必要あり。
/var/lib/homebridge/homebridge.log { weekly rotate 10 compress delaycompress missingok notifempty create 644 homebridge homebridge postrotate /bin/systemctl restart homebridge endscript }