Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ XDP ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ Π² ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ Π·Π°ΡΠΈΡΡ ΠΎΡ DDoS-Π°ΡΠ°ΠΊ?
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² XDP ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π·Π°ΡΠΈΡΡ ΠΎΡ DDoS?

ΠΡΠ»ΠΈ Π²Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ API, ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ ΠΏΡΠΎΠΊΡΠΈ, ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΡΠ΅ΡΠ²ΠΈΡ ΠΈΠ»ΠΈ Π»ΡΠ±ΡΡ Π΄ΡΡΠ³ΡΡ ΡΠ°Π±ΠΎΡΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ, Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΈΠ· ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ Ρ Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠ΅ΠΉ, ΠΊΠΎΠ³Π΄Π° ΡΠ΅ΡΠ²Π΅Ρ Π·Π°Π½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΡΡΠ°ΡΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ» Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΡΠ΅Π½Π½ΠΎΡΡΠΈ. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΡ ΠΎΠ΄ΠΈΡ ΠΈΠ· ΡΡΡΠΎΡ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π½Π΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ ΡΠ΅Π°Π»ΡΠ½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ. ΠΠ½ΠΎ Π²ΡΡ ΠΎΠ΄ΠΈΡ ΠΈΠ· ΡΡΡΠΎΡ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ Ρ ΠΎΡΡ ΡΡΠ°ΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΡΠ°Π·Π±ΠΎΡ, ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΌΡΡΠΎΡΠ½ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π³Π»ΡΠ±ΠΆΠ΅ Π² Linux, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΡΡΠΎ-Π»ΠΈΠ±ΠΎ ΡΠΊΠ°ΠΆΠ΅Ρ Β«Π½Π΅ΡΒ». ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π·Π°ΡΠΈΡΠΎΠΉ ΠΎΡ DDoS Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π·Π΄Π΅ΡΡ: Π½Π΅ ΠΊΠ°ΠΊ ΠΈΡΡΠΎΡΠΈΡ ΠΎ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ, Π° ΠΊΠ°ΠΊ ΠΈΡΡΠΎΡΠΈΡ ΠΎ ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ².
ΠΡΠΎ Π²Π°ΠΆΠ½ΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠ² ΠΏΠΎ ΡΠ΄ΡΡ. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ, ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΡΠ΅ Ρ ΠΎΡΡΠ΅ΡΡ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ VPS ΠΈ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ², ΠΈ Π΄Π°ΠΆΠ΅ Π±ΠΈΠ·Π½Π΅Ρ-ΡΠΈΡΠ°ΡΠ΅Π»ΠΈ, ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡΠΈΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΠΈ, ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ Π±Π°Π·ΠΎΠ²ΡΠΌ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ: Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΠ»ΠΎΠ½ΠΈΡΡ ΠΏΠ»ΠΎΡ ΠΎΠΉ ΡΡΠ°ΡΠΈΠΊ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΎΠ½ ΡΠΎΠΆΠΆΡΡ Π²ΡΠ΅ΠΌΡ ΠΈ ΡΠ΅ΡΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΡ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅? ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ Π°ΡΠ°ΠΊΠΈ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ°ΡΡ ΡΠ°ΠΌ ΠΊΠ°Π½Π°Π» ΡΠ²ΡΠ·ΠΈ, Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π²ΡΠ΅Π΄ΠΎΠ½ΠΎΡΠ½ΡΠ΅ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΡΠ²Π»ΡΡΡΡΡ ΡΠ°Π½ΡΡΠ΅ β ΠΊΠ°ΠΊ Π΄Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ Π½Π° Ρ ΠΎΡΡ Π·Π°Π΄ΠΎΠ»Π³ΠΎ Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π½Π°ΡΡΡΠ΅Π½ΠΈΡ ΠΊΠ°Π½Π°Π»Π°.
ΠΠΌΠ΅Π½Π½ΠΎ Π·Π΄Π΅ΡΡ XDP ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π΄ΠΎΡΡΠΎΠΉΠ½ΡΠΌ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ. ΠΠ½ Π½Π΅ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ Π²ΡΡΠ΅ΡΡΠΎΡΡΡΡ Π·Π°ΡΠΈΡΡ, ΠΌΠ΅ΠΆΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΡΠΊΡΠ°Π½ ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π§ΡΠΎ ΠΎΠ½ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ β ΡΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ ΡΠΎΡΠΊΠ° Π² ΠΏΡΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Linux. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ XDP, ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠ° Β«Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΡΡΒ» ΠΏΠΎΠ·ΠΈΡΠΈΡ Π²Π°ΠΆΠ½Π° Π΄Π»Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ DDoS ΠΈ Π³Π΄Π΅ ΠΎΠ½ Π²ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½ΡΠΉ ΡΡΠ΅ΠΊ. ΠΠ»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π²Π°ΠΌ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π»ΠΈΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ Π½Π°Π±ΠΎΡ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ².
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Ρ XDP Π·Π° 2 ΠΌΠΈΠ½ΡΡΡ
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Ρ Π²ΠΎΠΊΡΡΠ³ XDP ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡΡΡ ΠΈ ΠΏΠΎΠ½Π°ΡΠ°Π»Ρ Π·Π²ΡΡΠ°Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠ³Π°ΡΡΠ΅, ΡΠ΅ΠΌ Π΅ΡΡΡ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅. ΠΡΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ. Π¦Π΅Π»Ρ ΡΡΠΎΠ³ΠΎ Π³Π»ΠΎΡΡΠ°ΡΠΈΡ β Π½Π΅ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ ΡΡΠ°ΡΡΡ Π² ΡΡΠΎΠΊ ΠΏΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌΡ ΡΡΡΡΠΎΠΉΡΡΠ²Ρ Linux. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΉ ΡΠ»ΠΎΠ²Π°ΡΠ½ΡΠΉ Π·Π°ΠΏΠ°Ρ, ΡΡΠΎΠ±Ρ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°Π»ΠΎΡΡ ΡΡΡΠΊΠΎ.
| Π’Π΅ΡΠΌΠΈΠ½ | ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ |
|---|---|
| π¦ XDP | Π₯ΡΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² Linux, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΡΡΡ ΡΠ°Π½Π½Π΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎ Π²Ρ ΠΎΠ΄ΡΡΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ΅ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΡΡΠ΅ΠΊ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ Π½Π°Π΄ Π½ΠΈΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ. |
| π§© eBPF | ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ΅ΠΌΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π²Π½ΡΡΡΠΈ ΡΠ΄ΡΠ° Linux, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ ΡΠΎΡΠΊΠ°Ρ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠ°. |
| π NIC driver | ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ Linux Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΠΊΠ°ΡΡΠΎΠΉ ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΎΡ Π½Π΅Ρ ΠΏΠ°ΠΊΠ΅ΡΡ. |
| π οΈ kernel networking stack | ΠΠ±ΡΡΠ½ΡΠΉ ΠΏΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Linux ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΏΠΎΡΠ»Π΅ ΠΈΡ ΠΏΡΠΈΠ±ΡΡΠΈΡ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ, ΠΌΠ΅ΠΆΡΠ΅ΡΠ΅Π²ΠΎΠ΅ ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠΎΠΊΠ΅ΡΡ ΠΈ Π΄ΠΎΡΡΠ°Π²ΠΊΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ. |
| π§ native mode | ΠΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΡΠΉ ΠΏΡΡΡ XDP, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΠΏΡΡΠΈ ΠΏΡΠΈΡΠΌΠ° Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΡΠ°Π½ΠΎ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅Ρ. |
| π₯ skb / generic mode | Π Π΅ΠΆΠΈΠΌ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ XDP ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π½ΠΎ ΠΏΠΎΠ·ΠΆΠ΅ Π² ΠΏΡΡΠΈ ΠΈ Ρ ΠΌΠ΅Π½ΡΡΠΈΠΌ Π²ΡΠΈΠ³ΡΡΡΠ΅ΠΌ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ native mode. |
| π BPF maps | ΠΠ±ΡΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ Β«ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅Β», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ XDP ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΈΠ»ΠΈ ΡΡΡΡΡΠΈΠΊΠΈ. |
| π¦ xdp-loader | ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ XDP Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°Ρ . |
| π§Ή xdp-filter | ΠΡΠΎΡΡΠ°Ρ ΡΡΠΈΠ»ΠΈΡΠ° ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ XDP, ΡΠΏΡΠΎΡΠ°ΡΡΠ°Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ XDP Π±Π΅Π· Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° eBPF. |
ΠΡΠ»ΠΈ Π²Ρ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΠ΅ ΠΈΠ· ΡΡΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ: eBPF β ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ΅ΠΌΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, Π° XDP β ΠΎΠ΄Π½ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ, Π³Π΄Π΅ ΡΡΠΎΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ. ΠΠΌΠ΅Ρ ΡΡΠΎ Π² Π²ΠΈΠ΄Ρ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π³ β Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ: ΡΡΠΎ ΠΆΠ΅ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π΄Π΅Π»Π°Π΅Ρ XDP?
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ XDP Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅

XDP β ΡΡΠΎ ΡΠ°Π½Π½ΠΈΠΉ Ρ ΡΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² Linux. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ eBPF Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ΅ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ Π΅Π³ΠΎ ΠΏΡΠΈΠ±ΡΡΠΈΡ Π½Π° ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. Π ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ Linux ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΡΡΡ Π±ΡΡΡΡΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅: ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ ΠΏΠ°ΠΊΠ΅Ρ Π΄Π°Π»ΡΡΠ΅ (XDP_PASS), Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΎΡΠ±ΡΠΎΡΠΈΡΡ Π΅Π³ΠΎ (XDP_DROP) ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ. ΠΠ»Ρ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ Π²Π°ΠΆΠ½Π°Ρ ΡΠ°ΡΡΡ ΠΏΡΠΎΡΡΠ°: XDP ΠΌΠΎΠΆΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ Β«ΠΏΡΠΎΠΏΡΡΡΠΈΡΡΒ» ΠΈΠ»ΠΈ Β«ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π΄Π΅ΡΡΒ» ΠΎΡΠ΅Π½Ρ ΡΠ°Π½ΠΎ.
Linux ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ eBPF Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°Ρ , Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ΅ΡΠ΅Π²ΡΡ . XDP β ΡΡΠΎ ΡΠ΅ΡΠ΅Π²Π°Ρ Π²Π΅ΡΡΠΈΡ, ΡΠΎΠ·Π΄Π°Π½Π½Π°Ρ Π΄Π»Ρ ΠΎΡΠ΅Π½Ρ ΡΠ°Π½Π½Π΅ΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, XDP β ΡΡΠΎ Π½Π΅ Π΄ΡΡΠ³ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ Π΄Π»Ρ eBPF. ΠΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ eBPF Ρ ΠΎΡΠ΅Π½Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠΎΠ»ΡΡ.
ΠΠΌΠ΅Π½Π½ΠΎ ΡΡΠ° ΡΠΎΠ»Ρ Π΄Π΅Π»Π°Π΅Ρ XDP ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ Π΄Π»Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ DDoS. XDP Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΏΡΠΎΡ ΠΎΠ΄ΡΡ ΡΠ΅ΡΠ΅Π· ΠΎΠ±ΡΡΠ½ΡΠ΅, Π±ΠΎΠ»Π΅Π΅ ΡΡΠΆΡΠ»ΡΠ΅ ΡΠ°ΡΡΠΈ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΠΏΡΡΠΈ Linux. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Linux ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΠ°ΡΠΈΠΊΠ΅ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΡΡΠ°ΡΠΈΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠΈΠ»ΠΈΠΉ Π½Π° ΠΌΠ΅ΠΆΡΠ΅ΡΠ΅Π²ΠΎΠ΅ ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ, ΡΠΎΠΊΠ΅ΡΡ ΠΈ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΡΡΡΡΠ΅ ΡΠ°ΠΌΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ XDP β Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ, Π° ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½Π΅ΠΌ ΡΡΠ°ΠΏΠ΅.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, XDP ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ DDoS. ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΠΊΠΎΠΌ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². ΠΠΎ Π·Π°ΡΠΈΡΠ° ΠΎΡ DDoS β ΡΡΠΎ ΡΠ°ΠΌΠΎΠ΅ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π΅Π³ΠΎ ΡΠ΅Π½Π½ΠΎΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΈΠ΄Π΅Π΅: ΡΠ΅ΠΌ ΡΠ°Π½ΡΡΠ΅ ΠΎΡΠΊΠ»ΠΎΠ½ΡΠ΅ΡΡΡ ΠΏΠ»ΠΎΡ ΠΎΠΉ ΡΡΠ°ΡΠΈΠΊ, ΡΠ΅ΠΌ ΠΌΠ΅Π½ΡΡΠ΅ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ΅ΡΠ²Π΅ΡΡ. Π ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎ ΡΠ°ΠΊ Π²Π°ΠΆΠ½ΠΎ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π³ β ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΎ ΠΌΠ΅ΡΡΠΎ, Π³Π΄Π΅ XDP Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΏΡΡΠΈ ΠΏΡΠΈΡΠΌΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ².
ΠΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ: XDP β ΡΡΠΎ Π²ΠΎΡΠΎΡΠ°, Π° Π½Π΅ ΡΡΠΎΠΉΠΊΠ° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ

ΠΡΠΎΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ XDP ΠΊΠ°ΠΊ ΠΎΡ ΡΠ°Π½Π½ΠΈΠΊΠ° Ρ Π²ΠΎΡΠΎΡ, Π° Π½Π΅ ΠΊΠ°ΠΊ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° Π³Π»ΡΠ±ΠΆΠ΅ Π²Π½ΡΡΡΠΈ Π·Π΄Π°Π½ΠΈΡ. ΠΡΠ»ΠΈ ΡΠ²Π½ΠΎ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Ρ ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ Ρ Π²ΠΎΡΠΎΡ, Π·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ·Π±Π΅Π³Π°Π΅Ρ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ ΡΠ΅ΠΏΠΎΡΠΊΠΈ Π±Π΅ΡΡΠΌΡΡΠ»Π΅Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ. ΠΠΈΠΊΡΠΎ Π½Π΅ ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ Π΄Π²Π΅ΡΡ, Π½Π΅ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅Ρ Π΅Π³ΠΎ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈ Π½Π΅ Π²Π΅Π΄ΡΡ ΠΏΠΎ ΠΊΠΎΡΠΈΠ΄ΠΎΡΡ. ΠΡΠ»ΠΈ ΠΆΠ΄Π°ΡΡ Π΄ΠΎ ΡΡΠΎΠΉΠΊΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ, ΡΡΠΎΠ±Ρ ΠΎΡΠΊΠ°Π·Π°ΡΡ Π΅ΠΌΡ, Π·Π΄Π°Π½ΠΈΠ΅ ΡΠΆΠ΅ ΠΏΠΎΡΡΠ°ΡΠΈΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π΅ Π½Π° ΡΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°.
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² Linux ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ°ΠΊ ΠΆΠ΅. Π ΡΠΏΡΠΎΡΡΠ½Π½ΠΎΠΌ ΠΏΡΡΠΈ ΠΏΡΠΈΡΠΌΠ° ΠΏΠ°ΠΊΠ΅Ρ ΠΏΡΠΈΠ±ΡΠ²Π°Π΅Ρ ΠΎΡ NIC ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°, Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ XDP, ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΠΏΡΡΡ Π² Π±ΠΎΠ»Π΅Π΅ Π±ΠΎΠ³Π°ΡΡΠΉ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΡΡΠ΅ΠΊ ΡΠ΄ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΈΡΠ°Π΅Ρ conntrack, ΠΌΠ΅ΠΆΡΠ΅ΡΠ΅Π²ΠΎΠ΅ ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠΎΠΊΠ΅ΡΡ ΠΈ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΡΡΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎ ΠΏΡΡΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
NIC / driver
β
XDP β earliest checkpoint
β
kernel networking stack
β
conntrack / firewall
β
socket
β
applicationΠ native mode XDP ΠΌΠΎΠΆΠ΅Ρ Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Linux Π²ΡΠ΄Π΅Π»ΠΈΡ ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ ΠΎΠ±ΡΡΠ½ΡΡ ΡΡΡΡΠΊΡΡΡΡ sk_buff β Π±ΠΎΠ»Π΅Π΅ Π±ΠΎΠ³Π°ΡΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΠ΄ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΠΎΡΡΠ°Π»ΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΡΡΠ΅ΠΊΠ°. ΠΡΠ° Π΄Π΅ΡΠ°Π»Ρ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ, Π½ΠΎ ΠΎΠ½Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΡΡ ΠΈΡΡΠΎΡΠΈΠΈ ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΡΠ»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ ΡΠ²Π½ΠΎ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»Π΅Π½, Π΅Π³ΠΎ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Linux ΠΏΠΎΡΡΡΠΎΠΈΡ ΡΡΡ ΠΎΠ±ΡΡΠ½ΡΡ ΡΡΡΡΠΊΡΡΡΡ, ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ°Π±ΠΎΡΡ CPU, ΠΌΠ΅Π½ΡΡΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° ΠΏΠ°ΠΌΡΡΡ ΠΈ ΠΌΠ΅Π½ΡΡΠ΅ Π΄Π°Π²Π»Π΅Π½ΠΈΡ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ°ΠΏΡ. XDP_PASS ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ Π½Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΏΠ»ΠΎΡ ΠΎΠΉ; ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Β«ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡΒ», ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»Π΅Π³ΠΈΡΠΈΠΌΠ½ΠΎΠΌΡ ΡΡΠ°ΡΠΈΠΊΡ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ Π΄Π°Π»ΡΡΠ΅. XDP_DROP β Π·Π²Π΅Π·Π΄Π° Π·Π°ΡΠΈΡΡ ΠΎΡ DDoS, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΠΏΡΡΡ Π΄ΠΎ Π½Π°ΡΠ°Π»Π° Π΄ΠΎΡΠΎΠ³ΠΎΡΡΠΎΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ. ΠΡΡΠ³ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ REDIRECT, ΡΠΎΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ, Π½ΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌΠΈ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΡ.
ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ, ΡΠ΅Π½Π½ΠΎΡΡΡ Π΄Π»Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ DDoS β ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ β ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π»Π΅Π³ΡΠ΅ ΠΎΡΠ΅Π½ΠΈΡΡ ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½ΠΎ.
ΠΠ°ΠΊ XDP ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π² Π·Π°ΡΠΈΡΠ΅ ΠΎΡ DDoS β ΠΈ Π³Π΄Π΅ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Π΅Π³ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ

ΠΡΠ³ΡΠΌΠ΅Π½Ρ Π² ΠΏΠΎΠ»ΡΠ·Ρ XDP Π΄Π»Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ DDoS ΠΏΡΠΎΡΡ: ΡΡΠΎ Π΄Π΅ΡΡΠ²ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠΊΠ»ΠΎΠ½ΠΈΡΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΉ ΠΌΡΡΠΎΡ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Linux ΠΏΠΎΡΡΠ°ΡΠΈΡ ΡΠ΅ΡΡΡΡΡ Π½Π° conntrack, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠΎΠΊΠ΅ΡΠΎΠ² ΠΈ Π΄ΠΎΡΡΠ°Π²ΠΊΡ Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ. ΠΡΠ»ΠΈ Ρ ΠΎΡΡ ΠΏΠΎΠ΄Π²Π΅ΡΠ³Π°Π΅ΡΡΡ Π±ΠΎΠΌΠ±Π°ΡΠ΄ΠΈΡΠΎΠ²ΠΊΠ΅ Π²ΡΡΠΎΠΊΠΎΡΠΊΠΎΡΠΎΡΡΠ½ΡΠΌ ΡΡΠ°ΡΠΈΠΊΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄ΠΎΡΡΠΈΠ³Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π½ΠΎ ΠΎΡΠ±ΡΠΎΡΠ΅Π½Π½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ β ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅ΡΠ²Π΅ΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅. ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ XDP Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ Π½Π° Π³ΡΠ°Π½ΠΈΡΠ΅ L3/L4 ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ: ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ Π°Π΄ΡΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΌ Π²Ρ ΡΠΆΠ΅ Π½Π΅ Π΄ΠΎΠ²Π΅ΡΡΠ΅ΡΠ΅, ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½Ρ, ΠΈΠ»ΠΈ ΡΠ°Π±Π»ΠΎΠ½Ρ ΡΡΠ°ΡΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π½ΠΎ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ Π»Π΅Π³ΠΈΡΠΈΠΌΠ½ΡΠΌΠΈ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ.
ΠΡΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΌΡΡΠΎΡΠ½ΡΡ ΡΠ»ΡΠ΄ΠΎΠ², Π³Π΄Π΅ Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½Π°Ρ ΡΠ°ΡΡΡ β Π½Π΅ ΠΎΠ±ΡΡΠΌ ΡΡΡΡΡ Π΄Π°Π½Π½ΡΡ , Π° ΠΏΠΎΠ²ΡΠΎΡΠ½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². ΠΠ±ΡΠ°ΡΠ½ΡΠΉ ΠΏΡΠΎΠΊΡΠΈ, UDP-ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ ΠΈΠ»ΠΈ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ API ΠΌΠΎΠ³ΡΡ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡΡΡΡ Π·Π°Π΄ΠΎΠ»Π³ΠΎ Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π½Π°ΡΡΡΠ΅Π½ΠΈΡ ΠΊΠ°Π½Π°Π»Π°, Π΅ΡΠ»ΠΈ Ρ ΠΎΡΡ Π·Π°Π½ΡΡ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ Π±Π΅ΡΡΠΌΡΡΠ»ΠΈΡΡ. XDP Π΄Π°ΡΡ Π²Π°ΠΌ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΡΠ΅ΡΡ ΡΠ°ΡΡΡ ΡΡΠΈΡ ΠΏΠΎΡΠ΅ΡΡ Π±Π»ΠΈΠ·ΠΊΠΎ ΠΊ Π²Ρ ΠΎΠ΄Ρ.
π ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: XDP Π»ΡΡΡΠ΅ Π·Π°ΡΠΈΡΠ°Π΅Ρ ΡΠ΅ΡΡΡΡΡ Ρ ΠΎΡΡΠ°, ΡΠ΅ΠΌ Π½Π°ΡΡΡΠ΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ΡΡΠΎΡΡΠΈΠΉ ΠΊΠ°Π½Π°Π». ΠΡΠ»ΠΈ ΠΊΠ°Π½Π°Π» ΠΊ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΡ ΡΠΆΠ΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½, ΡΠ°Π½Π½Π΅Π΅ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΡΠΎΠ²Π½Π΅ Ρ ΠΎΡΡΠ° ΡΠ»ΠΈΡΠΊΠΎΠΌ Π·Π°ΠΏΠΎΠ·Π΄Π°Π»ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΠΏΡΡΡ.
ΠΡΠΎ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π³Π»Π°Π²Π½ΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ XDP ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΊ ΠΌΠ½ΠΎΠ³ΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅, Π° Π½Π΅ ΡΡΠΎΠΈΡ Π½Π° ΠΏΡΠ΅Π΄Π΅ΡΡΠ°Π»Π΅. Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΡΠ°Π±Π»ΠΈΡΠ° β ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π²Π΅ΡΡΠΈΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ XDP vs nftables vs upstream/provider mitigation:
| Π£ΡΠΎΠ²Π΅Π½Ρ | ΠΠ΄Π΅ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ | Π§ΡΠΎ Π·Π°ΡΠΈΡΠ°Π΅Ρ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ | Π§ΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΅ΡΠΈΡΡ Π² ΠΎΠ΄ΠΈΠ½ΠΎΡΠΊΡ | ΠΡΡΡΠ°Ρ ΡΠΎΠ»Ρ Π² ΡΡΠ΅ΠΊΠ΅ |
|---|---|---|---|---|
| XDP | ΠΠ° ΡΠ°ΠΌΠΎΠΉ ΡΠ°Π½Π½Π΅ΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠ΅ ΠΏΡΠΈΡΠΌΠ° Ρ ΠΎΡΡΠ° | Π‘ΡΠΎΠΈΠΌΠΎΡΡΡ CPU ΠΈ ΠΏΡΡΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΎΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈΠΊΠ° | ΠΠ°ΡΡΡΠ΅Π½Π½ΡΠΉ ΠΊΠ°Π½Π°Π», ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΈΠ»ΠΈ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ Ρ ΡΡΡΡΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ | ΠΠ΅ΡΠ²ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΡΠ°Π½Π½Π΅Π³ΠΎ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π½ΠΈΡ |
| nftables | ΠΠ»ΡΠ±ΠΆΠ΅ Π² ΡΠ΅ΡΠ΅Π²ΠΎΠΌ ΡΡΠ΅ΠΊΠ΅ Ρ ΠΎΡΡΠ° | ΠΠ΅ΠΆΡΠ΅ΡΠ΅Π²ΠΎΠ΅ ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, Π±ΠΎΠ»Π΅Π΅ Π±ΠΎΠ³Π°ΡΠ°Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°, Ρ ΠΎΡΡ-ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Ρ ΡΡΡΡΠΎΠΌ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² | ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΎΡΡΠ°, ΡΠΆΠ΅ ΠΏΠΎΡΡΠ°ΡΠ΅Π½Π½Π°Ρ Π½Π° Π΄ΠΎΡΡΠ°Π²ΠΊΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π΄ΠΎ ΡΡΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ | ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΌΠ΅ΠΆΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΡΠΊΡΠ°Π½ Ρ ΠΎΡΡΠ° ΠΈ ΡΡΠΎΠ²Π΅Π½Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊ |
| ΠΡΡΠ΅ΡΡΠΎΡΡΠ°Ρ / ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΡΠΊΠ°Ρ Π·Π°ΡΠΈΡΠ° | ΠΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΡΠ°ΡΠΈΠΊ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° | ΠΠ°ΡΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°Π½Π°Π»Π°, Π±ΠΎΠ»Π΅Π΅ ΠΊΡΡΠΏΠ½ΡΠ΅ ΠΎΠ±ΡΡΠΌΠ½ΡΠ΅ ΡΠ»ΡΠ΄Ρ, Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠΎΠΊΠ°Ρ Π³ΡΠ°Π½ΠΈΡΠ½Π°Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ | ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Ρ ΠΎΡΡΠ° ΠΈΠ»ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½Π°Ρ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ | ΠΠ½Π΅ΡΠ½ΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π·Π°ΡΠΈΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ |
ΠΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, XDP ΠΈ nftables β Π½Π΅ Π²ΡΠ°Π³ΠΈ. ΠΠ½ΠΈ ΡΠ΅ΡΠ°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠ°ΡΡΠΈ ΠΏΡΡΠΈ. nftables Π±ΠΎΠ³Π°ΡΠ΅ ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ. xdp-filter β Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ β Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎ ΠΏΡΠΎΡΡ ΠΈ Π½Π΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π΄Π»Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ XDP Π±Π΅Π· ΠΏΡΠ΅ΡΠ΅Π½Π·ΠΈΠΉ Π½Π° Π·Π°ΠΌΠ΅Π½Ρ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΠΆΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠΊΡΠ°Π½Π°. ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ, ΠΌΠ½ΠΎΠ³ΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΎΡΠ²Π΅ΡΠΎΠ² ΠΈΠ»ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° Ρ ΡΡΡΡΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π²Ρ ΡΠΆΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ Π³Π»ΡΠ±ΠΆΠ΅, ΡΠ΅ΠΌ ΡΡΠ° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΡΠΈΠ»ΠΈΡΠ°.
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π½ΠΈΠ΅ Π² ΡΡΠΈΠ»Π΅ XDP, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ°Π½Π½Π΅Π΅ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π½ΠΈΠ΅ ΡΠ½ΠΈΠΆΠ°Π΅Ρ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ°ΠΏΡ. ΠΡΡΠΎΡΠΈΡ L4Drop ΠΎΡ Cloudflare β Ρ ΠΎΡΠΎΡΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ³ΠΎ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠ° ΠΌΠΎΠ΄Π΅Π»Ρ ΡΡΠ°Π»Π° ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ Π² ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ . ΠΠΎ Π²Π°ΠΆΠ½ΡΠΉ ΡΡΠΎΠΊ β Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΡΠΎ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ: ΠΎΡΠΊΠ»ΠΎΠ½ΡΠΉΡΠ΅ ΠΏΠ»ΠΎΡ ΠΎΠΉ ΡΡΠ°ΡΠΈΠΊ ΡΠ°Π½ΡΡΠ΅, ΡΡΠΎΠ±Ρ ΠΎΡΡΠ°Π»ΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΠΌΠ°ΡΠΈΠ½Ρ ΠΌΠΎΠ³Π»Π° Π΄ΠΎΠ»ΡΡΠ΅ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΠΉ ΡΡΠ°ΡΠΈΠΊ.
Π Π΅Π°Π»ΡΠ½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠΈΠ»ΡΠ½ΠΎ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΡΡΠ΅Π΄Ρ. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° NIC ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π»ΠΈ XDP Π² native ΠΈΠ»ΠΈ skb ΡΠ΅ΠΆΠΈΠΌΠ΅, ΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅Ρ Π²Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΡΡΠ°ΡΠΈΠΊΠ° β Π²ΡΡ ΡΡΠΎ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΠΎ, ΠΊΠ°ΠΊΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΡ Π²ΡΠ³ΠΎΠ΄Ρ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅. ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΡΠΈΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ ΠΎΡ Π²Π΅Π½Π΄ΠΎΡΠΎΠ² ΠΈΠ»ΠΈ Π³ΠΈΠΏΠ΅ΡΡΠΊΠ΅ΠΉΠ»Π΅ΡΠΎΠ² Π»ΡΡΡΠ΅ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΊΠ°ΠΊ Π΄ΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡΡΠ²ΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠ°Π½Π½Π΅Π³ΠΎ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π° Π½Π΅ ΠΊΠ°ΠΊ ΡΠΈΡΠ»Π°, ΠΊΠΎΡΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΠΆΠΈΠ΄Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ VPS. ΠΠΌΠ΅Ρ ΡΡΠΎ Π² Π²ΠΈΠ΄Ρ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π·Π΄Π΅Π» ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ XDP Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π° ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Ρ ΠΎΡΡΠ΅ Ubuntu ΡΠ΅ΡΠ΅Π· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡΠΊΠΈΡ ΡΠ½ΠΈΠΌΠΊΠΎΠ².
ΠΠ°ΠΊ XDP Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ β ΡΠ½ΠΈΠΌΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄

ΠΡΠΎΡ ΡΠ°Π·Π΄Π΅Π» ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠ½ΠΈΠΌΠΎΠΊ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ. Π¦Π΅Π»Ρ β ΡΠ΄Π΅Π»Π°ΡΡ XDP ΡΠ΅Π°Π»ΡΠ½ΡΠΌ Π½Π° Ubuntu 24.04 Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄: Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠΈΠ»ΡΡΡΠ°, ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠ»ΠΎΡΡ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π° Ρ Π½ΠΈΠ·ΠΊΠΈΠΌ ΡΠΈΡΠΊΠΎΠΌ ΠΈ ΡΡΠ΅Π½ΠΈΡ Π²Π°ΠΆΠ½ΡΡ ΡΡΡΡΡΠΈΠΊΠΎΠ².
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ XDP, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ½Π°ΡΠ°Π»Π° ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ ΠΈ Π²ΡΠ±ΡΠ°ΡΡ ΠΈΠΌΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
ip -br link
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ.
sudo apt update
sudo apt install -y xdp-tools
Π ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π½ΠΈΠΆΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ <ifname> Π½Π° ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΠΌΡ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ eth0 ΠΈΠ»ΠΈ ens3.
sudo xdp-filter load -m skb <ifname>ΠΠ΅ΡΠ²ΡΠ΅ Π΄Π²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ Π² ΡΡΠ΅Π΄Π΅ Π²ΡΠ΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ.
Π’ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π°ΡΠ΅ΠΌ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ xdp-filter Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ skb Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΎΠΉ allow ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠ° Ρ ΠΎΡΡΠ΅ Ubuntu, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ, ΡΡΠΎ Π΄Π°Π»ΠΎ Π²Π°ΡΠΈΠ°Π½Ρ xdpfilt_alw_all Ρ ΠΏΠΎΠ»Π½ΡΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΉ tcp,udp,ipv6,ipv4,ethernet,allow. ΠΡΠ±ΠΎΡ -m skb ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ native XDP Π² Π²Π°ΡΠ΅ΠΌ NIC ΠΈΠ»ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ΅, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ ΠΏΡΡΡΠΌ Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ.
Π§ΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠ»Π°ΡΡ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅:
sudo xdp-filter status
ip -details link show dev <ifname>Π Π²ΡΠ²ΠΎΠ΄Π΅ xdp-filter status Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π²Π°Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Ρ skb mode; Π½Π° ΡΠ΅ΡΡΠΎΠ²ΠΎΠΌ Ρ ΠΎΡΡΠ΅ Π·Π΄Π΅ΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΠΎΠΊΠ°Π·Π°Π» tcp,udp,ipv6,ipv4,ethernet,allow. Π Π²ΡΠ²ΠΎΠ΄Π΅ ip -details link show ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ xdpgeneric ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° xdp_dispatcher ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡ, ΡΡΠΎ generic XDP Π°ΠΊΡΠΈΠ²Π΅Π½ Π½Π° ΡΡΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅.

β οΈ ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: ΠΠ΅ ΡΠ΅ΡΡΠΈΡΡΠΉΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π·Π°ΠΏΡΠ΅ΡΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠΈΡΠΎΠΊΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π½ΠΈΡ Π½Π° ΠΆΠΈΠ²ΠΎΠΌ ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ΡΡΡ Π²Π°ΡΡ SSH-ΡΠ΅ΡΡΠΈΡ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π½Π΅Ρ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ. ΠΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ Π² ΡΡΠ°ΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° allow ΠΈ ΠΎΠ΄Π½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Ρ Π°Π΄ΡΠ΅ΡΠΎΠΌ ΠΈΠ· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΠ°Π»Π΅Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ. ΠΡΠΎ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ Π²Π°ΠΌ, ΡΡΠΎ NIC ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π² ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠΈ XDP, Π° Π½Π΅ ΠΊΠ°ΠΊΠΎΠΉ Π±ΡΠ΄Π΅Ρ Π²Π°ΡΠ° ΠΊΠΎΠ½Π΅ΡΠ½Π°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
sudo xdp-loader features <ifname>Π’ΠΎΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ, Π½ΠΎ ΡΠΈΠΏΠΈΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΡΠΎΠΊΠΈ Π²ΡΠΎΠ΄Π΅ ΡΡΠΈΡ :

ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΡΠΌ Π·Π΄Π΅ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ NETDEV_XDP_ACT_BASIC, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡ Π²Π°ΠΌ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΏΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π±Π°Π·ΠΎΠ²ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ XDP. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ»Π°Π³ΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΠΏΠΎΠ»Π΅Π·Π½Ρ, Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Ρ Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ Π·Π°ΡΠΈΡΡ ΠΎΡ DDoS.
ΠΠ°Π»Π΅Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅, ΠΊΠ°ΠΊ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ XDP ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΎΠ½Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
sudo xdp-loader statusΠΠ° ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:

ΠΡΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠ°Ρ, Π½ΠΎ Π²Π°ΠΆΠ½Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°. ΠΠ½Π° ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°Π΅Ρ, ΡΡΠΎ XDP β Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»Π°, ΠΆΠΈΠ²ΡΡΠ°Ρ Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ β Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ Π΅ΡΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΈ ΡΡΠΎΠ»Π±Π΅Ρ ΡΠ΅ΠΆΠΈΠΌΠ° Π³ΠΎΠ²ΠΎΡΠΈΡ Π²Π°ΠΌ, ΡΠΌΠΎΡΡΠΈΡΠ΅ Π»ΠΈ Π²Ρ Π½Π° native ΠΈΠ»ΠΈ skb.
Π’Π΅ΠΏΠ΅ΡΡ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΎΠ΄Π½ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ IP-Π°Π΄ΡΠ΅Ρ. Π€Π»Π°Π³ -s ΠΏΠΎΠ»Π΅Π·Π΅Π½, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°, Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΎΡΡΠ°Π²Π»ΡΡΡ Π²Π°Ρ Ρ ΠΌΠΎΠ»ΡΠ°Π»ΠΈΠ²ΡΠΌ ΡΡΠΏΠ΅Ρ ΠΎΠΌ.
sudo xdp-filter ip -s -m src 192.0.2.1Π’ΠΈΠΏΠΈΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:

π ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: xdp-filter ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ allow. ΠΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΏΠ°ΠΊΠ΅ΡΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Ρ, ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡΡΡ, Π° ΠΏΠ°ΠΊΠ΅ΡΡ, Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Ρ, ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΎΠ±ΡΡΠ½ΠΎΠΌΡ ΠΏΡΡΠΈ.
ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎ ΡΠΊΡΡΠ΅Π½. Π ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ DDoS ΠΎΠ½ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΏΡΠΎΡΡΠ΅ΠΉΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠ°Π½Π½Π΅Π³ΠΎ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π½ΠΈΡ: ΡΡΠ°ΡΠΈΠΊ ΠΈΠ· ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ΅Π½, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠΊΠ»ΠΎΠ½ΡΠ½ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΡΡΠ°Π»ΡΠ½Π°Ρ ΡΠ°ΡΡΡ Ρ ΠΎΡΡΠ° Π²Π»ΠΎΠΆΠΈΡ Π² Π½Π΅Π³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π±ΠΎΡΡ.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΎΠ±ΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅.
sudo xdp-filter statusΠΠ° ΡΠΈΠΏΠΈΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠ°Π±Π»ΠΎΠ½ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΡΠΌ.

ΠΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΡΡΠ° β ΡΠΎ ΠΌΠ΅ΡΡΠΎ, Π³Π΄Π΅ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Π°ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ, Π°ΠΊΡΠΈΠ²Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ xdp-filter, ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΡΡΡΡΠΈΠΊΠΎΠ² Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π° Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅. XDP_ABORTED, Π΅ΡΠ»ΠΈ ΠΎΠ½ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π³Π»Π°Π²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΊΠΎΡΠ·ΠΈΠ½ΠΎΠΉ ΠΎΡΠΈΠ±ΠΎΠΊ/ΠΎΡΠ»Π°Π΄ΠΊΠΈ, Π° Π½Π΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ, Π²ΠΎΠΊΡΡΠ³ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²Ρ ΡΡΡΠΎΠΈΡΠ΅ ΠΏΠ»Π°Π½Ρ. Π§ΡΠΎ Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ, Π΅ΡΠ»ΠΈ ΡΡΡΡΡΠΈΠΊ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π½ΠΈΡ ΠΎΡΡΠ°ΡΡΡΡ Π½Π° 0, ΡΡΠΎ Π½Π΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΠΈΠ»ΡΡΡ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π». ΠΡΠΎ Π»ΠΈΡΡ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ Π½Π΅ ΠΏΠΎΠΏΠ°Π» ΠΏΠΎΠ΄ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° Π·Π°Ρ Π²Π°ΡΠ°.
π‘ ΠΡΠ²ΠΎΠ΄: ΠΡΠ½ΠΎΡΠΈΡΠ΅ΡΡ ΠΊ xdp-filter ΠΊΠ°ΠΊ ΠΊ ΠΏΡΠΎΡΡΠΎΠΌΡ, Π½Π΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡΠ΅ΠΌΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ, Π° Π½Π΅ ΠΊΠ°ΠΊ ΠΊ Π·Π°ΠΌΠ΅Π½Π΅ nftables. Π’Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ ΠΏΠ°ΠΊΠ΅ΡΡ, ΠΎΡΠ±ΡΠΎΡΠ΅Π½Π½ΡΠ΅ Π½Π° ΡΡΠΎΠ²Π½Π΅ XDP, ΠΌΠΎΠ³ΡΡ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ Π² ΠΎΠ±ΡΡΠ½ΠΎΠΌ ΠΏΡΡΠΈ tcpdump, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π²ΡΠ²ΠΎΠ΄ ΡΡΠ°ΡΡΡΠ° ΠΈ ΡΡΡΡΡΠΈΠΊΠΈ, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ Π΄Π»Ρ XDP, Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄ΡΠΆΠ½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΆΠΈΠ²ΠΎΠΉ Π²ΠΈΠ΄ ΠΏΠΎΠ·ΠΆΠ΅, sudo xdp-filter poll -i 2000 β ΡΠ°Π·ΡΠΌΠ½ΡΠΉ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π³ β Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ³Π΄Π° Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ ΡΠΆΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈΠΊΠ°, ΡΡΠΎΠ±Ρ ΡΡΠΎΡ Π²ΡΠ²ΠΎΠ΄ Π±ΡΠ» ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ.
ΠΡΠΎΡΠΌΠΎΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ Π΄Π΅Π»Π°Π΅Ρ ΠΈΠ΄Π΅Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ. Π Π΅Π°Π»ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π½Π΅ Π² ΡΠΎΠΌ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. ΠΠ½ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎΠΈΡ Π»ΠΈ ΡΡΠΎΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π° ΡΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΌ Π²Ρ ΡΠ΅Π°Π»ΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΠ΅.
ΠΠΎΠ³Π΄Π° XDP ΡΡΠΎΠΈΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π΄Π»Ρ VPS ΠΈ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ²

XDP ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎ Π΄ΠΎΡΡΡΠΏΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π°Π³ΡΡΠ·ΠΊΠ° ΡΠ΅ΡΡΠ΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π° Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΠΎΡΠ²Π΅ΡΠΈΡΡ. Π₯ΠΎΡΠΎΡΠΈΠΌΠΈ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠ°ΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠ΅ API, ΠΎΠ±ΡΠ°ΡΠ½ΡΠ΅ ΠΏΡΠΎΠΊΡΠΈ, ΡΠ»ΡΠ·Ρ, UDP-ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ, Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΠΈΠ· ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°, ΠΈ Ρ ΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ Π²ΠΈΠ΄ΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈΠΊΠ°, ΡΡΠΎΠ±Ρ Π½Π°Π³ΡΡΠΆΠ°ΡΡ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΠΏΡΡΡ, Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° ΡΠ°ΠΌΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ·ΠΊΠΈΠΌ ΠΌΠ΅ΡΡΠΎΠΌ. Π ΡΠ°ΠΊΠΈΡ ΡΡΠ΅Π΄Π°Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½Π΅Π΅ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²Π΅ΡΠ½ΡΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΠΉ Π·Π°ΠΏΠ°Ρ ΡΠ΅ΡΡΡΡΠΎΠ² ΡΠ΅ΡΠ²Π΅ΡΠ°.
ΠΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΌΠ°Π»ΠΎ ΡΠ»ΡΡΠ°Π΅Π², ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ. ΠΠ°Π»ΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΉ Π²Π΅Π±-ΡΠ°ΠΉΡ, Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ ΠΈΠ»ΠΈ ΡΠ΅ΡΠ²ΠΈΡ, ΡΠ΅Π°Π»ΡΠ½ΠΎΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ β ΠΌΠ΅ΠΆΡΠ΅ΡΠ΅Π²ΠΎΠ΅ ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΎΡΡΠ° Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, Π° Π½Π΅ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² XDP Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ. ΠΡΠ»ΠΈ nftables ΡΠΆΠ΅ ΠΏΠΎΠΊΡΡΠ²Π°Π΅Ρ ΡΠΈΡΠΊ Π±Π΅Π· Π·Π°ΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ Π΄Π°Π²Π»Π΅Π½ΠΈΡ Π½Π° ΠΏΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΅ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π΄Π²ΠΈΠΆΡΡΠΈΡ ΡΡ ΡΠ°ΡΡΠ΅ΠΉ, ΡΠ΅ΠΌ ΡΠ΅Π½Π½ΠΎΡΡΠΈ.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π±ΡΡΡΡΠΎΠΉ ΡΡ Π΅ΠΌΡ ΠΏΡΠΈΠ½ΡΡΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ:
- ΠΠ΅ΠΆΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ°ΡΠΈΠΊ Π½Π΅Π²Π΅Π»ΠΈΠΊ, ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π±ΠΎΠ³Π°ΡΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°, ΠΈ Ρ ΠΎΡΡ ΡΠ²Π½ΠΎ Π½Π΅ ΡΠΆΠΈΠ³Π°Π΅Ρ CPU Π½Π° ΠΌΡΡΠΎΡΠ½ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ°Ρ .
- XDP ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π΄ΠΎΡΡΠΎΠΉΠ½ΡΠΌ ΠΎΡΠ΅Π½ΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΠ°ΡΠΈΠΊ Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ Ρ ΠΎΡΡΠ° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ°ΡΡΠΎ, ΡΡΠΎΠ±Ρ ΡΠ°Π½Π½Π΅Π΅ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ³Π»ΠΎ Π·Π°ΡΠΈΡΠΈΡΡ CPU, conntrack ΠΈ ΡΠΌΠΊΠΎΡΡΡ ΡΠΎΠΊΠ΅ΡΠΎΠ².
- ΠΡΡΠ΅ΡΡΠΎΡΡΠ°Ρ Π·Π°ΡΠΈΡΠ° ΠΎΡΡΠ°ΡΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ, ΠΊΠΎΠ³Π΄Π° ΡΠ΅Π°Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ ΠΎΡΠΊΠ°Π·Π° β Π½Π°ΡΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°Π½Π°Π»Π° ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ° ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΊΡΡΠΏΠ½ΡΠ΅ ΠΎΠ±ΡΡΠΌΠ½ΡΠ΅ ΡΠ»ΡΠ΄Ρ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠ°ΠΊΠ΅ΡΡ Π²ΠΎΠΎΠ±ΡΠ΅ Π΄ΠΎΡΡΠΈΠ³Π°ΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°.
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ VPS ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠ³ΠΎΠ²ΠΎΡΠΊΠ΅: Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΡΠΈ NIC ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ° ΠΌΠΎΠ³ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΎΡ native mode, Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° ΡΠ΅ΠΆΠΈΠΌ skb Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ. ΠΡΠ΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΎΠ±ΡΡΠ½ΠΎ Π΄Π°ΡΡ Π²Π°ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°ΠΌΠΈ, ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΡΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ°Π½ΡΡ Π½Π° Π·Π½Π°ΡΠΈΠΌΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ native mode ΡΠ°ΠΌ Π²ΡΡΠ΅ β Π½ΠΎ Π΄Π°ΠΆΠ΅ Π½Π° bare metal XDP Π²ΡΡ ΡΠ°Π²Π½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΡΡΠΎΠ²Π½Π΅ΠΌ, Π° Π½Π΅ ΠΏΠΎΠ»Π½ΡΠΌ ΠΎΡΠ²Π΅ΡΠΎΠΌ. ΠΡΠ»ΠΈ Π²Ρ ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅ΡΠ΅ AlexHost ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ°, Π·Π°Π΄Π°ΠΉΡΠ΅ ΡΡΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π²ΠΎΠΏΡΠΎΡΠ° Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ ΠΈΡ : ΠΊΠ°ΠΊΠ°Ρ Π²ΡΡΠ΅ΡΡΠΎΡΡΠ°Ρ Π·Π°ΡΠΈΡΠ° ΠΎΡ DDoS ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΠ°ΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ² Ρ ΠΎΡΡΠ° Π΄Π°ΡΡ Π²Π°ΠΌ ΡΠ°ΡΠΈΡΠ½ΡΠΉ ΠΏΠ»Π°Π½, ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Ρ ΠΎΡΡ-ΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½Ρ Π½Π° ΡΡΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅?
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅: XDP β ΡΡΠΎ ΡΡΠΎΠ²Π΅Π½Ρ ΡΠ°Π½Π½Π΅Π³ΠΎ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π½ΠΈΡ, Π° Π½Π΅ Π²Π΅ΡΡ ΡΠΈΡ

ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡΡΠΊΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± Π΄ΡΠΌΠ°ΡΡ ΠΎΠ± XDP ΡΠ°ΠΊΠΎΠ²: ΠΎΠ½ Π΄Π°ΡΡ Linux Π±ΡΡΡΡΡΡ ΠΏΠ΅ΡΠ²ΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ ΡΠΎΡΠΊΡ Π΄Π»Ρ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ ΠΏΠ»ΠΎΡ ΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈΠΊΠ° ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΡ ΡΠ»ΡΠ΄ΠΎΠ², ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΠ½ Π»ΡΡΡΠ΅ Π·Π°ΡΠΈΡΠ°Π΅Ρ ΡΠ΅ΡΡΡΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΡΠ΅ΠΌ Π½Π°ΡΡΡΠ΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ΡΡΠΎΡΡΠΈΠΉ ΠΊΠ°Π½Π°Π». ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ XDP Π²Π°ΠΆΠ΅Π½ Π² ΡΠ°Π·Π³ΠΎΠ²ΠΎΡΠ°Ρ ΠΎ Π·Π°ΡΠΈΡΠ΅ ΠΎΡ DDoS. ΠΠ½ Π½Π΅ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ Π²ΡΡΠ΅ΡΡΠΎΡΡΡΡ Π·Π°ΡΠΈΡΡ, ΠΌΠ΅ΠΆΡΠ΅ΡΠ΅Π²ΠΎΠ΅ ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ½ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ, Π·Π°ΡΡΠ°Π²Π»ΡΡ Ρ ΠΎΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅ Π±Π΅ΡΡΠΌΡΡΠ»Π΅Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΏΡΠΎΡΡΠΎΠ΅. ΠΡΠ»ΠΈ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΠ°ΡΠΈΠΊ ΡΡΠ°ΡΠΈΡ CPU Ρ ΠΎΡΡΠ° Π²ΠΏΡΡΡΡΡ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΎΡΠ²Π΅ΡΠΈΡΡ, XDP ΡΡΠΎΠΈΡ ΠΎΡΠ΅Π½ΠΈΡΡ ΠΊΠ°ΠΊ ΡΡΠΎΠ²Π΅Π½Ρ ΡΠ°Π½Π½Π΅Π³ΠΎ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π½ΠΈΡ. ΠΡΠ»ΠΈ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° β ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠ°Π½Π°Π» ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°, Π·Π°Π²ΠΈΡΡΡΠ°Ρ ΠΎΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΈ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, XDP ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ Π·Π° Π²ΡΡΠ΅ΡΡΠΎΡΡΠ΅ΠΉ Π·Π°ΡΠΈΡΠΎΠΉ ΠΈ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡΠ±ΠΎΠΊΠΎΠΉ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠ΅ΠΉ, Π° Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄ Π½ΠΈΠΌΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ°. ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ°Π³ΠΎΠΌ ΠΎΡΡΡΠ΄Π° Π±ΡΠ»ΠΎ Π±Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ XDP ΠΈΠ»ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ Π±ΠΎΠ³Π°ΡΠΎΠΉ ΠΌΠ½ΠΎΠ³ΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ Π·Π°ΡΠΈΡΡ Π²ΠΎΠΊΡΡΠ³ ΡΠΎΠΉ ΠΆΠ΅ ΠΈΠ΄Π΅ΠΈ ΡΠ°Π½Π½Π΅Π³ΠΎ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π½ΠΈΡ.
Π½Π° Π²ΡΠ΅Ρ
Ρ
ΠΎΡΡΠΈΠ½Π³ΠΎΠ²ΡΡ
ΡΡΠ»ΡΠ³Π°Ρ