ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Π―Π½Π΄Π΅ΠΊΡ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ΅ΠΊΡΡΡ ΡΡΠΈΠ»ΠΈΡΡ skbtrace, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΡΠ΅ΠΊΠ° ΠΈ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π² Linux. Π£ΡΠΈΠ»ΠΈΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² ΡΠΎΡΠΌΠ΅ Π½Π°Π΄ΡΡΡΠΎΠΉΠΊΠΈ Π½Π°Π΄ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΡΠ»Π°Π΄ΠΊΠΈ BPFtrace. ΠΠΎΠ΄ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° ΡΠ·ΡΠΊΠ΅ Go ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ MIT. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ΄ΡΠ°ΠΌΠΈ Linux 4.14+ ΠΈ Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΌ BPFTrace 0.9.2+.
Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π±ΠΎΡΡ ΡΡΠΈΠ»ΠΈΡΠ° skbtrace Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠΊΡΠΈΠΏΡΡ Π½Π° Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΌ ΡΠ·ΡΠΊΠ΅ BPFtrace, ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΠΈΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΡΡ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΡ ΠΈ Π°Π½Π°Π»ΠΈΠ· Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΡΠ΅ΡΠ΅Π²ΡΠΌ ΡΡΠ΅ΠΊΠΎΠΌ Linux ΠΈ ΡΠ΅ΡΠ΅Π²ΡΠΌΠΈ ΡΠΎΠΊΠ΅ΡΠ°ΠΌΠΈ. Π‘ΠΊΡΠΈΠΏΡΡ Π·Π°ΡΠ΅ΠΌ ΡΡΠ°Π½ΡΠ»ΠΈΡΡΡΡΡΡ Π² ΡΠΎΡΠΌΡ eBPF-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠ΄ΡΠ°.
ΠΠ· ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ skbtrace ΠΎΡΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠ΅ΡΠ΅ΡΡΠ»ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ Π²Ρ
ΠΎΠ΄ΡΡΠΈΠΌ ΠΈ ΠΈΡΡ
ΠΎΠ΄ΡΡΠΈΠΌ ΡΠ΅ΡΠ΅Π²ΡΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ, Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ TCP-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΎΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ SYN Π΄ΠΎ ΠΏΡΠΈΡ
ΠΎΠ΄Π° FIN/RST, Π·Π°Π΄Π΅ΡΠΆΠ΅ΠΊ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠΎΠ±ΡΡΠΈΡΠΌΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΈΠ΅ TCP-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. Skbtrace ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ Π²ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ TCP-ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠΎΠ²Π°Π½Ρ Π² Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ, ΠΈ Π²ΡΡΡΡΠΏΠ°ΡΡ ΠΏΡΠΎΡΡΡΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΎΠΌ ΡΡΠΈΠ»ΠΈΡΡ tcpdump, ΡΠΏΠΎΡΠΎΠ±Π½ΡΠΌ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΡΠ΄ΡΠ°, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ Π²ΡΠ·ΠΎΠ² kfree_skb Π΄Π»Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π½ΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ².
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru