Cloudflare แž”แžถแž“แž”แŸ„แŸ‡แž–แžปแž˜แŸ’แž– xdpcap แžŠแŸ‚แž›แž‡แžถแžขแŸ’แž“แž€แžœแžทแž—แžถแž‚แž…แžšแžถแž…แžšแžŽแŸแž•แŸ’แžขแŸ‚แž€แž›แžพแž”แŸ’แžšแž–แŸแž“แŸ’แž’แžšแž„ XDP

แž€แŸ’แžšแžปแž˜แž แŸŠแžปแž“ Cloudflare แž”แž„แŸ’แž แžถแž‰ แž‚แž˜แŸ’แžšแŸ„แž„แž”แžพแž€ xdpcapแžŠแŸ‚แž›แž€แŸ’แž“แžปแž„แž“แŸ„แŸ‡แžขแŸ’แž“แž€แžœแžทแž—แžถแž‚แž€แž‰แŸ’แž…แž”แŸ‹แž–แŸแžแŸŒแž˜แžถแž“แž”แžŽแŸ’แžแžถแž‰แžŸแŸ’แžšแžŠแŸ€แž„แž“แžนแž„ tcpdump แž€แŸ†แž–แžปแž„แžแŸ’แžšแžผแžœแž”แžถแž“แž”แž„แŸ’แž€แžพแžแžกแžพแž„ แžŠแŸ‚แž›แž”แž„แŸ’แž€แžพแžแžกแžพแž„แž“แŸ…แž›แžพแž˜แžผแž›แžŠแŸ’แž‹แžถแž“แž“แŸƒแž”แŸ’แžšแž–แŸแž“แŸ’แž’แžšแž„ XDP (แž•แŸ’แž›แžผแžœแž‘แžทแž“แŸ’แž“แž“แŸแž™ eXpress) แŸ” แž€แžผแžŠแž‚แž˜แŸ’แžšแŸ„แž„แžแŸ’แžšแžผแžœแž”แžถแž“แžŸแžšแžŸแŸแžšแž“แŸ…แž€แŸ’แž“แžปแž„ Go แž“แžทแž„ แž…แŸ‚แž€แž…แžถแž™โ€‹แžŠแŸ„แž™ แž€แŸ’แžšแŸ„แž˜แžขแžถแž‡แŸ’แž‰แžถแž”แŸแžŽแŸ’แžŽ BSD แŸ” แž‚แž˜แŸ’แžšแŸ„แž„แž•แž„แžŠแŸ‚แžšแŸ” แžšแŸ€แž”แž…แŸ† แž”แžŽแŸ’แžŽแžถแž›แŸแž™แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž…แž„แžขแŸ’แž“แž€แžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แž…แžšแžถแž…แžšแžŽแŸ eBPF แž–แžธแž€แž˜แŸ’แž˜แžœแžทแž’แžธ Go แŸ”

แžงแž”แž€แžšแžŽแŸแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ xdpcap แž‚แžบแžแŸ’แžšแžผแžœแž‚แŸ’แž“แžถแž‡แžถแž˜แžฝแž™แž€แž“แŸ’แžŸแŸ„แž˜แžแŸ’แžšแž„ tcpdump/libpcap แž แžพแž™แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แžขแŸ’แž“แž€แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž”แžšแžทแž˜แžถแžŽแž…แžšแžถแž…แžšแžŽแŸแž’แŸ†แž‡แžถแž„แž“แŸ…แž›แžพแž•แŸ’แž“แŸ‚แž€แžšแžนแž„แžŠแžผแž…แž‚แŸ’แž“แžถแŸ” Xdpcap แž€แŸแžขแžถแž…แžแŸ’แžšแžผแžœแž”แžถแž“แž”แŸ’แžšแžพแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž€แŸ‚แž€แŸ†แž แžปแžŸแž“แŸ…แž€แŸ’แž“แžปแž„แž”แžšแžทแžŸแŸ’แžแžถแž“แžŠแŸ‚แž› tcpdump แž’แž˜แŸ’แž˜แžแžถแž˜แžทแž“แžขแžถแž…แžขแž“แžปแžœแžแŸ’แžแž”แžถแž“ แžŠแžผแž…แž‡แžถแž€แžถแžšแžแŸ’แžšแž„ แž€แžถแžšแž€แžถแžšแž–แžถแžš DoS แž“แžทแž„แž”แŸ’แžšแž–แŸแž“แŸ’แž’แž•แŸ’แž‘แžปแž€แžแžปแž›แŸ’แž™แž—แžถแž–แžŠแŸ‚แž›แž”แŸ’แžšแžพแž”แŸ’แžšแž–แŸแž“แŸ’แž’แžšแž„ XDP แžแžบแžŽแŸ‚แž›แž›แžธแž“แžปแž… แžŠแŸ‚แž›แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž€แž‰แŸ’แž…แž”แŸ‹แž–แŸแžแŸŒแž˜แžถแž“แž˜แžปแž“แž–แŸแž›แž–แžฝแž€แžœแžถแžแŸ’แžšแžผแžœแž”แžถแž“แžŠแŸ†แžŽแžพแžšแž€แžถแžšแžŠแŸ„แž™แž‡แž„แŸ‹แž”แžŽแŸ’แžแžถแž‰แžแžบแžŽแŸ‚แž›แž›แžธแž“แžปแž… (tcpdump แž˜แžทแž“แžƒแžพแž‰แž€แž‰แŸ’แž…แž”แŸ‹แžŠแŸ‚แž›แž‘แž˜แŸ’แž›แžถแž€แŸ‹แžŠแŸ„แž™แžขแŸ’แž“แž€แžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™ XDP) แŸ”

แž”แŸ’แžšแžŸแžทแž‘แŸ’แž’แž—แžถแž–แžแŸ’แž–แžŸแŸ‹แžแŸ’แžšแžผแžœแž”แžถแž“แžŸแž˜แŸ’แžšแŸแž…แžแžถแž˜แžšแž™แŸˆแž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž”แŸ’แžšแž–แŸแž“แŸ’แž’แžšแž„ eBPF แž“แžทแž„ XDP แŸ” eBPF แž‚แžบแž‡แžถแž€แž˜แŸ’แž˜แžœแžทแž’แžธแž”แž€แž”แŸ’แžšแŸ‚ bytecode แžŠแŸ‚แž›แž”แžถแž“แž”แž„แŸ’แž€แžพแžแžกแžพแž„แž“แŸ…แž€แŸ’แž“แžปแž„แžแžบแžŽแŸ‚แž›แž›แžธแž“แžปแž… แžŠแŸ‚แž›แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แžขแŸ’แž“แž€แž”แž„แŸ’แž€แžพแžแž€แž˜แŸ’แž˜แžœแžทแž’แžธแžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แžŠแŸ‚แž›แž˜แžถแž“แž”แŸ’แžšแžŸแžทแž‘แŸ’แž’แž—แžถแž–แžแŸ’แž–แžŸแŸ‹แž“แŸƒแž€แž‰แŸ’แž…แž”แŸ‹แž–แŸแžแŸŒแž˜แžถแž“แž…แžผแž›/แž…แŸแž‰ แž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแžŸแž˜แŸ’แžšแŸแž…แž…แžทแžแŸ’แžแžขแŸ†แž–แžธแž€แžถแžšแž”แž‰แŸ’แž‡แžผแž“แž”แž“แŸ’แž แžฌแž”แŸ„แŸ‡แž…แŸ„แž›แž–แžฝแž€แžœแžถแŸ” แžŠแŸ„แž™แž”แŸ’แžšแžพแž€แž˜แŸ’แž˜แžœแžทแž’แžธแž…แž„แž€แŸ’แžšแž„ JIT, eBPF bytecode แžแŸ’แžšแžผแžœแž”แžถแž“แž”แž€แž”แŸ’แžšแŸ‚แž—แŸ’แž›แžถแž˜แŸ—แž‘แŸ…แž€แŸ’แž“แžปแž„แž€แžถแžšแžŽแŸ‚แž“แžถแŸ†แžšแž”แžŸแŸ‹แž˜แŸ‰แžถแžŸแŸŠแžธแž“ แž แžพแž™แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž‡แžถแž˜แžฝแž™แž“แžนแž„แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž“แŸƒแž€แžผแžŠแžŠแžพแž˜แŸ” แž”แŸ’แžšแž–แŸแž“แŸ’แž’แžšแž„ XDP (eXpress Data Path) แž”แŸ†แž–แŸแž‰แž”แž“แŸ’แžแŸ‚แž˜ eBPF แž‡แžถแž˜แžฝแž™แž“แžนแž„แžŸแž˜แžแŸ’แžแž—แžถแž–แž€แŸ’แž“แžปแž„แž€แžถแžšแžŠแŸ†แžŽแžพแžšแž€แžถแžšแž€แž˜แŸ’แž˜แžœแžทแž’แžธ BPF แž“แŸ…แž€แž˜แŸ’แžšแžทแžแž€แž˜แŸ’แž˜แžœแžทแž’แžธแž”แž‰แŸ’แž‡แžถแž”แžŽแŸ’แžแžถแž‰ แžŠแŸ„แž™แž˜แžถแž“แž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž…แžผแž›แžŠแŸ†แžŽแžพแžšแž€แžถแžšแžŠแŸ„แž™แž•แŸ’แž‘แžถแž›แŸ‹แž‘แŸ…แž€แžถแž“แŸ‹แžŸแžแžทแž”แžŽแŸ’แžŠแŸ„แŸ‡แžขแžถแžŸแž“แŸ’แž“แž€แž‰แŸ’แž…แž”แŸ‹แž–แŸแžแŸŒแž˜แžถแž“ DMA แž“แžทแž„แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž“แŸ…แžŠแŸ†แžŽแžถแž€แŸ‹แž€แžถแž›แž˜แžปแž“แž–แŸแž›แžŸแžแžทแž”แžŽแŸ’แžŠแŸ„แŸ‡แžขแžถแžŸแž“แŸ’แž“ skbuff แžแŸ’แžšแžผแžœแž”แžถแž“แž”แŸ‚แž„แž…แŸ‚แž€แžŠแŸ„แž™แž”แžŽแŸ’แžแžถแž‰แž‡แž„แŸ‹แŸ”

แžŠแžผแž…แž‡แžถ tcpdump แžงแž”แž€แžšแžŽแŸแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ xdpcap แžŠแŸ†แž”แžผแž„แž”แž€แž”แŸ’แžšแŸ‚แž…แŸ’แž”แžถแž”แŸ‹แžแž˜แŸ’แžšแž„แž…แžšแžถแž…แžšแžŽแŸแž€แž˜แŸ’แžšแžทแžแžแŸ’แž–แžŸแŸ‹แž‘แŸ…แž‡แžถแžแŸ†แžŽแžถแž„ BPF แž”แžปแžšแžถแžŽ (cBPF) แžŠแŸ„แž™แž”แŸ’แžšแžพแž”แžŽแŸ’แžŽแžถแž›แŸแž™ libpcap แžŸแŸ’แžแž„แŸ‹แžŠแžถแžš แž แžพแž™แž”แž“แŸ’แž‘แžถแž”แŸ‹แž˜แž€แž”แŸ†แž”แŸ’แž›แŸ‚แž„แž–แžฝแž€แžœแžถแž‘แŸ…แž‡แžถแž‘แž˜แŸ’แžšแž„แŸ‹แž‘แž˜แŸ’แž›แžถแž”แŸ‹ eBPF แžŠแŸ„แž™แž”แŸ’แžšแžพแž€แž˜แŸ’แž˜แžœแžทแž’แžธแž…แž„แž€แŸ’แžšแž„ cbpfcแžŠแŸ„แž™แž”แŸ’แžšแžพแž€แžถแžšแžขแž—แžทแžœแžŒแŸ’แžแž“แŸ LLVM/Clang แŸ” แž“แŸ…แž‘แžทแž“แŸ’แž“แž•แž› แž–แŸแžแŸŒแž˜แžถแž“แž…แžšแžถแž…แžšแžŽแŸแžแŸ’แžšแžผแžœแž”แžถแž“แžšแž€แŸ’แžŸแžถแž‘แžปแž€แž‡แžถแž‘แž˜แŸ’แžšแž„แŸ‹ pcap แžŸแŸ’แžแž„แŸ‹แžŠแžถแžš แžŠแŸ‚แž›แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แžขแŸ’แž“แž€แž”แŸ’แžšแžพแž€แž“แŸ’แž›แŸ‚แž„แž…แžถแž€แŸ‹แžŸแŸ†แžšแžถแž˜แžŠแŸ‚แž›แž”แžถแž“แžšแŸ€แž”แž…แŸ†แž€แŸ’แž“แžปแž„ xdpcap แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแžŸแžทแž€แŸ’แžŸแžถแž‡แžถแž”แž“แŸ’แžแž”แž“แŸ’แž‘แžถแž”แŸ‹แž“แŸ…แž€แŸ’แž“แžปแž„ tcpdump แž“แžทแž„แžงแž”แž€แžšแžŽแŸแžœแžทแž—แžถแž‚แž…แžšแžถแž…แžšแžŽแŸแžŠแŸ‚แž›แž˜แžถแž“แžŸแŸ’แžšแžถแž”แŸ‹แž•แŸ’แžŸแŸแž„แž‘แŸ€แžแŸ” แžงแž‘แžถแž แžšแžŽแŸ แžŠแžพแž˜แŸ’แž”แžธแž…แžถแž”แŸ‹แž™แž€แž–แŸแžแŸŒแž˜แžถแž“แž…แžšแžถแž…แžšแžŽแŸ DNS แž‡แŸ†แž“แžฝแžŸแžฑแŸ’แž™แž€แžถแžšแž”แŸ’แžšแžพแž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถ "tcpdump ip and udp port 53" แžขแŸ’แž“แž€แžขแžถแž…แžŠแŸ†แžŽแžพแžšแž€แžถแžš "xdpcap /path/to/hook capture.pcap 'ip and udp port 53โ€ฒ" แž แžพแž™แž”แž“แŸ’แž‘แžถแž”แŸ‹แž˜แž€แž”แŸ’แžšแžพแž€แžถแžšแž…แžถแž”แŸ‹แž™แž€ แžฏแž€แžŸแžถแžš .pcap แžง. แžŠแŸ„แž™แž”แŸ’แžšแžพแž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถ "tcpdump -r" แžฌแž“แŸ…แž€แŸ’แž“แžปแž„ Wireshark แŸ”

แž”แŸ’แžšแž—แž–: opennet.ru

แž”แž“แŸ’แžแŸ‚แž˜แž˜แžแžทแž™แŸ„แž”แž›แŸ‹