アーカイブ : 2014年 8月

アクセス制限(特定国)

postfix mailやブログに対し、特定国からのアクセス増加に伴い、iptablesで特定国の通信をブロック。

iptablesのバックアップ

 #cd /etc/sysconfig
 #iptables-save > iptables.bak
 #iptables-restore < iptables.bak    ##戻す場合
 #iptables -L   ##内容確認

 

中国、韓国をIPdenyのリストを参照し、iptablesで遮断(シェルファイルの実行権注意)

export PATH=$PATH:/sbin/
ZONE_FILE_URL="http://www.ipdeny.com/ipblocks/data/countries"
 for IP in $(wget -O - ${ZONE_FILE_URL}/{cn,kr}.zone | grep -v "^#|^$" )
 do
 iptables -A INPUT -s $IP -j DROP
 done

 

crontabで自動実行、シェルのログをiptables.logへ出力

 35 1 * * * /home/iptables_scripts/iptables.sh > /tmp/iptables.log 2>&1

 

crontabのログ

 tail -n 10 -f /var/log/cron

zabbix DB crashed

zabbix関連のエラーメールが届いていたので確認すると、
zabbix_server.logに「query failed: [2006] MySQL server has gone away [select hostid,status ・・・」
わからない。googleで同様の対処方法を載せているページを参考にさせていただきました。

DBへ接続

mysql> show databases;
 +--------------------+
 | Database |
 +--------------------+
 | information_schema |
 | mysql |
 | test |
 | wordpress |
 | zabbix |
 +--------------------+
 5 rows in set (0.00 sec)

zabbix table確認

mysql> use zabbix;
 Reading table information for completion of table and column names
 You can turn off this feature to get a quicker startup with -A
Database changed
 mysql>
 mysql> check table history extended;
 +----------------+-------+----------+-------------------------------------------------------+
 | Table | Op | Msg_type | Msg_text |
 +----------------+-------+----------+-------------------------------------------------------+
 | zabbix.history | check | warning | Table is marked as crashed |
 | zabbix.history | check | warning | 1 client is using or hasn't closed the table properly |
 | zabbix.history | check | error | record delete-link-chain corrupted |
 | zabbix.history | check | error | Corrupt |
 +----------------+-------+----------+-------------------------------------------------------+
 4 rows in set (0.00 sec)

壊れているようです
バックアップを取り、tableのrepair

 # service mysqld stop
 Stopping mysqld: [ OK ]
 # cp -rp /var/lib/mysql /tmp/mysqlback
 # service mysqld start
 Starting mysqld: [ OK ]
mysql> repair table zabbix.history;
 +----------------+--------+----------+------------------------------------------------+
 | Table | Op | Msg_type | Msg_text |
 +----------------+--------+----------+------------------------------------------------+
 | zabbix.history | repair | warning | Number of rows changed from 2644011 to 2644016 |
 | zabbix.history | repair | status | OK |
 +----------------+--------+----------+------------------------------------------------+
 2 rows in set (12.72 sec)
mysql> check table history extended;
 +----------------+-------+----------+----------+
 | Table | Op | Msg_type | Msg_text |
 +----------------+-------+----------+----------+
 | zabbix.history | check | status | OK |
 +----------------+-------+----------+----------+
 1 row in set (25.87 sec)