decodedns
イーサネットフレームからDNSメッセージをデコードして、クエリドメイン、応答IPアドレス、ステータスコードなどを抽出します。
コマンドプロパティ
| 項目 | 説明 |
|---|---|
| コマンドタイプ | 加工クエリ |
| 必要な権限 | なし |
| ライセンス使用量 | 該当なし |
| 並列実行 | 対応 |
| 分散実行 | データノードで実行(mapper) |
構文
decodedns
入力フィールド
| フィールド | 型 | 必須/任意 | 説明 |
|---|---|---|---|
payload | バイナリ | 必須 | イーサネットフレームデータ。バイナリ型でない場合は入力レコードをそのまま出力します。 |
出力フィールド
| フィールド | 型 | 説明 |
|---|---|---|
txid | string | DNSトランザクションID(4桁16進数文字列) |
src_ip | IPアドレス | 送信元IPアドレス |
src_port | 32ビット整数 | 送信元ポート番号 |
dst_ip | IPアドレス | 宛先IPアドレス |
dst_port | 32ビット整数 | 宛先ポート番号 |
direction | string | 通信方向。c->s(クライアントからサーバー)または s->c(サーバーからクライアント) |
bytes | 32ビット整数 | DNSメッセージサイズ(バイト) |
type | string | DNSクエリ種別。A、AAAA、CNAME、MX、NS、PTR、SOA、SRV、TXT など |
domain | string | クエリドメイン名 |
status | string | DNS応答ステータス。NO_ERROR、FORMAT_ERROR、SERVER_FAILURE、NAME_ERROR、NOT_IMPLEMENTED、REFUSED |
ip | IPアドレス | 最初のAレコードの応答IPアドレス。Aレコードがなければ null |
flags | string | DNSフラグ文字列(例: standard query response (RD RA)) |
queries | 配列 | DNSクエリセクションのレコードリスト。クエリが2個以上の場合のみ割り当て |
answers | 配列 | DNS応答セクションのレコードリスト。応答が1個以上の場合のみ割り当て |
additionals | 配列 | DNS追加セクションのレコードリスト。追加レコードが1個以上の場合のみ割り当て |
authorities | 配列 | DNS権限セクションのレコードリスト。権限レコードが1個以上の場合のみ割り当て |
エラーコード
パースエラー
該当なし
ランタイムエラー
該当なし
説明
decodedns コマンドは入力レコードの payload フィールドからイーサネットフレームを読み取りDNSプロトコルメッセージをデコードします。payload フィールドがバイナリ型でない場合は入力レコードをそのまま次のコマンドに渡します。
デコードされたDNSメッセージから送信元/宛先IPおよびポート、通信方向、クエリ種別、ドメイン、応答ステータス、最初のAレコードのIPアドレスなどを抽出します。DNSクエリ、応答、追加、権限セクションのレコードリストも配列として提供します。
queries フィールドはクエリレコードが2個以上の場合のみ割り当てられ、answers、additionals、authorities フィールドはそれぞれ1個以上のレコードがある場合のみ割り当てられます。
このコマンドは並列実行をサポートしており、分散環境ではデータノードで実行されます。
使用例
-
PCAPファイルからDNSメッセージをデコード
pcapfile /opt/logpresso/dns-capture.pcap | decodednsPCAPファイルから読み取ったイーサネットフレームのDNSメッセージをデコードします。
-
特定ドメインへのDNSクエリを照会
pcapfile /opt/logpresso/dns-capture.pcap | decodedns | search domain == "*.example.com" | fields txid, src_ip, domain, type, ip, statusDNSメッセージのうち
example.comのサブドメインへのクエリをフィルタリングして主要フィールドを照会します。 -
DNS応答ステータス別の集計
pcapfile /opt/logpresso/dns-capture.pcap | decodedns | search direction == "s->c" | stats count by statusサーバーからクライアントへ送信されたDNS応答をステータスコード別に集計します。
互換性
decodedns コマンドはSonar 4.0以前のバージョンから提供されています。