BACKsyslogでハマる使用しているルーターRT314はsyslog対応なのでlogをサーバーへ送ることができる。現用Linuxサーバーでも外部からのsyslogを受け取る設定にしてあるので、同じ事をFreeBSDサーバーでもやることにした。syslog、FreeBSDをキーワードに検索するとたくさんヒットした。それによるとsyslog.confに記述し、/var/logに受け取るファイルを作ればOKのようである。/var/log/rt314と記述した。/var/log/rt314で空のログファイルを作っておく。これだけはダメで/etc/newsyslog.confにログ・ローテーションを記述する。これは100kBになると新しいログとして古いログは圧縮して5個で廻すことを意味している。192.168.0.0/24:*"というオプションを記述する。ipfilterに穴を開ける必要があるのが、とりあえず/etc/rc.confでipfilterをコメントアウトしておいた。これでうまくログを受け取るはずなのだが・・・ハマってしまった。Web検索すると/etc/syslog.confや/etc/newsyslog.confに記述する際、左側のパートと右側のパート間の空白はTABキーを使う必要があるとのこと。最新のFreeBSDではこの縛りはないともあった。TABキーを使って書き直したがやはりダメであった。sylsogdでマニュアルを読むことにした。FreeBSDに実装されているsyslogdではLinuxのようなリモートからの受信を許可する-rオプションがないことがわかった。確かに無制限にリモートからのlogを受信してしまえば重大なセキュリティーホールになるわけで、受け取るにしても送信してくる相手を制限する-aオプションが必要なことがわかった。syslog設定の勘所その後、紆余曲折があったがようやく成功した。以下、その勘所である。/var/log/rt314当初は一番最後に記述していたが、それではダメである。!startslipと書いてある箇所よりも上に記述しよう。空白は念のためTABキーを使用する。syslogdの起動オプションは/etc/rc.confに記述するとよい。/etc/rcを書き換えても良いがこちらの方が簡単である。*:*"-4はIPv4のみでIPv6を使用しないというオプション、-nはsyslogに含まれるIPをDNSへ問い合わせしないというオプションである。当初これを記述しなかったらルーターとプロバイダーのDNS間でエンドレスのバケットが飛び回ってしまった。自宅では自前のDNSサーバーを運用していないので正引きは加入プロバイダーのものを利用しているが、Linuxサーバーのsyslogではこのようなことはない。*:*はWeb検索で見つけたが、-rオプションと同等であり、これでようやく受信できるようになった。/etc/newsyslog.confの記述は他から推測できる。これもLinuxの作法とは違うのでちょっと戸惑った。newsyslog.confで詳細が読めるが、Linuxよりも芸が細かいかもしれない。ちなみに最後のZは古いログを圧縮するものである。/varに十分な容量を確保していれば、圧縮する必要がないのでZを外すと生ファイルでローテーションされる。こちらの空白も念のためTABキーを使った。*:*となり外部からの受け取りが可能となっている。-sオプションがついていると外部からのログは受け取らないことになる。(192.168.0.1/32)からのポート514あてのudpを受け取るというものである。サーバーのIPは(192.168.0.2/32)である。httpd、ipfilterのsyslogipfilterとapache(httpd)関係のログはsyslogdを経由しないで出力されるようであり、newsyslog.confにローテーションを記述しても廻らなかった。Linuxサーバーのapacheではデフォルトで/var/logに出力されたログがローテーションされるが、FreeBSDではそのような設定になっていないようである。ipfilterも/var/logへ出力する設定になっているが、ログが廻らないのでかなり大きなファイルとなっている。例によってweb検索でいくつかの情報がヒットし、/etc/newsyslog.confの記述ヒントがありそれにそれに従って書き換えてみたが、うまく廻わらなかった。こんなところでハマるのはイヤなのでcronで強引に廻すことにした。ログを廻すスクリプトを作った。logrotate.shで実行ファイルとする。単純なスクリプトであるので説明の必要もない。バックアップをとり元ファイルを空にしているだけである。/etc/crontabに下記を追加した。/usr/local/shellscript/logrotate.shこれで1週間に一度バックアップをとることになる。廻ったsyslogipfilterとapache(httpd)関係のログはcronで強引に廻していたが、やはり何とかしたいと思い始めた。雑誌やwebで当たった結果、/etc/newsyslog.confに以下の記述をすることでようやく廻り始めた。/と怒られてしまった。Zを再挿入したら廻り始めた。これらの記述は1000kBで新しいファイルへ引き継ぎ、5回廻すことを意味している。