RedHat Linux でリモートからの syslog を受け付けるようにする方法は次の通り。
デフォルトではローカルからの syslog しか受け付けないようになっている。
これを syslogd の起動オプションを変更して、
リモートからの syslog を受け付けるようなオプションで起動させる。
具体的には 「r」 オプションを付けて起動させる。
まずはデフォルトで syslogd がどのようなオプションで起動しているかを確認してみる。
# ps -ef | grep syslog root 1581 1 0 Aug06 ? 00:00:00 syslogd -m 0 #
今は 「-m 0」 というオプションで起動していることが分かる。
次にデフォルトの syslogd の起動スクリプトを確認してみる。
# cat /etc/init.d/syslog #!/bin/bash # # syslog Starts syslogd/klogd. # # # chkconfig: 2345 12 88 # description: Syslog is the facility by which many daemons use to log \ # messages to various system log files. It is a good idea to always \ # run syslog. ### BEGIN INIT INFO # Provides: $syslog ### END INIT INFO # Source function library. . /etc/init.d/functions [ -f /sbin/syslogd ] || exit 0 [ -f /sbin/klogd ] || exit 0 # Source config if [ -f /etc/sysconfig/syslog ] ; then . /etc/sysconfig/syslog else SYSLOGD_OPTIONS="-m 0" KLOGD_OPTIONS="-2" fi RETVAL=0 if [ -z "$SYSLOG_UMASK" ] ; then SYSLOG_UMASK=077; fi umask $SYSLOG_UMASK start() { echo -n $"Starting system logger: " daemon syslogd $SYSLOGD_OPTIONS RETVAL=$? echo echo -n $"Starting kernel logger: " daemon klogd $KLOGD_OPTIONS echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/syslog return $RETVAL } stop() { echo -n $"Shutting down kernel logger: " killproc klogd echo echo -n $"Shutting down system logger: " killproc syslogd RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/syslog return $RETVAL } rhstatus() { status syslogd status klogd } restart() { stop start } reload() { RETVAL=1 syslog=`cat /var/run/syslogd.pid 2>/dev/null` echo -n "Reloading syslogd..." if [ -n ${syslog} ] && [ -e /proc/${syslog} ]; then kill -HUP $syslog; RETVAL=$? fi if [ $RETVAL -ne 0 ]; then fail else success fi echo RETVAL=1 echo -n "Reloading klogd..." klog=`cat /var/run/klogd.pid 2>/dev/null` if [ -n ${klog} ] && [ -e /proc/${klog} ]; then kill -USR2 $klog; RETVAL=$? fi if [ $RETVAL -ne 0 ]; then fail else success fi echo return $RETVAL } case "$1" in start) start ;; stop) stop ;; status) rhstatus ;; restart) restart ;; reload) reload ;; condrestart) [ -f /var/lock/subsys/syslog ] && restart || : ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart}" exit 1 esac exit $?
起動スクリプトの黄色文字部分で
SYSLOGD_OPTIONS として 「-m 0」 オプションを指定しているようだ。
そこを見ると /etc/sysconfig/syslog があれば、
それを読み込むようになっているので確認してみる。
# cat /etc/sysconfig/syslog # Options to syslogd # -m 0 disables 'MARK' messages. # -r enables logging from remote machines # -x disables DNS lookups on messages recieved with -r # See syslogd(8) for more details SYSLOGD_OPTIONS="-m 0" # Options to klogd # -2 prints all kernel oops messages twice; once for klogd to decode, and # once for processing with 'ksymoops' # -x disables all klogd processing of oops messages entirely # See klogd(8) for more details KLOGD_OPTIONS="-x" # SYSLOG_UMASK=077 # set this to a umask value to use for all log files as in umask(1). # By default, all permissions are removed for "group" and "other".
やはり黄色文字部分で SYSLOGD_OPTIONS を指定している。
ここで、この部分を編集して SYSLOGD_OPTIONS="-r -m 0" に変更する。
編集したら syslogd を再起動してオプションを確認してみる。
# /etc/init.d/syslog restart カーネルロガーを停止中: [ OK ] システムロガーを停止中: [ OK ] システムロガーを起動中: [ OK ] カーネルロガーを起動中: [ OK ] # # ps -ef | grep syslog root 7064 1 0 15:48 ? 00:00:00 syslogd -r -m 0 #
「r」 オプション付きで syslogd が起動している。
これでリモートからの syslog を受け付けるようになりました。