Cloudflare เป„เบ”เป‰เป€เบœเบตเบเปเบœเปˆ xdpcap, เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบฅเบฐเบšเบปเบšเบเปˆเบญเบ XDP

เบšเปเบฅเบดเบชเบฑเบ” Cloudflare เบ™เบณ เบชเบฐ เป€เปœเบต เป‚เบ„เบ‡เบเบฒเบ™เป€เบ›เบตเบ” xdpcap, เบžเบฒเบเปƒเบ™เบ—เบตเปˆเป€เบ„เบทเปˆเบญเบ‡เบงเบดเป€เบ„เบฒเบฐเปเบžเบฑเบเป€เบเบฑเบ”เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบš tcpdump เบเปเบฒเบฅเบฑเบ‡เบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบšเบปเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบเปˆเบญเบ. XDP (eXpress Data Path). เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เบ‚เบฝเบ™เปƒเบ™ Go เปเบฅเบฐ เปเบˆเบเบขเบฒเบเป‚เบ”เบ เบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” BSD. เป‚เบ„เบ‡เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง เบเบฐเบเบฝเบก เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบœเบนเบเบกเบฑเบ”เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™ eBPF เบˆเบฒเบเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ Go.

ะฃั‚ะธะปะธั‚ะฐ xdpcap ัะพะฒะผะตัั‚ะธะผะฐ ั ะฒั‹ั€ะฐะถะตะฝะธัะผะธ ั„ะธะปัŒั‚ั€ะฐั†ะธะธ tcpdump/libpcap ะธ ะฟะพะทะฒะพะปัะตั‚ ะพะฑั€ะฐะฑะฐั‚ั‹ะฒะฐั‚ัŒ ะฝะฐ ั‚ะพะผ ะถะต ะพะฑะพั€ัƒะดะพะฒะฐะฝะธะธ ััƒั‰ะตัั‚ะฒะตะฝะฝะพ ะฑะพะปัŒัˆะธะต ะพะฑัŠั‘ะผั‹ ั‚ั€ะฐั„ะธะบะฐ. Xdpcap ั‚ะฐะบะถะต ะผะพะถะตั‚ ะฟั€ะธะผะตะฝัั‚ัŒัั ะดะปั ะพั‚ะปะฐะดะบะธ ะฒ ัƒัะปะพะฒะธัั…, ะฒ ะบะพั‚ะพั€ั‹ั… ะพะฑั‹ั‡ะฝั‹ะน tcpdump ะฝะตะฟั€ะธะผะตะฝะธะผ, ะฝะฐะฟั€ะธะผะตั€, ะบะพะณะดะฐ ะฟั€ะธะผะตะฝััŽั‚ัั ัะธัั‚ะตะผั‹ ั„ะธะปัŒั‚ั€ะฐั†ะธะธ, ะทะฐั‰ะธั‚ั‹ ะพั‚ DoS-ะฐั‚ะฐะบ ะธ ะฑะฐะปะฐะฝัะธั€ะพะฒะบะธ ะฝะฐะณั€ัƒะทะบะธ, ะธัะฟะพะปัŒะทัƒัŽั‰ะธะต ะฟะพะดัะธัั‚ะตะผัƒ ัะดั€ะฐ Linux XDP, ะพะฑั€ะฐะฑะฐั‚ั‹ะฒะฐัŽั‰ัƒัŽ ะฟะฐะบะตั‚ั‹ ะฝะฐ ัั‚ะฐะดะธะธ ะดะพ ะธั… ะพะฑั€ะฐะฑะพั‚ะบะธ ัะตั‚ะตะฒั‹ะผ ัั‚ะตะบะพะผ ัะดั€ะฐ Linux (tcpdump ะฝะต ะฒะธะดะธั‚ ะฟะฐะบะตั‚ั‹, ะพั‚ะฑั€ะพัˆะตะฝะฝั‹ะต ะพะฑั€ะฐะฑะพั‚ั‡ะธะบะพะผ XDP).

ะ’ั‹ัะพะบะฐั ะฟั€ะพะธะทะฒะพะดะธั‚ะตะปัŒะฝะพัั‚ัŒ ะดะพัั‚ะธะณะฐะตั‚ัั ะฑะปะฐะณะพะดะฐั€ั ะฟั€ะธะผะตะฝะตะฝะธัŽ ะฟะพะดัะธัั‚ะตะผ eBPF ะธ XDP. eBPF ะฟั€ะตะดัั‚ะฐะฒะปัะตั‚ ัะพะฑะพะน ะฒัั‚ั€ะพะตะฝะฝั‹ะน ะฒ ัะดั€ะพ Linux ะธะฝั‚ะตั€ะฟั€ะตั‚ะฐั‚ะพั€ ะฑะฐะนั‚ะบะพะดะฐ, ะฟะพะทะฒะพะปััŽั‰ะธะน ัะพะทะดะฐะฒะฐั‚ัŒ ะฒั‹ัะพะบะพะฟั€ะพะธะทะฒะพะดะธั‚ะตะปัŒะฝั‹ะต ะพะฑั€ะฐะฑะพั‚ั‡ะธะบะธ ะฒั…ะพะดัั‰ะธั…/ะธัั…ะพะดัั‰ะธั… ะฟะฐะบะตั‚ะพะฒ ั ะฟั€ะธะฝัั‚ะธะตะผ ั€ะตัˆะตะฝะธะน ะพะฑ ะธั… ะฟะตั€ะตะฝะฐะฟั€ะฐะฒะปะตะฝะธะธ ะธะปะธ ะพั‚ะฑั€ะฐัั‹ะฒะฐะฝะธะธ. ะŸั€ะธ ะฟะพะผะพั‰ะธ JIT-ะบะพะผะฟะธะปัั‚ะพั€ะฐ ะฑะฐะนั‚ะบะพะด eBPF ะฝะฐ ะปะตั‚ัƒ ั‚ั€ะฐะฝัะปะธั€ัƒะตั‚ัั ะฒ ะผะฐัˆะธะฝะฝั‹ะต ะธะฝัั‚ั€ัƒะบั†ะธะธ ะธ ะฒั‹ะฟะพะปะฝัะตั‚ัั ั ะฟั€ะพะธะทะฒะพะดะธั‚ะตะปัŒะฝะพัั‚ัŒัŽ ะฝะฐั‚ะธะฒะฝะพะณะพ ะบะพะดะฐ. ะŸะพะดัะธัั‚ะตะผะฐ XDP (eXpress Data Path) ะดะพะฟะพะปะฝัะตั‚ eBPF ะฒะพะทะผะพะถะฝะพัั‚ัŒัŽ ะทะฐะฟัƒัะบะฐั‚ัŒ BPF-ะฟั€ะพะณั€ะฐะผะผั‹ ะฝะฐ ัƒั€ะพะฒะฝะต ัะตั‚ะตะฒะพะณะพ ะดั€ะฐะนะฒะตั€ะฐ, ั ะฟะพะดะดะตั€ะถะบะพะน ะฟั€ัะผะพะณะพ ะดะพัั‚ัƒะฟะฐ ะบ DMA-ะฑัƒั„ะตั€ัƒ ะฟะฐะบะตั‚ะพะฒ ะธ ั€ะฐะฑะพั‚ะพะน ะฝะฐ ัั‚ะฐะดะธะธ ะดะพ ะฒั‹ะดะตะปะตะฝะธั ะฑัƒั„ะตั€ะฐ skbuff ัะตั‚ะตะฒั‹ะผ ัั‚ะตะบะพะผ.

เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบš tcpdump, เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ” xdpcap เบ—เปเบฒเบญเบดเบ”เปเบ›เบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเบฒเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™ BPF เบ„เบฅเบฒเบชเบชเบดเบ (cBPF) เป‚เบ”เบเปƒเบŠเป‰เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” libpcap เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ›เปˆเบฝเบ™เบžเบงเบเบกเบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡ eBPF เบ›เบปเบเบเบฐเบ•เบดเป‚เบ”เบเปƒเบŠเป‰ compiler. cbpfc, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ LLVM/Clang. เบขเบนเปˆเบ—เบตเปˆเบœเบปเบ™เบœเบฐเบฅเบดเบ”, เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบˆเบฒเบฅเบฐเบˆเบญเบ™เบˆเบฐเบ–เบทเบเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰เปƒเบ™เบฎเบนเบšเปเบšเบš pcap เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ—เบตเปˆเบเบฐเบเบฝเบกเปƒเบ™ xdpcap เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบถเบเบชเบฒเบ•เปเปˆเป„เบ›เปƒเบ™ tcpdump เปเบฅเบฐเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบญเบทเปˆเบ™เป†เบ—เบตเปˆเบกเบตเบขเบนเปˆ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบžเบทเปˆเบญเป€เบเบฑเบšเบเปเบฒเบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™ DNS, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ "tcpdump ip and udp port 53", เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ "xdpcap /path/to/hook capture.pcap 'ip and udp port 53โ€ฒ" เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบŠเป‰ capture. เป„เบŸเบฅเปŒ .pcap, เป€เบŠเบฑเปˆเบ™: เบ”เป‰เบงเบเบ„เบณเบชเบฑเปˆเบ‡ "tcpdump -r" เบซเบผเบทเปƒเบ™ Wireshark.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เบŠเบทเป‰เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡ DDoS, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ VPS VDS ๐Ÿ”ฅ เบŠเบทเป‰เป€เบงเบฑเบšเป„เบŠเบ—เปŒเป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบ”เป‰เบงเบเบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™ DDoS, เป€เบŠเบตเบšเป€เบงเบต VPS VDS | ProHoster