rabbit51

it's since Nov.30 2005
May.29 2014, transferred from broach

ヤマハ NVR510 / 500のsyslogをLinux rsyslogで受けた時の振る舞い

2021-12-20 09:00:00 | NVR510
ひかり電話 HGW PR-600MI DHCPv6-PDサーバーが再起動時に割り当てるPrefix」でPR-600MIのDHCPv6が発行するreconfigureメッセージをNVR500, NVR510, OpenWrtで受けたログをsyslogでDebian10サーバーに集約し監視する事にした。Debian10では、「rsyslog」が動作している。rsyslogで受け取ったNVR500/510のsyslogデータを処理中に意図しない動作があったため確認した。

(1)NVR510/500の設定
Debian10自身のログとNVR510/500のログを識別するためfacilityをlocal0に変更した(defaultは、user)。
NVR510/500のconfig
syslog host 192.168.1.57
syslog facility local0
syslog notice on
syslog debug on
WiresharkでキャプチャーされたNVR510から転送されたsyslogデータ


(2)Debian10のrsyslog設定
Debian10の初期設定から「514/UDP」でsyslogを受ける設定に変更する
NVR510/NVR500/OpenWrtに依存する設定を「/etc/rsyslog.d/」フォルダに「nvr510.conf」「nvr500.conf」「openwrt.conf」で設定した
/etc/rsyslog.conf
#### MODULES ####
module(load="imuxsock") # provides support for local system logging
module(load="imklog")   # provides kernel logging support
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")
# provides TCP syslog reception
#module(load="imtcp")
#input(type="imtcp" port="514")
#### GLOBAL DIRECTIVES ####
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# Set the default permissions for all log files.
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
# Where to place spool and state files
$WorkDirectory /var/spool/rsyslog
# Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf
### RULES ####
auth,authpriv.*			/var/log/auth.log
*.*;auth,authpriv.none		-/var/log/syslog
#cron.*				/var/log/cron.log
daemon.*			-/var/log/daemon.log
kern.*				-/var/log/kern.log
lpr.*				-/var/log/lpr.log
mail.*				-/var/log/mail.log
user.*				-/var/log/user.log
# Logging for the mail system.  Split it up so that
mail.info			-/var/log/mail.info
mail.warn			-/var/log/mail.warn
mail.err			/var/log/mail.err
# Some "catch-all" log files.
*.=debug;\
	auth,authpriv.none;\
	news.none;mail.none	-/var/log/debug
*.=info;*.=notice;*.=warn;\
	auth,authpriv.none;\
	cron,daemon.none;\
	mail,news.none		-/var/log/messages
# Emergencies are sent to everybody logged in.
*.emerg				:omusrmsg:*
/etc/rsyslog.d/nvr510.conf
:hostname,isequal,"nvr510-lan2.familyname"	/var/log/nvr510.log
& stop
「/etc/rsyslog.d」配下の設定「nvr510.conf」は、「/etc/rsyslog.conf」のRULESより前に処理されるので「nvr510-lan2.familyname」のログを「/var/log/nvr510.log」に記録後、「& stop」で処理が終了する。

(3)ログ確認と調査
WiresharkでキャプチャーされたNVR510の#3,#6のログが、「/var/log/syslog」「/var/log/messages」に記録されてしまう。
「nvr510.conf」で「& stop」が評価されず「*.*」や「*.=notice」の対象になるためと推定される。
RFC3164(The BSD syslog protocol)日本語訳】によれば、ヤマハのsyslogメッセージは、Headderパートが無く「PRI部」に続き「MSG部」で構成されているようだ(YAMAHA RTX Syslog Formatでも分析例が報告されている)。

NVR510/500からのsyslogデータは、Debian10のrsyslogで受け取った後、受信した時刻(timegenerated)と送信ホスト(fromhost)でHeadder部を補完しRULES処理を行なっているようだ。

WiresharkでキャプチャーされたNVR510の#1,#2,#5は、PRI部の後が「[」で始まるためHeadder部の時刻もホスト名も無しとされ、受信した時刻、IP Src「192.168.1.51」から名前解決した「nvr510-lan2.familyname」のFQDNがホスト名として補完される(RFC5424相当)。
#3,#6のパケットは、PRI 部の後が「Rejected」「LAN2」がホスト名として認識される(hostname)。上記設定では、「nvr510.log」に記録されず、「*.*のsyslog」と「*.=noticeのmessages」に記録される。
#4のパケットは、PRI部の後が「TUNNEL[」であるため、ホスト名無しと認識される。また、MSG部(msg)で「TUNNEL」がタグ部(syslogtag)、「[1] Rejected」以下がコンテント部と認識される。

(4)対処
rsyslog設定プロパティで「hostname」で無く「fromhost」を使用する。
/etc/rsyslog.d/nvr510.conf
:fromhost,isequal,"nvr510-lan2.familyname"	    /var/log/nvr510.log
& stop
ホスト名「"nvr510-lan2.familyname"」は、resolverで名前解決できないと成立しない。DNSの不具合や停止などがあると名前解決出来ない。IPv4アドレス「"192.168.1.51"」やIPv6アドレス「"2409:10:XXXXYY00:ae44:f2ff:feaa:bbcc"」で指定する場合は、fromhost-ipプロパティを使用する。nvr510から受けるsyslogは、全て「/var/log/nvr510.log」に記録される。facilityをlocal0に指定せず、デフォルトのuserのままで良さそう。
特定のキーワードを含むsyslogデータを抽出するには
/etc/rsyslog.d/nvr510-picked-key.conf
:fromhost, isequal,"nvr510-lan2.familyname"	    /var/log/nvr510.log
if $fromhost == 'nvr510-lan2.familyname' and $msg contains 'DHCPv6' then {
user.*	    /var/log/nvr510-dhcpv6.log
stop
}
if ( $fromhost == 'nvr510-lan2.familyname' and $pri-text startswith 'user.' and $msg contains 'DHCPv6' ) then 	    /var/log/nvr510-dhcpv6.log
& stop
:fromhost, isequal,"nvr510-lan2.familyname"	    stop
line#2-#5とline#6-#7で同じ動作をする。line#8は、line#2-#7がマッチしないときの処理。

(5)その他
OpenWrtの送信するsyslogデータは、Headder部(timereported,hostname)が含まれている。ruleでhostnameにFQDN指定すると成立しない。ドメイン名を含まないホスト名指定が必要。大文字小文字も指定が必要(case sensitive)。


 


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ひかり電話 HGW PR-600MI DHC... | トップ | ひかり電話 HGW PR-600MI DHC... »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

NVR510」カテゴリの最新記事