ネットワーク系エンジニアのTips。
便利ツールや検証中の小技を書きます。
最近はXML、SNMP、Syslog、WebService、Perlといろいろ。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
----------
4.1.3 MSG part of a syslog Packet
MSG部分には補足情報などを入れます。原則、Visible characterを使います。(補足:要はCaptureしたPacketの状態で、文字として理解できるもののことを言っていると思われ、テキスト型で出てくれば何の問題もない。)
MSG部分はTAGフィールドとCONTENTフィールドから構成されます。TAGフィールドにはSyslogを送出したProgramやProcessを入れます。CONTENT部分ではそのイベントの詳細を記しますが、フォーマットに決まりはありません。
TAGフィールドの中身はABNF英数字で32文字以下とします。英数字以外の文字が入った場合、その部分からCONTENTフィールドとみなされます。
CONTENTフィールドの最初は"["とか":"とかスペースなどから始める場合が多いです。
4.2 Original syslog Packets Generated by a Device
Syslogを送出する筐体に必要な条件、というのはありません。UDPポート514宛てのパケットはちゃんとSyslog Messageとみなされます。
Syslogは前述のような構成になっているのが推奨であり、開発者は以下のことに留意してください。
もし、OriginalがHEADER部分にTIMESTAMPを持っている場合、deviceが属するTimezoneでのLocaltimeとなっているべきでしょう。
もし、OriginalにHOSTNAMEフィールドがあったら、そのdeviceだとわかるhostnameをいれましょう。HostnameをつけてなかったらIPアドレスが入るようにしましょう。
もしTAGフィールドを使う場合は、Syslogを送出する原因になっているProgramやProcessを入れましょう。
----------
4.1.3 MSG part of a syslog Packet
MSG部分には補足情報などを入れます。原則、Visible characterを使います。(補足:要はCaptureしたPacketの状態で、文字として理解できるもののことを言っていると思われ、テキスト型で出てくれば何の問題もない。)
MSG部分はTAGフィールドとCONTENTフィールドから構成されます。TAGフィールドにはSyslogを送出したProgramやProcessを入れます。CONTENT部分ではそのイベントの詳細を記しますが、フォーマットに決まりはありません。
TAGフィールドの中身はABNF英数字で32文字以下とします。英数字以外の文字が入った場合、その部分からCONTENTフィールドとみなされます。
CONTENTフィールドの最初は"["とか":"とかスペースなどから始める場合が多いです。
4.2 Original syslog Packets Generated by a Device
Syslogを送出する筐体に必要な条件、というのはありません。UDPポート514宛てのパケットはちゃんとSyslog Messageとみなされます。
Syslogは前述のような構成になっているのが推奨であり、開発者は以下のことに留意してください。
もし、OriginalがHEADER部分にTIMESTAMPを持っている場合、deviceが属するTimezoneでのLocaltimeとなっているべきでしょう。
もし、OriginalにHOSTNAMEフィールドがあったら、そのdeviceだとわかるhostnameをいれましょう。HostnameをつけてなかったらIPアドレスが入るようにしましょう。
もしTAGフィールドを使う場合は、Syslogを送出する原因になっているProgramやProcessを入れましょう。
----------
PR
仕事でSyslogのRFCを読まねばならなくなった。
今あるSyslogのRFCは
RFC3164 The BSD syslog Protocol
RFC3195 Reliable Delivery for syslog
の2つだが、とりあえずフォーマットについて勉強したいため、先にRFC3164を読んでみる。
以下、自分の必要なところのみ意訳したもの。ところどころ飛んでるので注意。
ご意見あればコメント下さい。
----------
4. Packet Format and Contens
(中略、というか最後の部分のみ)
Section4.1ではSyslogの、あくまで推奨とするフォーマットについて記述します。Section4.2では、originalのSyslog Messageとして必要な項目、Section4.3ではrelayされるSyslog Messageに必要な点について記述します。
4.1 Syslog Message Parts
Syslog Messageは3つのパートからなります。1番目はPRI、2番目はHEADER、3番目はMSGです。パケット長は1024byte以下とします。最低のパケット長というのは特にありませんが、何も中身のないSyslogは送信すべきではありません。
4.2 PRI Part
PRIは3~5文字で、最初と最後を<>でくくります。ここでは"<"はRFC2234に基づきABNF %d60、">"は%d62とします。<>の中に入っている数字はPriorityを意味し、FacilityおよびSeverityのレベルを表します。
FacilityもSeverityもそれぞれのメッセージは10進数のコードを持っています。以下の表を参照してください。
このPriorityの値は、Facility Numberに8を掛け、Severityの値を足すことによって求められます。例えば、Local use 4(Facility=20)でSeverityがNotice(Severity=5)の場合は、20×8+5で165となります。
(以下略)
4.1.2 HEADER Part of a syslog Packet
HEADER部分はタイムスタンプと(syslogを上げた)host名またはそのIPアドレスが入ります。
(中略)
つまり、HEADER部分はTIMESTAMPフィールドとHOSTNAMEフィールドに分けられます。TIMESTAMPはPRI部分の最後となる">"のすぐ後ろから始まります。TIMESTAMPフィールドとHOSTNAMEフィールドの間は1スペース空けます。HOSTNAMEは、デバイスにHOSTNAMEを振られていなければIPアドレスが入ります。IPアドレスが複数ある場合は、Syslog Messageを送出するInterfaceのアドレスが入れるのがよくあるパターンですが、とはいえ、逆に、どのインターフェースからsyslogが出て行くかとは関係なくSrcアドレスを1つ、別に決めたいという場合もあるでしょう。その時はSrcとして設定したいアドレスをHOSTNAMEフィールドに入れればいいでしょう。
TIMESTAMPフィールドのフォーマットはMmm dd hh:mm:ssとします。
MmmはJan,Feb,Mar....といった感じで、アルファベット3つで月を表し、ddのところは日を入れます。一桁の日にちの場合(1日~9日)の場合は、Aug[space][space]7のように、07とするのではなくて、空いた一桁のところをスペースにします。
hh:mm:ssはLocal timeで24時間制で入れます。
HOSTNAMEの部分は、hostnameか、IPv4アドレス、またはIPv6アドレスのどれかを入れます。Hostname入れるのがいいと思いますが、Hostname使うなら、STD13(RFC1034)に準拠させてください。Spaceはいれないこと。
IPv4アドレスの場合はSTD13(RFC1035)に、IPv6アドレスの場合はRFC2373に従ってください。
HOSTNAMEフィールドの後には、1spaceいれて下さい。
----------
今あるSyslogのRFCは
RFC3164 The BSD syslog Protocol
RFC3195 Reliable Delivery for syslog
の2つだが、とりあえずフォーマットについて勉強したいため、先にRFC3164を読んでみる。
以下、自分の必要なところのみ意訳したもの。ところどころ飛んでるので注意。
ご意見あればコメント下さい。
----------
4. Packet Format and Contens
(中略、というか最後の部分のみ)
Section4.1ではSyslogの、あくまで推奨とするフォーマットについて記述します。Section4.2では、originalのSyslog Messageとして必要な項目、Section4.3ではrelayされるSyslog Messageに必要な点について記述します。
4.1 Syslog Message Parts
Syslog Messageは3つのパートからなります。1番目はPRI、2番目はHEADER、3番目はMSGです。パケット長は1024byte以下とします。最低のパケット長というのは特にありませんが、何も中身のないSyslogは送信すべきではありません。
4.2 PRI Part
PRIは3~5文字で、最初と最後を<>でくくります。ここでは"<"はRFC2234に基づきABNF %d60、">"は%d62とします。<>の中に入っている数字はPriorityを意味し、FacilityおよびSeverityのレベルを表します。
FacilityもSeverityもそれぞれのメッセージは10進数のコードを持っています。以下の表を参照してください。
Numerical Facility Code
0 kernel messages
1 user-level messages
2 mail system
3 system daemons
4 security/authorization messages (note 1)
5 messages generated internally by syslogd
6 line printer subsystem
7 network news subsystem
8 UUCP subsystem
9 clock daemon (note 2)
10 security/authorization messages (note 1)
11 FTP daemon
12 NTP subsystem
13 log audit (note 1)
14 log alert (note 1)
15 clock daemon (note 2)
16 local use 0 (local0)
17 local use 1 (local1)
18 local use 2 (local2)
19 local use 3 (local3)
20 local use 4 (local4)
21 local use 5 (local5)
22 local use 6 (local6)
23 local use 7 (local7)
Numerical Severity Code
0 Emergency: system is unusable
1 Alert: action must be taken immediately
2 Critical: critical conditions
3 Error: error conditions
4 Warning: warning conditions
5 Notice: normal but significant condition
6 Informational: informational messages
7 Debug: debug-level messages
このPriorityの値は、Facility Numberに8を掛け、Severityの値を足すことによって求められます。例えば、Local use 4(Facility=20)でSeverityがNotice(Severity=5)の場合は、20×8+5で165となります。
(以下略)
4.1.2 HEADER Part of a syslog Packet
HEADER部分はタイムスタンプと(syslogを上げた)host名またはそのIPアドレスが入ります。
(中略)
つまり、HEADER部分はTIMESTAMPフィールドとHOSTNAMEフィールドに分けられます。TIMESTAMPはPRI部分の最後となる">"のすぐ後ろから始まります。TIMESTAMPフィールドとHOSTNAMEフィールドの間は1スペース空けます。HOSTNAMEは、デバイスにHOSTNAMEを振られていなければIPアドレスが入ります。IPアドレスが複数ある場合は、Syslog Messageを送出するInterfaceのアドレスが入れるのがよくあるパターンですが、とはいえ、逆に、どのインターフェースからsyslogが出て行くかとは関係なくSrcアドレスを1つ、別に決めたいという場合もあるでしょう。その時はSrcとして設定したいアドレスをHOSTNAMEフィールドに入れればいいでしょう。
TIMESTAMPフィールドのフォーマットはMmm dd hh:mm:ssとします。
MmmはJan,Feb,Mar....といった感じで、アルファベット3つで月を表し、ddのところは日を入れます。一桁の日にちの場合(1日~9日)の場合は、Aug[space][space]7のように、07とするのではなくて、空いた一桁のところをスペースにします。
hh:mm:ssはLocal timeで24時間制で入れます。
HOSTNAMEの部分は、hostnameか、IPv4アドレス、またはIPv6アドレスのどれかを入れます。Hostname入れるのがいいと思いますが、Hostname使うなら、STD13(RFC1034)に準拠させてください。Spaceはいれないこと。
IPv4アドレスの場合はSTD13(RFC1035)に、IPv6アドレスの場合はRFC2373に従ってください。
HOSTNAMEフィールドの後には、1spaceいれて下さい。
----------
こちらのblogを参考に。
rfcを.txtで落として、WordPadからCourier New+9ptで印刷すればOKらしい。
ついこの間まで、欧米版等角フォントがCourier Newだって知らなかったし・・・☆
勉強になります。
rfcを.txtで落として、WordPadからCourier New+9ptで印刷すればOKらしい。
ついこの間まで、欧米版等角フォントがCourier Newだって知らなかったし・・・☆
勉強になります。
うちの会社が扱う製品で、Packet Captureして、分析情報をhttpとかxmlで送出する装置があるが、当然客先の環境はSSL。なので、Localで環境を作ってみようということになり、ApacheでOpenSSLをしゃべらせてみる。
ちなみにインストール先はWindows XP SP3(Chromeを入れたため最新)。
参考URLはこちら。
OpenSSLつきApacheのダウンロードはこちら。
Win32 OpenSSLのダウンロードはこちら。
Troubleshootはこちら。Apache -tコマンドをcmdで実行すると、少なくともsyntaxエラーかどうかが分かる。
私の場合は、証明書の置き場所を指定する行でパスのタイプミスがあったので、出来ていなかった模様。しばらく気がつくのに時間がかかったが、こういうのはSyntax errorで出ないので、ssl.confの見直しと証明書の再作成でTryするしかなさそう。
ちなみにインストール先はWindows XP SP3(Chromeを入れたため最新)。
参考URLはこちら。
OpenSSLつきApacheのダウンロードはこちら。
Win32 OpenSSLのダウンロードはこちら。
Troubleshootはこちら。Apache -tコマンドをcmdで実行すると、少なくともsyntaxエラーかどうかが分かる。
私の場合は、証明書の置き場所を指定する行でパスのタイプミスがあったので、出来ていなかった模様。しばらく気がつくのに時間がかかったが、こういうのはSyntax errorで出ないので、ssl.confの見直しと証明書の再作成でTryするしかなさそう。
CurrPortsです。
ダウンロードはこちら。
先日から、TCPポートをどのアプリケーションがつかんでいるのかを調べるTCP Viewというフリーウェアを使っていたが、同じ問題がUDPでも発生。
今回はUDP162をつかまれていて、WindowsのSNMP Trapサービスをとめても、まだnetstatに出てくるのでどうしたものかと思い、こっちを使ってみた。
CurPortsはTCPもUDPも対応、セッションもこのソフト上で切れるのでbetter。
ダウンロードはこちら。
先日から、TCPポートをどのアプリケーションがつかんでいるのかを調べるTCP Viewというフリーウェアを使っていたが、同じ問題がUDPでも発生。
今回はUDP162をつかまれていて、WindowsのSNMP Trapサービスをとめても、まだnetstatに出てくるのでどうしたものかと思い、こっちを使ってみた。
CurPortsはTCPもUDPも対応、セッションもこのソフト上で切れるのでbetter。