未分類」カテゴリーアーカイブ

fail2ban で延長banを除外したいときの設定

シュー

※写真と本文は関係ありません。


# Jail for more extended banning of persistent abusers
しつこいIPアドレスのban期間を延長する recidive jail
サービスに影響があるかもしれないので、sshdは延長banしたいけど、dovecotは通常banにしたいときの設定方法。
recidive の jail 設定

$ cat /etc/fail2ban/jail.d/jail.local
# recidiveの部分を抽出
[recidive]
enabled = true
logpath = /var/log/fail2ban.log
banaction = %(banaction_allports)s
bantime = 604800 ; 1 week
findtime = 86400 ; 1 day
action = sendmail-whois-lines-subject-w-country[name=%(__name__)s, logpath=%(logpath)s]
%(banaction)s[name=%(__name__)s]

filterはjail.conf に書いてあるデフォルト設定なので
/etc/fail2ban/jail.conf:filter = %(__name__)s
-> filter = recidive
/etc/fail2ban/filter.d/recidive.conf が filter 設定ファイル

recidive.conf にある変数 _jailname を recidive.local で書き換える

# デフォルト
$ cat /etc/fail2ban/filter.d/recidive.conf
[Definition]
_jailname = recidive

延長ban を除外する jailname で正規表現を書く。

$ cat /etc/fail2ban/filter.d/recidive.local
[Definition]
_jailname = (recidive|dovecot|postfix-rbl)

recidive.conf の 変数 failregex の_jailname のところに代入される。

failregex = ^(%(__prefix_line)s| %(_daemon)s%(__pid_re)s?:\s+)NOTICE\s+\[(?!%(_jailname)s\])(?:.*)\]\s+Ban\s+\s*$

fail2ban-regexを使うとfailregexが出力されるので確認できる。
–print-all-missed マッチしてないログ、–print-all-matched でマッチしたログを確認できる。

# fail2ban-regex /var/log/fail2ban.log /etc/fail2ban/filter.d/recidive.conf 

Running tests
=============

Use   failregex filter file : recidive, basedir: /etc/fail2ban
Use         log file : /var/log/fail2ban.log
Use         encoding : UTF-8


Results
=======

Failregex: 185 total
|-  #) [# of hits] regular expression
|   1) [185] ^((?:\[\])?\s*(?:<[^.]+\.[^.]+>\s+)?(?:\S+\s+)?(?:kernel: \[ *\d+\.\d+\]\s+)?(?:@vserver_\S+\s+)?(?:(?:(?:\[\d+\])?:\s+[\[\(]?fail2ban\.actions\s*(?:\(\S+\))?[\]\)]?:?|[\[\(]?fail2ban\.actions\s*(?:\(\S+\))?[\]\)]?:?(?:\[\d+\])?:?)\s+)?(?:\[ID \d+ \S+\]\s+)?| fail2ban\.actions\s*(?:\[\d+\])?:\s+)NOTICE\s+\[(?!(recidive|dovecot|postfix-rbl)\])(?:.*)\]\s+Ban\s+\s*$
`-

Ignoreregex: 0 total

Date template hits:
|- [# of hits] date format
|  [2581] Year(?P<_sep>[-/.])Month(?P=_sep)Day 24hour:Minute:Second(?:,Microseconds)?
`-

Lines: 2581 lines, 0 ignored, 185 matched, 2396 missed
[processed in 0.48 sec]

Missed line(s): too many to print.  Use --print-all-missed to print all 2396 lines

ML310G4 Centos7のインストーラでRaidコントローラが認識しない #2

IMGP1952

※写真と本文は関係ありません。


前回の続き

hpsaドライバだとkernelUpdate後hpssacliが使えなくなったので、ccissドライバを使用することにする。
インストール時にUsbメモリからccissドライバを読み込む。

ディスク作成
Vesselin Kolev’s Tech Corner: How to install CentOS 7 on HP ProLiant BL460c G1/G5
を参考にする

$ export CURR=`pwd`
$ export SQUASH_ROOT=${CURR}/squashfs-root
$ export VER=3.6.26-3   # 最新版があったので最新版にした
$ export RPM_PKG=kmod-cciss-${VER}.el7.elrepo.x86_64.rpm
$ mkdir -p ${SQUASH_ROOT}/rpms/x86_64/
$ echo "HP Smart Array CCISS driver ver. 3.6.26" > ${SQUASH_ROOT}/rhdd3
$ wget --directory-prefix=${SQUASH_ROOT}/rpms/x86_64/ http://elrepo.reloumirrors.net/elrepo/el7/x86_64/RPMS/${RPM_PKG}
$ createrepo --basedir ${SQUASH_ROOT}/rpms/x86_64/ .
$ touch ${SQUASH_ROOT}/.rundepmod
$ cd ${SQUASH_ROOT}
$ rpm2cpio ${SQUASH_ROOT}/rpms/x86_64/${RPM_PKG} | cpio -imVd ./lib/*
$ cd ${CURR}
$ mksquashfs ${SQUASH_ROOT} ${CURR}/kmod-cciss-${VER}-driver-disk.img
$ rm -fr ${SQUASH_ROOT}

Usbメモリに書き込み

# dd if=kmod-cciss-3.6.26-3-driver-disk.img of=/dev/sdb

これも参考に
サポート製品マニュアル Red Hat Enterprise Linux 7インストールガイド 9.3. インストール中にドライバーの更新を実施する

grubの引数に『inst.dd』を追記してUsbメモリを読む。
その後インストール、今のところ問題なく動いてる。

dmesgの様子

[hogege@ohoho-backup2016 ~]$ dmesg |grep hpsa
[    1.192130] hpsa 0000:03:08.0: unrecognized board ID: 0x3212103c, ignoring.
[    1.192133] hpsa 0000:03:08.0: Board ID not found
[hogege@ohoho-backup2016 ~]$ dmesg |grep cciss
[    1.192735] cciss: loading out-of-tree module taints kernel.
[    1.192793] cciss: module verification failed: signature and/or required key missing - tainting kernel
[    1.210046] cciss 0000:03:08.0: irq 28 for MSI/MSI-X
[    1.295295] cciss 0000:03:08.0: cciss0: <0x3238> at PCI 0000:03:08.0 IRQ 28 using DAC
[    1.310132]  cciss/c0d0: p1 p2
[    8.505779] XFS (cciss/c0d0p1): Mounting V4 Filesystem
[    8.982427] XFS (cciss/c0d0p1): Ending clean mount

lvmの様子

[root@ohoho-backup2016 ~]# pvs
  PV                VG                   Fmt  Attr PSize   PFree 
  /dev/cciss/c0d0p2 centos_ohoho-backup2016 lvm2 a--  232.36g 64.00m
[root@ohoho-backup2016 ~]# vgs
  VG                   #PV #LV #SN Attr   VSize   VFree 
  centos_ohoho-backup2016   1   3   0 wz--n- 232.36g 64.00m
[root@ohoho-backup2016 ~]# lvs
  LV   VG                   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home centos_ohoho-backup2016 -wi-ao---- 180.30g                                                    
  root centos_ohoho-backup2016 -wi-ao----  50.00g                                                    
  swap centos_ohoho-backup2016 -wi-ao----   2.00g 

fstab

[hogege@ohoho-backup2016 ~]$ cat /etc/fstab 
/dev/mapper/centos_ohoho--backup2016-root /                       xfs     defaults        0 0
UUID=82d86fe7-2eee-4468-b055-914294125cbc /boot                   xfs     defaults        0 0
/dev/mapper/centos_ohoho--backup2016-home /home                   xfs     defaults        0 0
/dev/mapper/centos_ohoho--backup2016-swap swap                    swap    defaults        0 0

/boot のUUID

[root@ohoho-backup2016 ~]# blkid  /dev/cciss/c0d0p1
/dev/cciss/c0d0p1: UUID="82d86fe7-2eee-4468-b055-914294125cbc" TYPE="xfs" 
[root@ohoho-backup2016 ~]# blkid  /dev/cciss/c0d0p2
/dev/cciss/c0d0p2: UUID="X1jfCN-7XnC-vU6A-4zM2-mKMJ-3wq2-A0J1N3" TYPE="LVM2_member" 

で、結局3TBのHDDを認識しなかったので、Raidコントローラは使わない方向になりそう…。

[root@ohoho-backup2016 ~]# hpssacli  version
   HPSSACLI Version: 2.40.13.0
   SOULAPI Version: 8.4.13.0

[root@ohoho-backup2016 ~]# hpssacli controller all show
Smart Array E200 in Slot 4                (sn: PA6C90K9SUL39J)

[root@ohoho-backup2016 ~]# hpssacli controller slot=4 logicaldrive all show
Smart Array E200 in Slot 4
   array A
      logicaldrive 1 (232.9 GB, RAID 1, OK)

[root@ohoho-backup2016 ~]# hpssacli controller slot=4 physicaldrive  all show
Smart Array E200 in Slot 4

   array A
      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SATA, 250 GB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SATA, 250 GB, OK)

   unassigned
      physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SATA, 801.5 GB, OK)
      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SATA, 801.5 GB, OK)

unassigned のdriveは3TBなのに、801.5 GBでしか認識されていないのです!

ML310G4 Centos7のインストーラでRaidコントローラが認識しない #1

IMGP1951

※写真と本文は関係ありません。


サーバ:HP ML310G4
Raidコントローラ:HP E200
※古いサーバをバックアップ用に流用しようとセットアップ

Summary
インストール直後はhpsaドライバでうまくいったけど、kernelUpdateしたらHP製のraid管理コマンドが使えなくなったので、ccissドライバでインストールし直した。セットアップ中に気づいてよかったね。

CentOS7をDL360G5にインストールメモ – tkr0429 blog
を参考に。
→ hpsaドライバにオプション付けると動くらしい。

インストール時のgrubオプションで

hpsa.hpsa_simple_mode=1 hpsa.hpsa_allow_any=1

を追記

インストール後にレスキューモードでインストールされたgrubに同様に追記する

# chroot /mnt/sysimage
# vi /etc/default/grub
# grub2-mkconfig -o /boot/grub2/grub.cfg

※yum で kernel Updateしてもgrubオプションはそのまま引き継がれる。

インストール直後
hpssacliコマンド成功

[root@localhost ~]# hpssacli controller all show
Smart Array E200 in Slot 4 

[root@localhost ~]# hpssacli controller slot=4 logicaldrive all show
Smart Array E200 in Slot 4
   array A
      logicaldrive 1 (232.9 GB, RAID 1, OK)

[root@localhost ~]# hpssacli controller slot=4 physicaldrive  all show
Smart Array E200 in Slot 4
   array A
      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SATA, 250 GB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SATA, 250 GB, OK)

インストール直後のkernel

[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

dmesgの様子 → 問題なさそう

[root@localhost ~]# dmesg |grep hpsa
[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.10.0-327.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet hpsa.hpsa_simple_mode=1 hpsa.hpsa_allow_any=1
[    0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-3.10.0-327.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet hpsa.hpsa_simple_mode=1 hpsa.hpsa_allow_any=1
[    1.341105] TECH PREVIEW: hpsa: this controller (0x3212) may not be fully supported.
[    1.341124] TECH PREVIEW: hpsa: this controller (0x3212) may not be fully supported.
[    1.341294] hpsa 0000:03:08.0: MSI capable controller
[    1.341333] hpsa 0000:03:08.0: irq 28 for MSI/MSI-X
[    1.341383] hpsa 0000:03:08.0: Physical aborts not supported
[    1.341389] hpsa 0000:03:08.0: Logical aborts not supported
[    1.341392] hpsa 0000:03:08.0: HP SSD Smart Path aborts not supported
[    1.376372] scsi host0: hpsa
[    1.443338] hpsa 0000:03:08.0: scsi 0:0:0:0: added Direct-Access     HP       LOGICAL VOLUME   RAID-1(+0) SSDSmartPathCap- En- Exp=3
[    1.443345] hpsa 0000:03:08.0: scsi 0:3:0:0: added RAID              HP       E200             RAID-UNKNOWN SSDSmartPathCap- En- Exp=3

読み込んでるモジュール

[root@localhost ~]# lsmod |grep hpsa
hpsa                   90197  2 

[root@localhost ~]# lsmod |grep sg
sg                     40721  0 

[root@localhost ~]# modinfo hpsa
filename:       /lib/modules/3.10.0-327.el7.x86_64/kernel/drivers/scsi/hpsa.ko
license:        GPL
version:        3.4.10-0-RH1
description:    Driver for HP Smart Array Controller version 3.4.10-0-RH1
author:         Hewlett-Packard Company
rhelversion:    7.2
srcversion:     C6C5536A08D5A5511E57F47
depends:        
intree:         Y
vermagic:       3.10.0-327.el7.x86_64 SMP mod_unload modversions 
signer:         CentOS Linux kernel signing key
sig_key:        79:AD:88:6A:11:3C:A0:22:35:26:33:6C:0F:82:5B:8A:94:29:6A:B3
sig_hashalgo:   sha256
parm:           hpsa_allow_any:Allow hpsa driver to access unknown HP Smart Array hardware (int)
parm:           hpsa_simple_mode:Use 'simple mode' rather than 'performant mode' (int)

[root@localhost ~]# modinfo sg
filename:       /lib/modules/3.10.0-327.el7.x86_64/kernel/drivers/scsi/sg.ko
alias:          char-major-21-*
version:        3.5.36
license:        GPL
description:    SCSI generic (sg) driver
author:         Douglas Gilbert
rhelversion:    7.2
srcversion:     759875EB812408E6B48E598
depends:        
intree:         Y
vermagic:       3.10.0-327.el7.x86_64 SMP mod_unload modversions 
signer:         CentOS Linux kernel signing key
sig_key:        79:AD:88:6A:11:3C:A0:22:35:26:33:6C:0F:82:5B:8A:94:29:6A:B3
sig_hashalgo:   sha256
parm:           scatter_elem_sz:scatter gather element size (default: max(SG_SCATTER_SZ, PAGE_SIZE)) (int)
parm:           def_reserved_size:size of buffer reserved for each fd (int)
parm:           allow_dio:allow direct I/O (default: 0 (disallow)) (int)

yum update 後ダメになる → kernel戻すと問題ないのでkernelUpdateが原因だと思う

[root@localhost ~]# hpssacli controller all show

Error: No controllers detected. Possible causes:
       	- The driver for the installed controller(s) is not loaded.
       	- On LINUX, the scsi_generic (sg) driver module is not loaded.
       	See the README file for more details.

scsi_generic (sg) driver をloadせよって言われるけどloadされてる

[root@localhost ~]# lsmod |grep sg
sg                     40721  0 

[root@localhost ~]# lsmod |grep hpsa
hpsa                   99212  2 
scsi_transport_sas     41224  1 hpsa # これが増えてる

新kernel

[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-514.2.2.el7.x86_64 #1 SMP Tue Dec 6 23:06:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

モジュールの様子

[root@localhost ~]# modinfo hpsa
filename:       /lib/modules/3.10.0-514.2.2.el7.x86_64/kernel/drivers/scsi/hpsa.ko
license:        GPL
version:        3.4.14-0-RH1
description:    Driver for HP Smart Array Controller version 3.4.14-0-RH1
author:         Hewlett-Packard Company
rhelversion:    7.3
srcversion:     927254528BE993F86394D5B
depends:        scsi_transport_sas
intree:         Y
vermagic:       3.10.0-514.2.2.el7.x86_64 SMP mod_unload modversions 
signer:         CentOS Linux kernel signing key
sig_key:        54:CE:18:D5:47:AB:70:33:F7:FE:23:16:22:13:74:77:98:1A:31:81
sig_hashalgo:   sha256
parm:           hpsa_allow_any:Allow hpsa driver to access unknown HP Smart Array hardware (int)
parm:           hpsa_simple_mode:Use 'simple mode' rather than 'performant mode' (int)

[root@localhost ~]# modinfo sg
filename:       /lib/modules/3.10.0-514.2.2.el7.x86_64/kernel/drivers/scsi/sg.ko
alias:          char-major-21-*
version:        3.5.36
license:        GPL
description:    SCSI generic (sg) driver
author:         Douglas Gilbert
rhelversion:    7.3
srcversion:     A41F7696E3AB081A2F088FA
depends:        
intree:         Y
vermagic:       3.10.0-514.2.2.el7.x86_64 SMP mod_unload modversions 
signer:         CentOS Linux kernel signing key
sig_key:        54:CE:18:D5:47:AB:70:33:F7:FE:23:16:22:13:74:77:98:1A:31:81
sig_hashalgo:   sha256
parm:           scatter_elem_sz:scatter gather element size (default: max(SG_SCATTER_SZ, PAGE_SIZE)) (int)
parm:           def_reserved_size:size of buffer reserved for each fd (int)
parm:           allow_dio:allow direct I/O (default: 0 (disallow)) (int)

[root@localhost ~]# modinfo scsi_transport_sas
filename:       /lib/modules/3.10.0-514.2.2.el7.x86_64/kernel/drivers/scsi/scsi_transport_sas.ko
license:        GPL
description:    SAS Transport Attributes
author:         Christoph Hellwig
rhelversion:    7.3
srcversion:     FECED383F23470E722B4D39
depends:        
intree:         Y
vermagic:       3.10.0-514.2.2.el7.x86_64 SMP mod_unload modversions 
signer:         CentOS Linux kernel signing key
sig_key:        54:CE:18:D5:47:AB:70:33:F7:FE:23:16:22:13:74:77:98:1A:31:81
sig_hashalgo:   sha256

scsi_transport_sas は新カーネルから追加されてる

[root@localhost ~]# rpm -qf /lib/modules/3.10.0-514.2.2.el7.x86_64/kernel/drivers/scsi/scsi_transport_sas.ko
kernel-3.10.0-514.2.2.el7.x86_64

新kernelのdmesg → エラーがある

[root@localhost ~]# dmesg |grep hpsa
[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.10.0-514.2.2.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet hpsa.hpsa_simple_mode=1 hpsa.hpsa_allow_any=1 LANG=ja_JP.UTF-8
[    0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-3.10.0-514.2.2.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet hpsa.hpsa_simple_mode=1 hpsa.hpsa_allow_any=1 LANG=ja_JP.UTF-8
[    1.256447] TECH PREVIEW: hpsa: this controller (0x3212) may not be fully supported.
[    1.256463] TECH PREVIEW: hpsa: this controller (0x3212) may not be fully supported.
[    1.256588] hpsa 0000:03:08.0: MSI capable controller
[    1.256623] hpsa 0000:03:08.0: irq 28 for MSI/MSI-X
[    1.256665] hpsa 0000:03:08.0: Physical aborts not supported
[    1.256668] hpsa 0000:03:08.0: Logical aborts not supported
[    1.256671] hpsa 0000:03:08.0: HP SSD Smart Path aborts not supported
[    1.315446] scsi host1: hpsa
[    1.385371] hpsa 0000:03:08.0: scsi 1:0:0:0: masked Direct-Access     ATA      ST3250620NS      PHYS DRV SSDSmartPathCap- En- Exp=0
[    1.385379] hpsa 0000:03:08.0: scsi 1:0:1:0: masked Direct-Access     ATA      ST3250620NS      PHYS DRV SSDSmartPathCap- En- Exp=0
[    1.385384] hpsa 0000:03:08.0: scsi 1:1:0:0: added Direct-Access     HP       LOGICAL VOLUME   RAID-1(+0) SSDSmartPathCap- En- Exp=1
[    1.385388] hpsa 0000:03:08.0: scsi 1:0:0:0: added RAID              HP       E200             controller SSDSmartPathCap- En- Exp=1
[    1.399183] hpsa 0000:03:08.0: addition failed -19, device not added.
[   31.392078] hpsa 0000:03:08.0: scsi 1:0:0:0: added RAID              HP       E200             controller SSDSmartPathCap- En- Exp=1
[   31.392240] hpsa 0000:03:08.0: addition failed -19, device not added.
[   61.472031] hpsa 0000:03:08.0: scsi 1:0:0:0: added RAID              HP       E200             controller SSDSmartPathCap- En- Exp=1
[   61.472171] hpsa 0000:03:08.0: addition failed -19, device not added.
[   91.551965] hpsa 0000:03:08.0: scsi 1:0:0:0: added RAID              HP       E200             controller SSDSmartPathCap- En- Exp=1
[   91.552126] hpsa 0000:03:08.0: addition failed -19, device not added.

ダメなのでccissドライバを使用することにする → 続く

rdiff-backupでMemoryError。

IMGP4927

※写真と本文は関係ありません。


バックアップサーバにあるスクリプトでGMOのVPSサーバをバックアップしてる。
公開鍵認証のssh経由でrdiff-backup。ユーザはroot。
バックアップサーバ:rdiff-backup 1.2.8(python2.6)
リモートサーバ:rdiff-backup 1.2.8(python2.7)

このサーバ以外のGMOサーバも同じスクリプトでバックアップしていて問題なし。

結果からいうと、リモートサーバの/root/.bashrc でmailqコマンドをログインするたびに実行させるようにしていて、リモート側のrdiff-backup–serverコマンドssh経由で実行するんだけど、無駄な文字列が帰ってくるせいでローカル側のrdiff-backupのメモリチェックのところでエラーになると思われる。
→mailqの実行やめたらエラーがでなくなった。

バックアップスクリプトのログはこんな感じ。
/usr/lib64/python2.6/site-packages/rdiff_backup/Main.py で python2.6 の path が入っているので、バックアップサーバ側のエラー。

Exception '' raised of class '':
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/Main.py", line 304, in error_check_Main
    try: Main(arglist)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/Main.py", line 321, in Main
    rps = map(SetConnections.cmdpair2rp, cmdpairs)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/SetConnections.py", line 76, in cmdpair2rp
    if cmd: conn = init_connection(cmd)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/SetConnections.py", line 150, in init_connection
    check_connection_version(conn, remote_cmd)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/SetConnections.py", line 158, in check_connection_version
    try: remote_version = conn.Globals.get('version')
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/connection.py", line 450, in __call__
    return apply(self.connection.reval, (self.name,) + args)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/connection.py", line 368, in reval
    result = self.get_response(req_num)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/connection.py", line 315, in get_response
    try: req_num, object = self._get()
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/connection.py", line 240, in _get
    data = self._read(length)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/connection.py", line 210, in _read
    try: return self.inpipe.read(length)

Traceback (most recent call last):
  File "/usr/bin/rdiff-backup", line 30, in 
    rdiff_backup.Main.error_check_Main(sys.argv[1:])
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/Main.py", line 304, in error_check_Main
    try: Main(arglist)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/Main.py", line 321, in Main
    rps = map(SetConnections.cmdpair2rp, cmdpairs)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/SetConnections.py", line 76, in cmdpair2rp
    if cmd: conn = init_connection(cmd)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/SetConnections.py", line 150, in init_connection
    check_connection_version(conn, remote_cmd)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/SetConnections.py", line 158, in check_connection_version
    try: remote_version = conn.Globals.get('version')
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/connection.py", line 450, in __call__
    return apply(self.connection.reval, (self.name,) + args)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/connection.py", line 368, in reval
    result = self.get_response(req_num)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/connection.py", line 315, in get_response
    try: req_num, object = self._get()
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/connection.py", line 240, in _get
    data = self._read(length)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/connection.py", line 210, in _read
    try: return self.inpipe.read(length)
MemoryError
Fatal Error: Lost connection to the remote system

–verbosity オプション付けて、–test-serverしてみた。エラーは同様。

[root@backup2012 ~]# rdiff-backup -v9 --test-server mail-16.example.jp::/ignored
Thu Oct 27 11:09:37 2016  Using rdiff-backup version 1.2.8
Thu Oct 27 11:09:37 2016  Executing ssh -C mail-16.example.jp rdiff-backup --server
Thu Oct 27 11:09:37 2016  Client sending (0): ConnectionRequest: Globals.get with 1 arguments
Thu Oct 27 11:09:37 2016  Client sending (0): 'version'
Thu Oct 27 11:09:39 2016  Exception '' raised of class '':
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/Main.py", line 304, in error_check_Main
    try: Main(arglist)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/Main.py", line 321, in Main
    rps = map(SetConnections.cmdpair2rp, cmdpairs)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/SetConnections.py", line 76, in cmdpair2rp
    if cmd: conn = init_connection(cmd)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/SetConnections.py", line 150, in init_connection
    check_connection_version(conn, remote_cmd)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/SetConnections.py", line 158, in check_connection_version
    try: remote_version = conn.Globals.get('version')
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/connection.py", line 450, in __call__
    return apply(self.connection.reval, (self.name,) + args)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/connection.py", line 368, in reval
    result = self.get_response(req_num)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/connection.py", line 315, in get_response
    try: req_num, object = self._get()
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/connection.py", line 240, in _get
    data = self._read(length)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/connection.py", line 210, in _read
    try: return self.inpipe.read(length)

Traceback (most recent call last):
  File "/usr/bin/rdiff-backup", line 30, in 
    rdiff_backup.Main.error_check_Main(sys.argv[1:])
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/Main.py", line 304, in error_check_Main
    try: Main(arglist)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/Main.py", line 321, in Main
    rps = map(SetConnections.cmdpair2rp, cmdpairs)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/SetConnections.py", line 76, in cmdpair2rp
    if cmd: conn = init_connection(cmd)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/SetConnections.py", line 150, in init_connection
    check_connection_version(conn, remote_cmd)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/SetConnections.py", line 158, in check_connection_version
    try: remote_version = conn.Globals.get('version')
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/connection.py", line 450, in __call__
    return apply(self.connection.reval, (self.name,) + args)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/connection.py", line 368, in reval
    result = self.get_response(req_num)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/connection.py", line 315, in get_response
    try: req_num, object = self._get()
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/connection.py", line 240, in _get
    data = self._read(length)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/connection.py", line 210, in _read
    try: return self.inpipe.read(length)
MemoryError

Executing ssh -C mail-16.example.jp rdiff-backup –server を実行しているのがわかる。
Client sending (0): ‘version’のあとでエラー。

CentOS 7 でPacketix Clientを使用する。

IMGP1031

※写真と本文は関係ありません。


VPN用に作成したインターフェースの起動がうまくいかなくて、つまづいた。

結果から書くと、作成したインターフェースをNetworkManagerの制御外にするとうまくいった。
作成したインターフェースのconfigで
# vi /etc/sysconfig/network-scripts/ifcfg-vpn_to_cloud
NM_CONTROLLED=”no” を追記

詳細は以下


Packetixネットワークの構成は、客先内にあるsambaファイルサーバをVPN経由で利用する目的。

クラウドにあるPacketix Serverの仮想HUBにファイルサーバ・WondowsクライアントともPacketix Clientとして接続、ローカルネットワークを構成する感じです。(WondowsクライアントのIPアドレスは仮想HUBのDHCPで配布)

なのでファイルサーバもPacketix Clientとして接続する。今回はOSがCentos7で初めてのケース。
で、サーバをセットアップ。

nmtuiでvpn用インターフェースを追加。IPアドレスなどはローカルIPで固定した。(UIから作成・設定ができる)

サーバのPacketix Clientは
/usr/local/vpnclient/vpncmd でvpnの設定する。(割愛。作成したインターフェースの紐付けとかする)

で、vpn用インターフェースを有効にしようとして、ネットワーク再起動するとエラーになる。

# systemctl restart network.service
Job for network.service failed because the control process exited with error code. See "systemctl status network.service" and "journalctl -xe" for details.

# systemctl status network.service -l
● network.service - LSB: Bring up/down networking
Loaded: loaded (/etc/rc.d/init.d/network)
Active: failed (Result: exit-code) since 木 2016-08-18 18:24:33 JST; 21s ago
Docs: man:systemd-sysv-generator(8)
Process: 5743 ExecStop=/etc/rc.d/init.d/network stop (code=exited, status=0/SUCCESS)
Process: 6009 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=1/FAILURE)

8月 18 18:24:32 hogehoge-fs2016.localdomain network[6009]: '/etc/sysconfig/network-scripts/ifcfg-lo' ファイルを読み込めませんでした。
8月 18 18:24:32 hogehoge-fs2016.localdomain network[6009]: [ OK ]
8月 18 18:24:33 hogehoge-fs2016.localdomain network[6009]: インターフェース eno1 を活性化中: 接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/3)
8月 18 18:24:33 hogehoge-fs2016.localdomain network[6009]: [ OK ]
8月 18 18:24:33 hogehoge-fs2016.localdomain network[6009]: インターフェース vpn_go_cloud を活性化中: エラー: 接続のアクティベーションに失敗: No suitable device found for this connection.
8月 18 18:24:33 hogehoge-fs2016.localdomain network[6009]: [失敗]
8月 18 18:24:33 hogehoge-fs2016.localdomain systemd[1]: network.service: control process exited, code=exited status=1
8月 18 18:24:33 hogehoge-fs2016.localdomain systemd[1]: Failed to start LSB: Bring up/down networking.
8月 18 18:24:33 hogehoge-fs2016.localdomain systemd[1]: Unit network.service entered failed state.
8月 18 18:24:33 hogehoge-fs2016.localdomain systemd[1]: network.service failed.

vpn用インターフェースで『アクティベーションに失敗』してる。

nmcliでみるとデバイスタイプが『TAP』となっていて何かおかしい

# nmcli device show vpn_go_cloud
GENERAL.デバイス:                       vpn_to_cloud
GENERAL.タイプ:                         tap
GENERAL.ハードウェアアドレス:           XX:XX:XX:XX:XX:XX
GENERAL.MTU:                            1500
GENERAL.状態:                           10 (管理無し)
GENERAL.接続:                           --
GENERAL.CON パス:                       --
IP4.アドレス[1]:                        192.168.221.3/24
IP4.ゲートウェイ:                       
IP4.ルート[1]:                          dst = 169.254.0.0/16, nh = 0.0.0.0, mt = 1004
IP6.アドレス[1]:                        fe80::XXX:XXXX:XXXX:XXXX/64

NetworkManagerを無効にする。

# vi /etc/sysconfig/network-scripts/ifcfg-vpn_to_cloud
NM_CONTROLLED=”no”
を追記(この設定をするとnmtui,nmcli経由で操作できなくなる)

# systemctl restart network.service

サービス再起動できてvpn_to_cloudが認識されるようになった。

CentOS6のころはNetworkManagerインストールしないって選択肢があったけど、7からはダメでした。NetworkManagerを停止するといろいろままならない…。

munin masterをtarballからインストール。

IMG_0006
※写真と本文は関係ありません。


古いVineなのでパッケージ管理システムではインストールできなかったので、tarballでインストールを試みた。

 [root@hoge-s root]# cat /etc/vine-release
Vine Linux 4.0 (Latour)

ダメな組み合わせ。

munin-2.0.25
rrdtool-1.4.8


munin-cronするとエラー。

 [root@hoge-s ~]# su - munin --shell=/bin/bash
[munin@hoge-s ~]$ /opt/munin/bin/munin-cron --debug
# こんな感じでエラー。
2016/01/12 16:08:29 [ERROR] In RRD: Error updating /var/opt/munin/localdomain/hoge-s.localdomain-open_inodes-max-g.rrd: '/var/opt/munin/localdomain/hoge-s.localdomain-open_inodes-max-g.rrd' is too small (should be 50608 bytes)

rrdファイルが小さいというエラーが出る。
結果的にはrrdtoolのバージョンがダメでした。

成功した組み合わせ(INSTALLドキュメント通りインストール)

munin-2.0.25
rrdtool-1.3.9

perl モジュールインストール(INSTALLドキュメントになかったもの)

cpanm Date::Manip

symbolic link 作成

ln -s /usr/local/rrdtool-1.3.9/lib/perl/5.8.6/i386-linux-thread-multi/RRDs.pm
/usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/
ln -s /usr/local/rrdtool-1.3.9/lib/perl/5.8.6/i386-linux-thread-multi/auto/RRDs/RRDs.so /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/

グラフのズームができないのでパーミッションを調整。

touch /opt/munin/log/munin/munin-cgi-graph.log
chown apache /opt/munin/log/munin/munin-cgi-graph.log
chown apache /var/opt/munin/cgi-tmp/ 

logrotateも書いた。

[root@hoge-s munin-2.0.25]# cat /etc/logrotate.d/munin
/opt/munin/log/munin/munin-graph.log {
	daily
	missingok
	rotate 7
	compress
	notifempty
	#create 640 munin munin
	create 660 munin apache
	#su munin munin
}
/opt/munin/log/munin/munin-html.log {
	daily
	missingok
	rotate 7
	compress
	notifempty
	#create 640 munin munin
	create 660 munin apache
	#su munin munin
}
/opt/munin/log/munin/munin-limits.log {
	daily
	missingok
	rotate 7
	compress
	notifempty
	#create 640 munin munin
	create 660 munin apache
	#su munin munin
}
/opt/munin/log/munin/munin-update.log {
	daily
	missingok
	rotate 7
	compress
	notifempty
	#create 640 munin munin
	create 660 munin apache
	#su munin munin
}
/opt/munin/log/munin/munin-node.log {
	daily
	missingok
	rotate 7
	compress
	notifempty
	#create 640 munin munin
	create 660 munin apache
	#su munin munin
}
/opt/munin/log/munin/munin-cgi-graph.log {
	daily
	missingok
	rotate 7
	compress
	notifempty
	#create 640 munin munin
	create 660 munin apache
	#su munin munin
}

リストを比較して、ない項目を抽出する。

IMG00016

※写真と本文は関係ありません。


join コマンドを使う。

それぞれのリストsortしてから、joinする。

$ cat pref.list # 県リストスペース区切り
saga 佐賀
nagasaki 長崎
kumamoto 熊本
oita 大分
miyazaki 宮崎


$ cat mixed.list # 雑多な地名リスト
kumamoto
america
canada
thai
saga

mixed.list(雑多な地名リスト)からpref.list(県名リスト)にないものを抽出したい場合。

$ join -v 1 <(cat mixed.list | sort -u ) <(cat pref.list | sort -u) america canada thai

※『sort -u』は unique オプション。

-v SIDE
like -a SIDE, but suppress joined output lines.
結合できなかった行だけ表示する。SIDEはどちらをベースにするかを選択する。

like -a SIDE と言われたので -a も試してみるとこうなる。
結合されたものも表示される

$ join -a 1 <(cat mixed.list | sort -u ) <(cat pref.list |sort -u) america canada kumamoto 熊本 saga 佐賀 thai

-a -v 付けないと、結合できたものだけ表示される

$ join <(cat mixed.list | sort -u ) <(cat pref.list |sort -u) kumamoto 熊本 saga 佐賀

Nagiosのアラート発報をコマンドラインから停止する。

2015-08-02 13.25.39-1

※写真と本文は関係ありません。


何台かサーバ止めたときに、アラートの発報もまとめて停止したい。
NagiosのWeb画面からぽちぽちやっても出来るけど、コマンドラインで入力すれば一気に出来る。(ぽちぽちすると監視再開の時に戻し忘れてるかも知れない…)

nagios.cmdを使う。場所は環境によって、『/usr/local/nagios/var/rw/nagios.cmd』か『/var/rw/nagios.cmd』あたりにあるはず。

Usageはここにまとまっている。(ちょっと古い)
http://old.nagios.org/developerinfo/externalcommands/commandlist.php

たとえばサーバのサービス全部のアラートを一気に止めたいときは、DISABLE_HOST_SVC_NOTIFICATIONSを使う。
※host1が止めたいホスト名



#!/bin/sh
# This is a sample shell script showing how you can submit the DISABLE_HOST_SVC_NOTIFICATIONS command
# to Nagios. Adjust variables to fit your environment as necessary.

now=`date +%s`
commandfile='/usr/local/nagios/var/rw/nagios.cmd'

/bin/printf "[%lu] DISABLE_HOST_SVC_NOTIFICATIONS;host1\n" $now > $commandfile


disableとenableはセットなのでこんなスクリプト書いた。



#/bin/sh

now=$(date +%s)
commandfile='/usr/local/nagios/var/rw/nagios.cmd'

ENABLE_OR_DISABLE=$1

case ${ENABLE_OR_DISABLE} in
disable|DISABLE) SWITCH='DISABLE' ;;
enable|ENABLE) SWITCH='ENABLE' ;;
*) echo 'You input enable or disable. Abort!'
exit 1 ;;
esac

HOSTNAMES='kintai2012_jp
new_server
switch-l3
rtx1000
user_router'

for HOST in ${HOSTNAMES}
do
printf "[%lu] ${SWITCH}_HOST_NOTIFICATIONS;${HOST}\n" $now > $commandfile
printf "[%lu] ${SWITCH}_HOST_SVC_NOTIFICATIONS;${HOST}\n" $now > $commandfile
done


HOSTNAMESにリストされてるサーバを、
./disable_NOTIFICATIONS_nagios.sh disable
./disable_NOTIFICATIONS_nagios.sh enable
でアラートOn/Off切り替えが出来る。

GMOクラウドのS3互換オブジェクトストレージを使う。

どこでもドア(ゆびつめ注意)

※写真と本文は関係ありません。


GMOクラウドのVPSとパブリッククラウド(ALTUS)を利用中。

内部のVPSとパブリッククラウドからだと転送量かからないし、S3互換なのでs3fs、s3cmd、cyberduckなんかが使える。(内部から使うときはエンドポイントをGMOクラウドの内側エンドポイントを設定する。通信料無料。)

バックアップ用にストレージを消費するのももったいないので、VPSなどのバックアップで使おうと思ったのですが、いろいろ制限があったので書いておく。

普通にs3fsでマウントしてrdiff-backupでバックアップしたかったけど…(よく使うパターン。世代管理したい&何も考えずに差分バックアップ出来る。ちょう便利!)

/etc をバックアップするとこんな感じでエラー

[foo@hogee-01-2015 test]# rdiff-backup /etc/ /mnt/s3fs/test21222/
Warning: hard linking not supported by filesystem at /mnt/s3fs/test21222/rdiff-backup-data

『hard linking not supported by filesystem』と言われる、rdiff-backup って 『hard link』使ってるんだ…

ならばとrsyncでバックアップ(S3内に0-6というディレクトリ作成して毎日バックアップ)しようとすると…

rsync: rename "/mnt/s3fs/rsync-backup/0/home/mie-mie/public_test/templates_c/.%%EE^EED^EED7C342%%index.html.php.uJtrYL" -> "mie-mie/public_test/templates_c/%%EE^EED^EED7C342%%index.html.php": No such file or directory (2)
rsync: rename "/mnt/s3fs/rsync-backup/0/home/mie-mie/public_test/templates_c/.%%E2^E2E^E2E15ECE%%layout_C.inc.php.WIfN7s" -> "mie-mie/public_test/templates_c/%%E2^E2E^E2E15ECE%%layout_C.inc.php": No such file or directory (2)

/home をrsyncしようとするとエラー。バックアップ先にはphp.logだけ。templates_cはphpのsmartyのキャッシュファイル。
原因は『使用できるObject名(=ファイル名)に制限がある』のでコピーできない。(%,^)

無理矢理ファイルコピーしたら、そのファイルどころかのそのファイルの入ったフォルダも消せななくなりました!\(^o^)/

使えないファイル名はこのあたりに。
オブジェクトキーとメタデータ – Amazon Simple Storage Service

どんなファイル名でファイルを作られるか制御できないので、不採用で…。

他にはオブジェクトストレージ内のファイルの移動はできない。
s3fsの制限だとおもう。ディレクトリに見えるけどオブジェクトなのでまあそうだよなぁ。。

[foo@hogee-01-2015 scripts]# cd /mnt/s3fs/afio/5/ # /mnt/s3fs は s3fsマウントしたディレクトリ。
[foo@hogee-01-2015 5]# ls
tree flower
[foo@hogee-01-2015 5]# mv tree fish
mv: cannot move `tree' to `fish': サポートされていない操作です

最終的には、afioでバックアップファイルをローカルに作成後、オブジェクトストレージにコピー。(テープバックアップみたいに、バックアップを直接オブジェクトに書き込むととても時間がかかる…)
使用量をケチるために週単位で差分バックアップ。
cronで月曜日にバックアップファイルを週単位で削除する。
みたいな感じで運用。

バックアップから戻すことはほとんどないのでまあこれでしばらく試してみる。

※2015/08/25追記
afioでバックアップファイルをオブジェクトストレージにコピー(移動)するところで、(長時間コピーした挙句)高確率でエラーとなるのでオブジェクトストレージ使うのやめました。(rdiff-backupで社内のストレージサーバにバックアップする運用に変更)
rdiff-backup偉大だ…。小さいファイル置き場ならエラーにならないのかなー。

今期のスキーバッジテスト

2015-04-12 15.02.50

※写真はかぐらの大回り検定バーン。


2回受験
今期も合格せず…

1回目:苗場

去年よりうまくなった気がするし、気が大きいまま受験して…
大回り/小回り/不整地/横滑り 68/68/69/68 計274点(280点以上で合格)
去年(大回り/小回り/不整地/横滑り 69/69/70/69 計277点)より点数低い。
後傾、内倒。ストックワークなどなどダメなところをたくさん指摘された。
もう少し早い時期に1回目を受けたらいいと思う。(早めに誰かに指摘されたい)

2回目:かぐら

惜しかった。
大回り/小回り/不整地/横滑り 70/70/70/69 計279点(280点以上で合格)
とても重い春の雪で、全体的に不整地。
最後の大回りは斜面のコブがひどくて『不整地中回り』な感じでした。(上の写真。検定員も苦笑いでスタート位置が下げられた)

かぐらでは初受験

前の週にバッジテスト対策講習を1日受けた。

  • きっちりストックついてからターンをはじめる練習
  • 肩のラインを斜面と並行に意識する(無理して傾けない)
  • 板に働きかける動き
  • 無理矢理形を作るのではなくて結果的にそうなる

外向・外傾って用語を使っていなかったのが印象的でした。

検定では、滑った直後に採点が出るのは初めて(腰のあたりにぶら下げた電光掲示でとてもわかりにくい)
難易度も苗場とは違うのかなぁ。『自由に滑って!』みたいな感じでした。

それにしても横滑りの高得点のだし方がわからない…。(うまくコントロールできていないってことなんだろうな…)
今期まだかぐらの検定あるけど、もういいよね。。