āĻ•ā§āĻ˛āĻžāĻ‰āĻĄāĻĢā§āĻ˛ā§‡āĻ¯āĻŧāĻžāĻ° xdpcap āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°ā§‡āĻ›ā§‡, XDP āĻ¸āĻžāĻŦāĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻŸā§āĻ°āĻžāĻĢāĻŋāĻ• āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ•

āĻ•ā§āĻ˛āĻžāĻ‰āĻĄāĻĢā§āĻ˛ā§‡āĻ¯āĻŧāĻžāĻ° āĻ•ā§‹āĻŽā§āĻĒāĻžāĻ¨āĻŋ āĻ‰āĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ‰āĻ¨ā§āĻŽā§āĻ•ā§āĻ¤ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ xdpcap, āĻ¯āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ tcpdump āĻāĻ° āĻŽāĻ¤ā§‹ āĻāĻ•āĻŸāĻŋ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ• āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡, āĻ¸āĻžāĻŦāĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ¤ā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻāĻ•ā§āĻ¸āĻĄāĻŋāĻĒāĻŋ (āĻāĻ•ā§āĻ¸āĻĒā§āĻ°ā§‡āĻ¸ āĻĄā§‡āĻŸāĻž āĻĒāĻžāĻĨ)āĨ¤ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ•ā§‹āĻĄ Go āĻāĻŦāĻ‚ āĻ˛ā§‡āĻ–āĻž āĻ†āĻ›ā§‡ āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦāĻŋāĻ¤āĻ°āĻŖ BSD āĻ˛āĻžāĻ‡āĻ¸ā§‡āĻ¨ā§āĻ¸ā§‡āĻ° āĻ…āĻ§ā§€āĻ¨ā§‡āĨ¤ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻŸāĻŋāĻ“ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ Go āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻĨā§‡āĻ•ā§‡ eBPF āĻŸā§āĻ°āĻžāĻĢāĻŋāĻ• āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ°āĻĻā§‡āĻ° āĻŦāĻžāĻāĻ§āĻžāĻ‡ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋāĨ¤

xdpcap āĻ‡āĻ‰āĻŸāĻŋāĻ˛āĻŋāĻŸāĻŋ tcpdump/libpcap āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°āĻŋāĻ‚ āĻāĻ•ā§āĻ¸āĻĒā§āĻ°ā§‡āĻļāĻ¨ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻžāĻŽāĻžā§āĻœāĻ¸ā§āĻ¯āĻĒā§‚āĻ°ā§āĻŖ āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ•āĻ‡ āĻšāĻžāĻ°ā§āĻĄāĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ°ā§‡ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–āĻ¯ā§‹āĻ—ā§āĻ¯āĻ­āĻžāĻŦā§‡ āĻŦāĻĄāĻŧ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖā§‡ āĻŸā§āĻ°ā§āĻ¯āĻžāĻĢāĻŋāĻ• āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ¯āĻŧāĨ¤ Xdpcap āĻāĻŽāĻ¨ āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡ āĻĄāĻŋāĻŦāĻžāĻ— āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯āĻ“ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ tcpdump āĻĒā§āĻ°āĻ¯ā§‹āĻœā§āĻ¯ āĻ¨āĻ¯āĻŧ, āĻ¯ā§‡āĻŽāĻ¨ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°āĻŋāĻ‚, DoS āĻ¸ā§āĻ°āĻ•ā§āĻˇāĻž, āĻāĻŦāĻ‚ āĻ˛ā§‹āĻĄ āĻŦā§āĻ¯āĻžāĻ˛ā§‡āĻ¨ā§āĻ¸āĻŋāĻ‚ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ¯āĻž Linux āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ XDP āĻ¸āĻžāĻŦāĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡, āĻ¯āĻž āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻŋāĻ‚ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ• (tcpdump) āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ•āĻ°āĻžāĻ° āĻ†āĻ—ā§‡ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸāĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ•āĻ°ā§‡ XDP āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦāĻžāĻĻ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸāĻ—ā§āĻ˛āĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻ¯āĻŧ āĻ¨āĻž)āĨ¤

āĻ‡āĻŦāĻŋāĻĒāĻŋāĻāĻĢ āĻāĻŦāĻ‚ āĻāĻ•ā§āĻ¸āĻĄāĻŋāĻĒāĻŋ āĻ¸āĻžāĻŦāĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ‰āĻšā§āĻš āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ…āĻ°ā§āĻœāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ eBPF āĻšāĻ˛ āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻ‡āĻŸāĻ•ā§‹āĻĄ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĒā§āĻ°ā§‡āĻŸāĻžāĻ° āĻ¯āĻž āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ‡āĻ¨āĻ•āĻžāĻŽāĻŋāĻ‚/āĻ†āĻ‰āĻŸāĻ—ā§‹āĻ¯āĻŧāĻŋāĻ‚ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸāĻ—ā§āĻ˛āĻŋāĻ° āĻ‰āĻšā§āĻš-āĻĒāĻžāĻ°āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ āĻ¯āĻžāĻ¤ā§‡ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋ āĻĢāĻ°ā§‹āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻ•āĻ°āĻž āĻŦāĻž āĻŦāĻžāĻ¤āĻŋāĻ˛ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻ•āĻŸāĻŋ JIT āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡, eBPF āĻŦāĻžāĻ‡āĻŸāĻ•ā§‹āĻĄ āĻŽā§‡āĻļāĻŋāĻ¨ā§‡āĻ° āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻžāĻŦāĻ˛ā§€āĻ¤ā§‡ āĻ…āĻ¨ā§āĻŦāĻžāĻĻ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ¨ā§‡āĻŸāĻŋāĻ­ āĻ•ā§‹āĻĄā§‡āĻ° āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻžāĻ°āĻŋāĻ¤āĻž āĻ¸āĻš āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ XDP (āĻāĻ•ā§āĻ¸āĻĒā§āĻ°ā§‡āĻ¸ āĻĄā§‡āĻŸāĻž āĻĒāĻžāĻĨ) āĻ¸āĻžāĻŦāĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽāĻŸāĻŋ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻĄā§āĻ°āĻžāĻ‡āĻ­āĻžāĻ° āĻ¸ā§āĻ¤āĻ°ā§‡ BPF āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻ—ā§āĻ˛āĻŋ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ¸āĻš, DMA āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻŸ āĻŦāĻžāĻĢāĻžāĻ°ā§‡ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ā§‡āĻ° āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¸āĻš eBPF āĻ•ā§‡ āĻĒāĻ°āĻŋāĻĒā§‚āĻ°āĻ• āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ• āĻĻā§āĻŦāĻžāĻ°āĻž skbuff āĻŦāĻžāĻĢāĻžāĻ° āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻ•āĻ°āĻžāĻ° āĻ†āĻ—ā§‡ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĨ¤

tcpdump-āĻāĻ° āĻŽāĻ¤ā§‹, xdpcap āĻ‡āĻ‰āĻŸāĻŋāĻ˛āĻŋāĻŸāĻŋ āĻĒā§āĻ°āĻĨāĻŽā§‡ āĻ‰āĻšā§āĻš-āĻ¸ā§āĻ¤āĻ°ā§‡āĻ° āĻŸā§āĻ°āĻžāĻĢāĻŋāĻ• āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°āĻŋāĻ‚ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ libpcap āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ•ā§āĻ˛āĻžāĻ¸āĻŋāĻ• BPF āĻ‰āĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ¯āĻŧ (cBPF) āĻ…āĻ¨ā§āĻŦāĻžāĻĻ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻ•āĻŸāĻŋ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ eBPF āĻ°ā§āĻŸāĻŋāĻ¨ āĻ†āĻ•āĻžāĻ°ā§‡ āĻ°ā§‚āĻĒāĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°ā§‡āĨ¤ āĻ¸āĻŋāĻŦāĻŋāĻĒāĻŋāĻāĻĢāĻ¸āĻŋ, LLVM/āĻ•ā§āĻ˛ā§āĻ¯āĻžāĻ‚ āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻŽā§‡āĻ¨ā§āĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĨ¤ āĻ†āĻ‰āĻŸāĻĒā§āĻŸā§‡, āĻŸā§āĻ°ā§āĻ¯āĻžāĻĢāĻŋāĻ• āĻ¤āĻĨā§āĻ¯ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ pcap āĻĢāĻ°ā§āĻŽā§āĻ¯āĻžāĻŸā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŋāĻ¤ āĻšāĻ¯āĻŧ, āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ tcpdump āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻŸā§āĻ°ā§āĻ¯āĻžāĻĢāĻŋāĻ• āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ•āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻ—āĻŦā§‡āĻˇāĻŖāĻžāĻ° āĻœāĻ¨ā§āĻ¯ xdpcap-āĻ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻŸā§āĻ°āĻžāĻĢāĻŋāĻ• āĻĄāĻžāĻŽā§āĻĒ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, DNS āĻŸā§āĻ°ā§āĻ¯āĻžāĻĢāĻŋāĻ• āĻ¤āĻĨā§āĻ¯ āĻ•ā§āĻ¯āĻžāĻĒāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡, "tcpdump ip āĻāĻŦāĻ‚ udp port 53" āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡, āĻ†āĻĒāĻ¨āĻŋ "xdpcap /path/to/hook capture.pcap 'ip āĻāĻŦāĻ‚ udp āĻĒā§‹āĻ°ā§āĻŸ 53′" āĻšāĻžāĻ˛āĻžāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻ•āĻŸāĻŋ āĻ•ā§āĻ¯āĻžāĻĒāĻšāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ .pcap āĻĢāĻžāĻ‡āĻ˛, āĻ¯ā§‡āĻŽāĻ¨ "tcpdump -r" āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻ¸āĻš āĻŦāĻž Wireshark-āĻāĨ¤

āĻ‰āĻ¤ā§āĻ¸: opennet.ru

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨