squidの設定見直し
logrotate時の警告メッセージで下記のようなものが出ていたので、 調べてみると、squid 2.7系から3.4以降に変更の際には /etc/squid/squid.conf の修正が必要な様子。
2015/09/13 07:47:16| WARNING: (B) '::/0' is a subnetwork of (A) '::/0' 2015/09/13 07:47:16| WARNING: because of this '::/0' is ignored to keep splay tree searching predictable 2015/09/13 07:47:16| WARNING: You should probably remove '::/0' from the ACL named 'all' 2015/09/13 07:47:16| WARNING: (B) '127.0.0.1' is a subnetwork of (A) '127.0.0.1' 2015/09/13 07:47:16| WARNING: because of this '127.0.0.1' is ignored to keep splay tree searching predictable 2015/09/13 07:47:16| WARNING: You should probably remove '127.0.0.1' from the ACL named 'localhost' 2015/09/13 07:47:16| WARNING: (B) '127.0.0.1' is a subnetwork of (A) '127.0.0.1' 2015/09/13 07:47:16| WARNING: because of this '127.0.0.1' is ignored to keep splay tree searching predictable 2015/09/13 07:47:16| WARNING: You should probably remove '127.0.0.1' from the ACL named 'localhost' 2015/09/13 07:47:16| WARNING: (B) '127.0.0.0/8' is a subnetwork of (A) '127.0.0.0/8' 2015/09/13 07:47:16| WARNING: because of this '127.0.0.0/8' is ignored to keep splay tree searching predictable 2015/09/13 07:47:16| WARNING: You should probably remove '127.0.0.0/8' from the ACL named 'to_localhost' 2015/09/13 07:47:16| WARNING: (B) '0.0.0.0' is a subnetwork of (A) '0.0.0.0' 2015/09/13 07:47:16| WARNING: because of this '0.0.0.0' is ignored to keep splay tree searching predictable 2015/09/13 07:47:16| WARNING: You should probably remove '0.0.0.0' from the ACL named 'to_localhost' 2015/09/13 07:47:16| WARNING: (B) '0.0.0.0' is a subnetwork of (A) '0.0.0.0' 2015/09/13 07:47:16| WARNING: because of this '0.0.0.0' is ignored to keep splay tree searching predictable 2015/09/13 07:47:16| WARNING: You should probably remove '0.0.0.0' from the ACL named 'to_localhost' 2015/09/13 07:47:16| ERROR: Directive 'hierarchy_stoplist' is obsolete. 2015/09/13 07:47:16| ERROR: Directive 'upgrade_http0.9' is obsolete. 2015/09/13 07:47:16| ERROR: Directive 'broken_vary_encoding' is obsolete. 2015/09/13 07:47:16| ERROR: Directive 'extension_methods' is obsolete.
Warningについては、localhost とか all は、ACL を squid.con で定義しなくて良いみたいなので、 コメントアウトする。後半のErrorについても、古い設定項目なので、同様にコメントアウト。
(( /etc/squid/squid.conf )) #Recommended minimum configuration: - acl all src all + # acl all src all # acl manager proto cache_object # Commented out on upgrade to 3.4 - acl localhost src 127.0.0.1/32 - acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 + # acl localhost src 127.0.0.1/32 + # acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 - hierarchy_stoplist cgi-bin ? + # hierarchy_stoplist cgi-bin ? # Don't upgrade ShoutCast responses to HTTP - acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9] - upgrade_http0.9 deny shoutcast + # acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9] + # upgrade_http0.9 deny shoutcast # Apache mod_gzip and mod_deflate known to be broken so don't trust # Apache to signal ETag correctly on such responses - acl apache rep_header Server ^Apache - broken_vary_encoding allow apache + # acl apache rep_header Server ^Apache + # broken_vary_encoding allow apache # TAG: extension_methods # Squid only knows about standardized HTTP request methods. # You can add up to 20 additional "extension" methods here. - extension_methods REPORT MERGE MKACTIVITY CHECKOUT + # extension_methods REPORT MERGE MKACTIVITY CHECKOUT
サーバの不調(part2)
今朝も再びサーバが不調となった。
不調時のkernel log
改めて、不調となる時間帯の syslog, messages あたりを眺めてみると、 異常動作が始まる前に、共通して以下のようなLOGが出力されている。 どうも、kernel の cron あたりで発生。
Sep 10 09:33:50 perrine kernel: [231581.206381] cron D ffff880077456900 0 4305 1169 0x00000000 Sep 10 09:33:50 perrine kernel: [231581.206387] ffff880070e60050 0000000000000018 ffff8800744d2a20 ffffffff81466362 Sep 10 09:33:50 perrine kernel: [231581.206391] ffff880072bb8000 ffffffff8185f644 ffff880070e60050 00000000ffffffff Sep 10 09:33:50 perrine kernel: [231581.206395] ffffffff8185f648 0000000000000074 ffffffff81571eef ffffffff8185f640 Sep 10 09:33:50 perrine kernel: [231581.206398] Call Trace: Sep 10 09:33:50 perrine kernel: [231581.206409] [<ffffffff81466362>] ? __kmalloc_reserve.isra.27+0x32/0x90 Sep 10 09:33:50 perrine kernel: [231581.206415] [<ffffffff81571eef>] ? schedule+0x2f/0x80 Sep 10 09:33:50 perrine kernel: [231581.206418] [<ffffffff8157220e>] ? schedule_preempt_disabled+0xe/0x20 Sep 10 09:33:50 perrine kernel: [231581.206422] [<ffffffff81573df5>] ? __mutex_lock_slowpath+0x95/0x110 Sep 10 09:33:50 perrine kernel: [231581.206427] [<ffffffff814a750b>] ? __netlink_lookup+0xab/0xe0 Sep 10 09:33:50 perrine kernel: [231581.206430] [<ffffffff81573e8b>] ? mutex_lock+0x1b/0x30 Sep 10 09:33:50 perrine kernel: [231581.206435] [<ffffffff81107be8>] ? audit_receive+0x18/0xa0 Sep 10 09:33:50 perrine kernel: [231581.206438] [<ffffffff814a9847>] ? netlink_unicast+0x107/0x1a0 Sep 10 09:33:50 perrine kernel: [231581.206441] [<ffffffff814a9dce>] ? netlink_sendmsg+0x4ee/0x610 Sep 10 09:33:50 perrine kernel: [231581.206447] [<ffffffff8145e3bc>] ? sock_sendmsg+0x3c/0x50 Sep 10 09:33:50 perrine kernel: [231581.206451] [<ffffffff8145e82b>] ? SYSC_sendto+0xdb/0x170 Sep 10 09:33:50 perrine kernel: [231581.206455] [<ffffffff8145bb8a>] ? sock_alloc_file+0x9a/0x120 Sep 10 09:33:50 perrine kernel: [231581.206461] [<ffffffff811e7a42>] ? set_close_on_exec+0x32/0x70 Sep 10 09:33:50 perrine kernel: [231581.206466] [<ffffffff811dc5d5>] ? SyS_fcntl+0x3d5/0x600 Sep 10 09:33:50 perrine kernel: [231581.206469] [<ffffffff8145efea>] ? SyS_socket+0x8a/0xd0 Sep 10 09:33:50 perrine kernel: [231581.206475] [<ffffffff81576132>] ? system_call_fast_compare_end+0xc/0x6b
一応 xfs の repair も実行
最近の不調3回のうち、2回については、上記LOGの前に、XFS の unmount のメッセージも出ていた。 XFSを使っているのは、外付け USB-HDD なので、一応、fsck.xfs を実行させておく方がいいかな…
ただ、実行させたら、代わりに xfs_repair コマンドを使えとの警告。
# umount /dev/sdc1 # xfs_repair /dev/sdc1 Phase 1 - find and verify superblock... Phase 2 - using internal log - zero log... - scan filesystem freespace and inode maps... - found root inode chunk Phase 3 - for each AG... - scan and clear agi unlinked lists... - process known inodes and perform inode discovery... - agno = 0 - agno = 1 - agno = 2 - agno = 3 - process newly discovered inodes... Phase 4 - check for duplicate blocks... - setting up duplicate extent list... - check for inodes claiming duplicate blocks... - agno = 1 - agno = 0 - agno = 2 - agno = 3 Phase 5 - rebuild AG headers and trees... - reset superblock... Phase 6 - check inode connectivity... - resetting contents of realtime bitmap and summary inodes - traversing filesystem ... - traversal finished ... - moving disconnected inodes to lost+found ... Phase 7 - verify and correct link counts... done
ひとまず、カーネルのバージョンを落とす
前述のメッセージをみるからに、kernel の問題も考えられる。 そこで、linux-image-4.1.x を使っていたが、linux-image-4.0.x にバージョンを落とす。
i A linux-image-4.0.0-2-amd64 p linux-image-4.1.0-2-amd64
不調、治ったかな…
最初はマザーボードの不調かと思っていたけど、カーネルの問題っぽくって、バージョンを落としていたけど、 色々と新しい update を適用していたら、異常停止の症状が出ていない。 多少不安はあったけど、改めて linux-image-4.1 を入れてみた。 その後は、ひとまず安定している様子だ。
サーバの不調
子供を連れて遊びに出ている中、サーバの管理ソフトから、 色々と警告が届く。
load averageが、10を超え、プロセス数も増えている。 同じような症状は、数日前にも発生している。(その時は数十分後にreset…)
この雰囲気は、自宅サーバのマザーボードあたりが 不調と思われる。
自宅に戻り、サーバを確認するが、コンソールには何も表示されない。 再起動時の fsck も、簡単に終わったし、HDDではないと思われる。
前回のサーバ更新
前回のサーバ更新は2010年からすると、ほぼ5年目。 マザーボードあたりが壊れても仕方がない時期ではある。
そろそろ次のマシンを物色するかな…。
LOG
Service: Current Load State: WARNING Host: localhost Address: 127.0.0.1 Date/Time: Tue Sept 1 04:39:17 JST 2015 WARNING - load average: 7.44, 4.97, 2.46 Service: Current Load State: CRITICAL Host: localhost Address: 127.0.0.1 Date/Time: Tue Sept 1 04:44:17 JST 2015 CRITICAL - load average: 11.96, 9.23, 4.97 Service: No-DHCP State: CRITICAL Host: homespot Address: 192.168.11.201 Date/Time: Tue Sept 1 05:17:37 JST 2015 CRITICAL - Plugin timed out after 11 seconds Service: Total Processes State: WARNING Host: localhost Address: 127.0.0.1 Date/Time: Tue Sept 1 06:27:57 JST 2015 PROCS WARNING: 320 processes
Service: No-DHCP State: CRITICAL Host: homespot Address: 192.168.11.201 Date/Time: Mon Sept 7 11:04:48 JST 2015 CRITICAL - Plugin timed out after 11 seconds Service: Current Load State: CRITICAL Host: localhost Address: 127.0.0.1 Date/Time: Mon Sept 7 11:07:08 JST 2015 CRITICAL - load average: 10.81, 6.52, 2.91 Service: Total Processes State: WARNING Host: localhost Address: 127.0.0.1 Date/Time: Mon Sept 7 12:27:48 JST 2015 PROCS WARNING: 309 processes Service: Total Processes State: CRITICAL Host: localhost Address: 127.0.0.1 Date/Time: Mon Sept 7 14:42:48 JST 2015 PROCS CRITICAL: 461 processes
LinuxでOneDriveを使う(onedrive-d)
職場では、OneDriveなどの方が便利でもあるため、 Linux環境にonedrive-dを入れてみた。
以下は、インストールまでの方法…。といっても、 githubの説明そのまんま。
((ダウンロード)) $ git clone https://github.com/xybu/onedrive-d.git $ cd onedrive-d ((インストール)) $ sudo aptitude install python3-setuptools $ sudo python3 setup.py install $ sudo python3 setup.py clean ((初期設定の作成)) $ mkdir ~/.onedrive $ cp ./onedrive_d/res/default_ignore.ini ~/.onedrive/ignore_v2.ini $ sudo touch /var/log/onedrive_d.log $ sudo chown `whoami` /var/log/onedrive_d.log
((OneDriveへのアクセス許可)) $ onedrive-pref URLが表示されるのでブラウザにコピー&ペースト そのページにアクセスするとOneDriveの認証が表示されるので アクセス許可を与える。 最終的に表示されたページのURLを、コマンドラインにペースト 後は、ディレクトリ名などを聞かれるので必要に応じて設定。
((使ってみる)) $ onedrive-d start
ただ、使ってみると、Linux版のDropboxなどと比べると、同期がかかるまでが遅い。 また、バージョンの低いDebianだと、onedrive-d がうまくインストールされない。
うーん、この状態であれば、まだ Dropbox の方が使いやすいな。 ひとまず、自宅サーバでOneDriveのバックアップ処理様に使う程度かな。
squidの異常….
今朝は、子供から「ネットワーク繋がらない」のクレームで 起こされる。学校に行くちょっとの時間にネットで遊んでいるんだけど、 最近のパソコンのトラブルもあって、「ネット切断」には いち早くクレームを入れてくる。
原因を調べると、ハードディスクの容量不足で様々なソフトの動作に 悪影響が出ている様子。次に容量不足の場所を確認すると、 "/var/log/squid/cache.log"に延々と以下の様なログが残っている。
2015/03/10 07:55:49| httpAccept: FD 18: accept failure: (22) Invalid argument 2015/03/10 07:55:49| comm_accept: FD 18: (22) Invalid argument
調べてみると、SYN-Flood DoS アタックを受けているとか 説明が出ているけど、squid 関連のポートは外部に閉じているし、 対外アクセスのグラフでも特に異常なトラヒックは出ていないので、 たぶん関係ないと思う。
実は昨日、"aptitude safe-upgrade"を実行したら、 linux-image-3.16.0-4-amd64 の更新がかかったので、夜中の1時に rebootを実行させて、その時点からのLOG肥大。
crtmpserverとproxyポートの取り合いが原因か…
原因がsquidと判明したけど、我が家のsquidは子供のコンテンツフィルタのために、 ややこしい設定なので、これが原因かとsquid3を入れてみた。 でも、ソケット使用中みたいなエラーでうまく動かない。
でも、よくよく考えたら昨日、動画配信サーバの実験をしたかったので、 crtmpserver をインストールしたのを思い出す。"aptitude remove crtmpserver" をしたら普通に動き出したので一安心。
だけど、ポート競合してるんなら素直にエラー吐いて止まってくれよ…
メールの配送が止まってると思ったら
何気に自宅サーバにてメールが流れていないことが判明。 メールキューをみたら、nagiosなどのメールが溜まっている。
設定を確認していたら、DNSが動いていない。でもnslookupは動くぞ…。 よくよく確認すると、/etc/resolv.conf が空っぽ。 以前にも同様のトラブルがあったけど、NetworkManager がresolv.confを 編集しているのが原因。
以前の場合には、"aptitude remove network-manager" で消したけど、 最近は、依存しているパッケージが多く、消すに消せない。
そこで、改めて NetworkManager を調べると、"dns=none"という 設定があるみたい。
(( /etc/NetworkManager/NetworkManager.conf )) [main] + dns=none plugins=ifupdown,keyfile [ifupdown] managed=false
(追記)resolv.confの書き換えチェック
別トラブルでサーバの再起動がかかったら、Proxyサーバの動きが変。 原因を確認したら、今度は resolvconfパッケージが、これまたresolv.confを触っていて、 サーバの内向けDNSを、ルータDNSに勝手に書き換えている。 ということで、"aptitude remove resolvconf"してから、改めて /etc/resolv.conf を手作業で編集。 こいつは、サーバ機なんだから、resolv.conf 勝手に触るなよ….
めったにないとは思うけど、無駄に悩みたくないので、nagiosで監視させよう。
(( /etc/nagios-plugins/config/local.cfg )) define command{ command_name check_dig_match command_line /usr/lib/nagios/plugins/check_dig -H '$HOSTADDRESS$' -l '$ARG1$' -a '$ARG2$' } (( /etc/nagios3/conf.d/localhost.cfg )) define service{ use generic-service host_name localhost service_description DNS check_command check_dig_match!<自宅内ドメイン>!<自宅内サーバIPアドレス> }
でもなぁ、こんなパッケージの設定ミス対策のチェックをあちこち書き込んだら、 設定を変更するときに、2重管理してるのと一緒だしなぁ…意味ないかな。
amavisの設定も
先日、SPAMフィルタのpostgrey(ホスト名でフィルタ)の設定を 見直したが、まだメールが配送できなくなり 今度は、コンテンツフィルタのamavisの設定を見直した。
(( /etc/amavis/conf.d/50-user )) @local_domains_acl = ( ".$mydomain" , # 自宅外ドメイン ".xxxxx.net" , "xxxxx.net" , ) ; (( amavis 再起動 )) /etc/init.d/amavsi restart
postgreyのトラブルでメールが止まる
自宅で立ち上げているメールサーバで、 spamなどでrejectされるメール流量が減っていると思ったら、 普通のメールさえ流れていないことが判明。 エラーメッセージを見ると postgrey が原因っぽい。
かといって、"telnet localhost 10023"とかでも、postgreyは普通に動いている様子。 色々と調べてみたが、perl のバージョンアップの影響かも。
自宅blogの記事で、数年前にpostgreyを入れた時には、起動オプションが"–inet=10023"だと、 IPv6を使おうとすることで失敗していたことが解り、"–inet=127.0.0.1:10023" と設定していた。しかし、改めて最近のpostgrey設定記事を 探すと、前者の設定が多い。 そこで、改めて"–inet=10023"に変更したら、動き出す…
(( /etc/default/postgrey )) POSTGREY_OPTS="--inet=10023"
BuffaloルータのsyslogをDebianサーバで記録
以前から、ルータWZR-1166DHP2の状況のモニタのために、syslogの設定をしようとしたけど、 ファシリティなどの値が分らず失敗していたので、改めて設定したのでメモを残す。
記録側のDebianサーバのsyslogの設定
Debianサーバのrsyslogを受信状態にするために、 udp の 514 ポートを受信状態に設定する。
(( /etc/rsyslog.conf )) $ModLoad imudp $UDPServerRun 514
Buffaloの家庭用ルータであれば、syslog の出力ファシリティは、 ここによれば、Local1 となっているので、以下の設定を追加する。
(( /etc/rsyslog.d/local1.conf )) local1.* /var/log/local1.log
これだけでは、ファイル local1.log が肥大化するので、 logrotate の設定を行う。
(( /etc/logrotate.d/rsyslog )) : /var/log/debug /var/log/messages + /var/log/local1.log { rotate 4 weekly :
最後に、設定を反映させる。
(( 設定を反映 )) $ sudo /etc/init.d/rsyslog restart
Buffaloルータ側のsyslogの設定
管理-ログ-syslog設定にて、syslogサーバの欄にサーバIPアドレスを設定する。
(注意) LOGでのルータアドレスの逆引きとか不要かと思い、/etc/default/rsyslog に、”-x”とかの オプションをつけて再起動とかしたけど、設定が反映されない。 “ps ax | grep rsyslog”などを実行しても、”-n”のオプションしかついていない。 よくよく考えると、systemd が入っているので、/etc/systemd/system/syslog.service にて、 “ExecStart=/usr/sbin/rsyslogd -n”と記載されている。 ここを変更すればとは思うけど、「個人的設定の都合」でこの辺のファイルを書き換えるのは、 Debian流じゃないように思えないので、書き換えを躊躇している。
# systemd で全容が把握できていないだけなんだけど…