Debian」カテゴリーアーカイブ

システム

最近の投稿

アーカイブ

カテゴリー

readynas の運用開始と DNS,DHCPの多重運用

NETGEAR の ReadyNAS Pro 2 を入手。readynas の 正規 OS は、バージョンが古く debian ベースの でも samba などが古いプロトコルしか使えないので、便利な使い方ができない。

このため、Serial ポートを使って debian/forky をインストール。

サーバを運用していると、ネットワークの設定を間違って DNS, DHCP を止めてしまうと、自宅ネットワークが全滅する。 Raspberry-Pi で DNS セカンダリサーバなどを動かしていたけど、この readynas のサーバで多重サーバ構成にしたい。

DNS のキャッシュサーバ運用

まずは、DNS (bind9)のセカンダリ運用。

((( /etc/bind/named.conf.local )))
zone "tsaitoh.net" {
        type slave ;
        file    "db.tsaitoh.net.slave";
        masters {
                192.168.xx.yy;
        };
};
((( /etc/bind/named.conf.options )))
acl     internal-network {
        ::1;
        127.0.0.1;
        192.168.xx.0/24;
};
options {
        directory "/var/cache/bind";
        forwarders      { 192.168.xx.yy;    };
        allow-query     { internal-network; };
        allow-recursion { internal-network; };
        dnssec-validation auto;
        listen-on       { any; };
        allow-transfer  { none; };
};

DHCP のホットスタンバイ運用

続いて、DHCP の多重化。最近まで isc-dhcp-server を使っていたけど、kea-dhcp4-server に切り替えていたが、kea-dhcp4-server では、hot-standby 構成を組めるので、設定。2台の DHCP サーバは、8000 ポートで相互に死活状態を確認し、相手が機能していないと、自身が DHCP 処理を行う。

((( /etc/kea/kea-dhcp4.conf )))
    "hooks-libraries": [
      {
          "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_lease_cmds.so",
          "parameters": { }
      },
      {
          "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_ha.so",
          "parameters": {
              "high-availability": [ {
                  "this-server-name": "プライマリホスト名",  // セカンダリの設定ではセカンダリホスト名を記入
                  "mode": "hot-standby",
                  "heartbeat-delay": 1000,
                  "max-response-delay": 10000,
                  "max-unacked-clientsets": 5,
                  "peers": [
                      {
                          "name": "プライマリホスト名",
                          "url": "http://192.168.xx.yy:8000",
                          "role": "primary"
                      },
                      {
                          "name": "セカンダリホスト名",
                          "url": "http://192.168.xx.zz:8000",
                          "role": "standby"
                      }
                  ]
              } ]
          }
      },
    ],

これで、メインサーバにトラブルがあっても、自宅内ネットワーク全滅は避けられる。

arpalertをarpwatchに変更

不審なネットワーク接続を見つけるために、arpalert を使っていたけど、新しい端末を登録するときに警告メールが飛んでこない。サーバを切り替え ubuntu に変更となって、何も考えずに arpalert をインストールしてあったけど、細かい点の動作確認をしていなかった。

調べると arpalert は最近メンテナンスされていないらしい。systemctl status arpalert すると、/etc/init.d/arpalert の sysv 形式で起動している。古い証拠なので切り替え。

最近は arpwatch を進められたので、arpwatch に切り替え。

arpwatch の設定

設定は、設定対象のインタフェース名(自宅の場合 enp2s0)をしらべ、以下で起動

$ sudo apt install arpwatch

$ sudo vi /etc/arpwatch/enp2s0.iface
IFACE_ARGS="-m root@tsaitoh.net"     # 警告メールの送り先
PCAP_FILTER="net 192.168.11.0/24"    # 監視対象を制限

$ sudo systemctl enable arpwatch@enp2s0
$ sudo systemctl start arpwatch@enp2s0

$ sudo apt remove arpalert

raspbianのaptでのgpgキーのエラー

設定を間違えたのか、apt の update, upgrade で GPG キーのエラーが出るようになった。

GPGキー の再設定

GPG キーファイルの扱う debian-archive-keyring (raspbianでは raspbian-archige-keyring) を強制再インストールして、更新された /etc/apt/trusted.gpg を参照するように /etc/apt/sources.list.d/* のファイルの deb 行に書き込む

((( 標準パッケージの GPG keyring を強制再インストール )))
$ sudo apt reinstall --allow-unauthenticated raspbian-archive-keyring
$ sudo apt update ; sudo apt upgrade

((( パッケージの GPG 参照ファイルを設定 )))
$ sudo vi /etc/apt/sources.list.d/*.list
deb [signed-by=/etc/apt/trusted.gpg] ...略...
               ~~~~~~~~~~~~~~~~~~~~

自宅サーバの移行中

メインPCを Windows 10 から 新しいPCを導入し Windows 11 に切り替えたが、データの移行も終わったので、Windows 10 の PC に Linux を入れる。

現状自宅サーバの問題点

現状の自宅サーバは ほぼ 15年に使い始めたが、最近はマナーの悪いクローラで負荷が高くなったり、smartd から エラー警告が出る(root ではない)ようになっているし、これを契機にサーバ移行中。1台の PC を 15 年運用というのも我ながらすごいな。

しかし、Core i3 第5世代の CPU から Core i7 の第7世代で処理速度も約4倍になってるし、SSD なので全体的に処理速度も大幅改善。

OS は Debian 13(trixie) から Ubuntu 24 に

OSは、設定移行も考え、同じ Debian にしようと作業を始めたが、ネットワークデバイスのドライバがまずいのか、時々 切れてしまう。処理速度もまともなので、デスクトップでも使うと思うし Ubuntu 24 Desktop に変更。最新 firmware のパッケージをいれて適切なネットワークデバイスが選ばれたのか、ネットワークも安定。

デスクトップも、デフォルト設定が Debian より使いやすいし便利。

ついでに、FireWall の管理は長年 ferm を使っていたけど、メジャーじゃないし最新ディストリビューションでは対象外。今回、移行を契機に netfilter + netfilter-persistent に移行。

postfix + opendkim + clamav + saslauthd + dovecot-imapd の設定はほぼ移行が終わったと思うけどなかなか面倒。設定が色々とかみあってて面倒。設定をまるまる移行すると、処理が途中で現行サーバに飛ぶので、移行中サーバ内で処理が留まるように設定しながらの作業中。

munin + nagios4 の環境も移行したけど、まだまだ道半ば。WordPress のインストールとコンテンツ移行が最後の難関かな。

追記:Wordpressの ヘッダ画像

WordPress も移行したけど、古いサーバのデータを完全移行で、どっちで作業していたかわからなくなるので、新しいサーバの WordPress ヘッダ画像を更新。

ライセンス的にいい写真がなかったので、Gemini で画像を生成させた。

Alibaba Cloud LLC からの大量アクセス

自宅サーバで作業していたら、loadaverage 30越えの高負荷。

調べてみると、Web サーバの負荷が高い。一旦 apache を止めると負荷が落ち着く。

早々にアクセス元の IP アドレスを調べると広い範囲の端末からアクセスが集中している。ひとまず FireWall で下記サブネットをアクセス拒否。

47.79.0.0/20
47.79.96.0/19
47.79.208.0/20
47.82.8.0/21

アクセス履歴の内容を確認すると、アクセス間隔を空けないマナーの悪いクローラーのようだ。

saslauthd の起動で smtpd chroot 解除

postfix の更新が入ったようだけど、以前から postfix 更新のたびに動かなくなることが多かった saslauthd がうまく起動しないトラブルが再発。
postfix での smtpd 起動がセキュリティ対策のために chroot 起動にしていて、saslauthd が chroot のファイルを正しくアクセスできないのが原因。でも、debian の default 設定の 非chroot の設定だし、debian 推奨設定ということで chroot 起動を解除することにした。

homebridge-cmdswitch2更新とchild-bridge機能

homebridge child-bridge

homebridgeの更新の中で、child-bridge という機能が実装された様子。これによる影響なのか、Google Home でつながらない現象が発生していると思われる。homebridge-cmdswitch2 のプラグインが、child-bridge を使うように変更されている。

$ sudo ps ax | grep homebridge
22887 ?        Sl     0:21 homebridge
23934 ?        Sl     0:03 homebridge: homebridge-cmdswitch2
24010 pts/2    S+     0:00 grep homebridge

{
    "platform": "cmdSwitch2",
    "name": "cmdSwitch2",
    "switches": [
        {
            "name": "テレビ",
            --(略)--
        }
    ],
    "_bridge": {
        "username": "0E:7D:87:xx:xx:xx",
        "port": 53178
    }
}

これにより、child bridge が別の homebridge のように見えていると思われるので、Google Home 側で別デバイスとして child bridge を認識させないとダメということかな。

homebridge-cmdswitch2 の更新

ただ、cmdswitch2 だけど、プラグインの更新が必要みたい。homebridge-cmdswitch2(ver 0.2.10)は、homebridge-cmdswitch2-no-logs に移行されているようなので、こっちの方が先決かな。

homebridge-cmdswitch2-no-logs の status 監視のトラブル

homebridge-cmdswitch2 の後継プラグインの homebridge-cmdswitch2-no-logs に入れ替えたけど、各機器のON/OFF状態を cec-client でとるように設定し polling 設定をすると、頻繁に状態監視をすることになり、ほかのデバイスの on/off 監視と競合が発生する。このため、polling 設定は削除。

プラグインを更新したら、「child bridge の方がいいよ」といった説明も出てこないし、child bridge機能は見送り。

追記:homebridge-cmdswitch2 に戻す

cmdswitch2-no-logs に切り替えたけど、”OK google, テレビをつけて”と命令すると、テレビを消す動作はするものの “homebrigeに接続できません” と言われる。

しかたがないので、homebridge-cmdswitch2 に戻し、child-bridge ナシの設定とする。

sshd のエラーメッセージ

sshd の設定をあまり見直していないが、下記のメッセージが出るようになっている。

2024-10-05T20:03:58.314494+09:00 xxxx sshd[176045]: rexec line 15: Deprecated option UsePrivilegeSeparation
2024-10-05T20:03:58.314710+09:00 xxxx sshd[176045]: rexec line 18: Deprecated option KeyRegenerationInterval
2024-10-05T20:03:58.314778+09:00 xxxx sshd[176045]: rexec line 19: Deprecated option ServerKeyBits
2024-10-05T20:03:58.314840+09:00 xxxx sshd[176045]: rexec line 31: Deprecated option RSAAuthentication
2024-10-05T20:03:58.314896+09:00 xxxx sshd[176045]: rexec line 38: Deprecated option RhostsRSAAuthentication
2024-10-05T20:20:31.361176+09:00 xxxx sshd[177351]: Unable to load host key: /etc/ssh/ssh_host_dsa_key

どれも、関連する行をコメントアウトで対応。

mariadb のエラー対策

別件で /var/log/syslog を確認したら、下記のエラーが大量に出力されている。

2024-10-05T19:53:54.546148+09:00 xxxx mariadbd[1076]: 2024-10-05 19:53:54 3785 [ERROR] Incorrect definition of table mysql.column_stats: expected column 'hist_type' at position 9 to have type enum('SINGLE_PREC_HB','DOUBLE_PREC_HB','JSON_HB'), found type enum('SINGLE_PREC_HB','DOUBLE_PREC_HB').
2024-10-05T19:53:54.546217+09:00 xxxx mariadbd[1076]: 2024-10-05 19:53:54 3785 [ERROR] Incorrect definition of table mysql.column_stats: expected column 'histogram' at position 10 to have type longblob, found type varbinary(255).

エラーメッセージでググると、下記のコマンドで直るとのこと。

ALTER TABLE mysql.column_stats MODIFY histogram longblob;
ALTER TABLE mysql.column_stats MODIFY hist_type enum('SINGLE_PREC_HB','DOUBLE_PREC_HB','JSON_HB');

ということで、実行してみる。

# mariadb -u root
:
MariaDB [(none)]> ALTER TABLE mysql.column_stats MODIFY histogram longblob;
Query OK, 0 rows affected (0.496 sec)
Records: 0  Duplicates: 0  Warnings: 0
MariaDB [(none)]> ALTER TABLE mysql.column_stats MODIFY hist_type enum('SINGLE_PREC_HB','DOUBLE_PREC_HB','JSON_HB');
Query OK, 0 rows affected (0.176 sec)
Records: 0  Duplicates: 0  Warnings: 0

エラーメッセージは出なくなったようだ。

EP-716AをCUPSに登録

設定に失敗していたけど、改めてプリンタを cups に登録してみた。CUPS の Web 管理画面のプリンタ検索でいくつかの設定を自動的に見つけてくれるけど、ipp://* やら http://*:631 による設定だと うまくいかず、最終的に下記の設定でようやくうまくいった。

ここまでできると、いつでも印刷できるように、プリンタを Wake on LAN で起動できるといいんだけど、有線でつながっている必要もあるけど、EP-716A は 無線か USB なので無理。

Google 検索

My Google   Yahoo

Microsoft

ファンサイト

メタ情報