Debianの最近のブログ記事

iptables hashlimit

imaps などを経由してブルートフォースアタックされるのも怖いので、 hashlimit を用いた制限

((/etc/ferm/ferm.conf))
domain ip {
  table filter {
    chain HASHCHECK {
      mod hashlimit
            hashlimit-name HASHCHECK_TABLE
            hashlimit 1/m
            hashlimit-burst 30
            hashlimit-mode srcip
            hashlimit-htable-expire 120000 ACCEPT ;
      mod limit
            limit 1/s LOG log-prefix '[iptables hash drop]: ' ;
      DROP ;
    }
    chain INPUT {
      :
      proto tcp dport imaps jump HASHCHECK ;
      :
    }
  }
  :
}

ftp.jp.debian.org が遅くね?

サーバ(debian)の更新をかけてたけど、今日はやたらと遅い。 サーバ側のトラブルかな。

サーバを ftp.jp.debian.org から、ftp.jaist.ac.jp に 変更したら、サクサクとダウンロードされるじゃん。

以前に導入していた、自宅サーバを SSL で公開するユーザ向けの SSL 証明書を作ってくれる、letsencrypt.sh だけど、パッケージ名が dehydrated に名前が変更となったみたい。

これに応じて、ディレクトリの名前などが変更になったので 設定ファイルを若干変更。apt-listchanges からのメールをみて、 以下のような設定ファイルの移動を行う。

 (( インストールと設定ファイルの移行 ))
 # aptitude install dehydrated
 # mv -v /etc/letsencrypt.sh/domains.txt  /etc/dehydrated/
 # mv -v /etc/letsencrypt.sh/conf.d/*     /etc/dehydrated/conf.d/
 # mv -v /var/lib/letsencrypt.sh/accounts /var/lib/dehydrated/
 # mv -v /var/lib/letsencrypt.sh/certs    /var/lib/dehydrated/

ただし、/etc/dehydrated/conf.d/ の設定ファイルの中に、 変数 BASEDIR が含まれていたものがあったが、動かないようだったので、 絶対 PATH に書き換えた。

 (( 動作確認 ))
 # /usr/bin/dehydrated -c --force

apcupsdの設定

灯油切れでエアコンを付けたら、電源の容量オーバーでブレーカーが 落ちたのはいいけど、いつもならサーバの UPS がピーピー鳴るのに 今日は無音。さすがに2〜3年の寿命だったはずのものを、7年目じゃ しかたがない。

早々に UPS を入れ替えたけど、前回が安物でサーバとの連動が できなかったので、実績のある APC 社の ES-550 を購入。 電源連動も、apcupsd を入れれば一発。

apcupsd のインストール

以下は、単なる作業メモ。Web の情報そのまんま。

 (( apcupsd のインストール ))
 $ sudo aptitude install apcupsd
 (( /etc/apcupsd/apcupsd.conf ))
 UPSCABLE usb
 UPSTYPE usb
 DEVICE /dev/usb/hiddev1
 (( /etc/default/apcupsd ))
 ISCONFIGURED=yes

munin で監視

apcaccess を使うと、電源やバッテリーの電圧、充電状態がとれる。 であれば、munin で監視させてみよう。

 (( /etc/munin/my-plugins/apcupsd.awk ))
 /^LINEV/        { print "linev.value",$3    }
 /^LOADPCT/      { print "loadpct.value",$3  }
 /^BCHARGE/      { print "bcharge.value",$3  }
 /^TIMELEFT/     { print "timeleft.value",$3 }
 /^BATTV/        { print "battv.value",$3    }
 (( /etc/munin/my-plugins/apcupsd.sh ))
 #!/bin/bash

 #%# family=auto
 #%# capabilities=autoconf

 available="yes"

 APCACCESS="/sbin/apcaccess"
 test -x $APCACCESS || exit 1

 case $1 in
     config)
         echo "graph_title APC UPS monitor"
         echo "graph_category system"
         echo "graph_vlabel filter volt."
         echo "graph_args -l 0 --base 1000"

         echo "loadpct.label Load[%]"
         echo "loadpct.draw LINE2"
         echo "bcharge.label Battery Charge[%]"
         echo "bcharge.draw LINE2"
         echo "timeleft.label Time Left[min]"
         echo "timeleft.draw LINE2"
         echo "linev.label Line[V]"
         echo "linev.draw LINE2"
         echo "battv.label Battery[V]"
         echo "battv.draw LINE2"
         exit 0
         ;;
 esac
 $APCACCESS | /usr/bin/awk -f /etc/munin/my-plugins/apcupsd.awk

監視を始めて、半日ほどだけど、家の電源電圧って思ったより変動しているんだなぁ... 95[V]~100[V] で変化している。家の問題というより、パソコン回りのタコ足配線のせいかもしれんけど。

Debianのパッケージを更新していたら、 icingaが、"(Service check did not exit properly)" といった、 エラーを表示して、うまく動いていない。

原因としては、icinga(nagios)では、Perl によるモジュールを 実行するときに、専用の組込み perl interpreter を 使っているけど、nagios のモジュール(今回は check_mailq) が、これに 適合していないために、ダメらしい。

探した資料では、Perl script の先頭 10 行までの所に、 "# nagios: -epn" というのを入れておくと、組込み Perl を使わない。

ということで、以下のように script の先頭付近に1行を加えた。

 (( /usr/lib/nagios/plugins/check_mailq ))
   #!/usr/bin/perl -w
 + # nagios: -epn
   # check_mailq - check to see....

Homebridgeでチャンネル切替

HomeBridge が便利で TV などの電源制御ができて面白い。 Siri に "テレビをつけて" で電源が入るのは、 とても便利。

だけど、TVを見ていたら、チャンネルを切り替えられたら便利だけど、 "○○放送にチャンネルを変えて"を使うには、 "homebridge-samsungtv-control"みたいな モジュールじゃないと難しそう。 ソースを読んで...とも思ったけど、断念。

でも、よく考えたら、"日本テレビにチャンネルを変えて"ではなくて、 "日本テレビをつけて"と Siri に 話しかけるのはそれなりに自然だし、 これなら、"homebridge-cmdswitch2" の on_cmd で充分じゃん。

ということで、以前に設定していた電源制御の設定のところに、 以下のように各チャンネルの変更機能だけのデバイスを書き並べる。

 {
    "name":     "NHK",
    "on_cmd":   "/usr/local/bin/Tira-2.py --remote=regza --transmit=1"
 }

CATVだと、主要チャンネル全部を書き並べるのは大変だし、 地デジとCATVのよく見るチャンネルのみ。

Siri向けに設定できないチャンネル

改めてチャンネルを登録してみたけど、ケーブルテレビの「ムービープラス」を登録して、 Siri に「ムービープラスをつけて」と言うと、映画館検索が動いて「プラスという映画はありません」っておっしゃる。 同じく「スーパードラマTV」を登録したら、 スーパーに反応しているのか、スーパー戦隊モノのリンクを表示して、チャンネル切り替えられず。(^_^; 「キッズステーション」もステーションに反応してマップの乗り換え検索を起動しようとするようでダメ。

Linux のカーネルのバージョンを 4.8.11-1(module では 4.8.0-2-amd64) にあげたら、自宅で動かしていた赤外線リモコン制御システムやら、 予定を eabadge に表示するシステムやら、munin の cpufreq やらが 動かなくなっていた。

シリアルポートの制御のエラーメッセージが出ていたので Perl の serialport が 動かなくなったのかと調べていたけど、シリアルポートデバイスが 見つからない。んで、udev の rules ファイルのトラブルを 疑ったけどこれまた外れ。

最終的に、usbserial のカーネルモジュールが認識されていないので、 "modprobe usbserial" を実行したら、カーネルモジュールが 見つからないとか訳の分からない状態。

しかたがないので、"depmod -a"を実行したら、ようやく認識してくれた。

たぶん、linux-image-4.8.0-2 を入れるタイミングで、depmod も更新 がかかったけど、依存関係のミスで depmod に失敗していた.... といった原因かな。

cec-clientをhomebridgeから制御

今までは、iOS の HOME 機能を、linux環境で動くフリー実装の homebridge を使って、赤外線リモコンを制御していた。 しかし、AV機器のON/OFFでは、電源ボタンでON⇒OFFなのかOFF⇒ON なのか分からない。このため、ネットワーク対応の機器だし、 ping の結果に応じて 電源ボタン信号を出していた。

ただ、TVなどは、電源OFFの状態でも、EPG情報取得などのために OS が動いているため、OFF 状態の判定に失敗する。

そこで、先日見つけた HDMI 経由から制御信号を送る cec-client を試してみた。cec-client では、機器のON/OFF を判定しているので、 確実に ON/OFF できるはず。cec-client は、サーバ機では使えなかったので、 Raspberry-Pi を使ってみた。

$ echo "on 1" | cec-client -d 1 -s      # 1番機器をON
$ echo "standby 2" | cec-client -d 1 -s # 2番機器をOFF
$ echo "scan" | cec-client -d 1 -s      # 機器一覧をスキャン
device #0: TV         ← REGZA
address:       0.0.0.0 
vendor:        Toshiba
osd string:    TV
power status:  on

device #1: Recorder 1 ← VARDIA
address:       2.0.0.0← HDMI入力ソース番号
vendor:        Toshiba
osd string:    RD-S502
power status:  standby ← 電源状態

device #2: Recorder 2  ← Raspberry-Pi
address:       1.0.0.0
vendor:        Toshiba
osd string:    CECTester
power status:  o

device #3: Tuner 1    ← CATV-STB
address:       1.0.0.0
vendor:        Panasonic
osd string:    Tuner 1
power status:  on

device #4: Playback 1 ← PS4
address:       3.0.0.0
vendor:        Sony
osd string:    PlayStation 4
power status:  standby

AVソースの切り替え

今までは、赤外線リモコン信号で、ON/OFF を制御していたので、 HDMI 連動設定をしているおかげで、ケーブルTVのチューナーON で、テレビの電源も ON となり、さらにビデオ入力も対象機器に 切り替わる。

ただ、cec-client に切り替えたら、機器の制御信号をだすのが、 別機器なので、TV電源連動や、ビデオ入力切替連動とならない。

しかたがないので、TVのビデオ入力切替信号も出してみる。

echo "tx 2f:82:10:00" | cec-client -d 1 -s
# 2番のHDMIデバイス(raspberry-pi)から、
# 全デバイス宛て(f番)の信号で、
# 82 映像切替コマンドを送る。(TOSHIBA REGZAの場合)
# 10:00 は、ビデオ切り替えの番号

SoftEther VPNを導入

iOS10,macOS Sierraを導入すると、PPTP-VPNが使えなくなるようで、 Buffalo のVPN機能が使えなくなる。 ということで、Mac環境に macOS Sierra の導入ができなかった。

そこで、strongswan VPN サーバを導入しようと、色々試していたけど、失敗。 であればということで、SoftEther VPN(オープンソース版)を入れてみた。 色々試行錯誤のなか、ようやく動くようになった。

さあ、今から macOS Sierraをインストールするぞ。
職場のメインマシンには、ScanSnap のスキャナがあるけど、 macOS Sierraでトラブル報告があるので、 まずは、MacBook Air で試してみよう。

systemd.networkの設定

職場から自宅サーバを触っていて、reboot が必要そうなので、 再起動をかけたら、サーバが復帰せずびびった。 Debian が systemd に移行したけど、相変わらず /etc/init.d を使って作業をしていたけど、 ネットワークの設定の方法が変わったのね。 /etc/network/interfaces のファイルだけでメンテナンスしてたけど、 /etc/systemd/network/*.network で設定するのね。

これらの設定を移行してなかったので、ネットワークが設定されず、 DHCPが動かない(自宅内のネットワーク機器全滅)。 同じく Web , mail , ....総崩れ。(x_x;;

systemdのネットワーク設定

(( /etc/systemd/network/eth0.network ))
[Match]
Name=eth0

[Network]
Address=192.168.XX.XX/24
Gateway=192.168.XX.YY

設定の有効化

# systemctl enable systemd-networkd

systemsのresolve設定

systemdの設定ファイルを修正

(( /etc/systemd/resolved.conf ))
[Resolve]
DNS=192.168.XX.YY
Domains=example.jp

設定を有効にする。

# mkdir /run/systemd/resolv
# cp /etc/resolv.conf /run/systemd/resolv/resolv.conf
# ln -sf /run/systemd/resolv/resolv.conf /etc/resolv.conf
# systemctl enable  systemd-resolved.service
# systemctl restart systemd-resolved.service

2017年5月

  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

ウェブページ

アーカイブ

Webデータ

このアーカイブについて

このページには、過去に書かれたブログ記事のうちDebianカテゴリに属しているものが含まれています。

前のカテゴリはAndroidです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。