DNS RCODE をフィルタリングする tcpdump 高度なフィルタリング

DNS RCODE をフィルタリングする tcpdump 高度なフィルタリング

RCODeエラー(ServFail、NXDomainなど)をUbuntu Xenial使用してDNS応答をフィルタリングしたいと思います。tcpdumpしたがって、「0」を除くすべての RCODE です。

(望むよりIANA DNS Rコード)

したがって、UDPパケットの11番目のバイトに基づいてフィルタを使用する必要があります。 4つの低ビットにはRCODEが含まれています。値が0と異なるかどうかをテストしたいと思います。だから私はこの4つの低いビットだけを得るために左に4ビットを動かします。

このコマンドは機能しません。

tcpdump ポート 53 と 'udp[11] << 4 > 0'

listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
  14:07:04.148693 IP ns-cache0.oleane.net.domain > 192.168.151.53.50372: 17799 2/0/0 CNAME video-stats.l.google.com., A 216.58.204.142 (82)
  14:07:04.150768 IP ns-cache0.oleane.net.domain > 192.168.151.53.50372: 39389 2/0/0 CNAME video-stats.l.google.com., AAAA 2a00:1450:4007:812::200e (94)
  14:07:04.150798 IP ns-cache0.oleane.net.domain > 192.168.151.53.60464: 60219 NXDomain* 0/1/0 (104)
  14:07:04.152703 IP ns-cache0.oleane.net.domain > 192.168.151.53.40235: 3472 1/0/0 PTR ns-cache0.oleane.net. (75)

NoError DNS応答も受信しました...

ただし、このコマンドを使用すると機能します。

tcpdump ポート 53 および "udp[11]&0x0F > 0"

listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
  14:07:42.014626 IP ns-cache0.oleane.net.domain > 192.168.151.53.54270: 44447 NXDomain 0/1/1 (109)
  14:07:42.016611 IP ns-cache0.oleane.net.domain > 192.168.151.53.41840: 57750 NXDomain* 0/1/0 (104)

なぜ左に移動しないのですか?

答え1

8ビットレジスタには左シフトを実行する仕様がなく、上位ビットは破棄されます。 (実際には、シフトは32ビットまたは64ビットなどのコンピュータにあるデフォルトのサイズレジスタを使用できます。)

したがって、値を隠すために左のShiftキーを使用しないでください。

関連情報