{"id":287413,"date":"2018-08-16T14:08:42","date_gmt":"2018-08-16T10:08:42","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=287413"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2018-08-16T10:08:42","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=287413","title":{"rendered":"\u041a\u0430\u043a \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c 10 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443"},"content":{"rendered":"\n<div data-io-article-url=\"https:\/\/habr.com\/post\/419921\/\" class=\"post__text post__text-html js-mediator-article\">\u0412 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u043d\u0430\u0448\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043f\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e DDoS-\u0430\u0442\u0430\u043a\u0430\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u00ab\u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u0435\u043b\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432\u00bb (the packet droppers \u2014 \u043f\u0440\u0438\u043c. \u043f\u0435\u0440). \u041f\u043e\u043a\u0430 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u0435\u043b\u0430\u044e\u0442 \u043a\u043b\u0451\u0432\u044b\u0435 \u0448\u0442\u0443\u043a\u0438 \u0441 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0449\u0438\u043c \u0447\u0435\u0440\u0435\u0437 \u043d\u0430\u0448\u0443 \u0441\u0435\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a\u043e\u043c, \u043c\u044b \u0440\u0430\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u043c\u0441\u044f \u043f\u043e\u0438\u0441\u043a\u043e\u043c \u043d\u043e\u0432\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u043d\u0435\u0433\u043e.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/s-\/3y\/un\/s-3yun8pllqd7-e077fuxbk9jiw.png\"><br \/>  <i>\u0424\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044f: <a href=\"https:\/\/www.flickr.com\/photos\/beegee49\">Brian Evans<\/a>, <a href=\"https:\/\/creativecommons.org\/licenses\/by-sa\/2.0\/\">CC BY-SA 2.0<\/a><\/i><\/p>\n<p>  \u0423\u043c\u0435\u043d\u0438\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 DDoS-\u0430\u0442\u0430\u043a\u0430\u043c.<\/p>\n<p>  \u041e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u044e\u0449\u0438\u0445 \u043d\u0430\u0448\u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0443\u0440\u043e\u0432\u043d\u044f\u0445. \u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0438 \u043f\u043b\u044e\u0441\u044b \u0438 \u043c\u0438\u043d\u0443\u0441\u044b. \u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432\u0441\u0451, \u0447\u0442\u043e \u043c\u044b \u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b\u0438.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<blockquote><p><i>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0447\u0438\u043a\u0430: \u0432 \u0432\u044b\u0432\u043e\u0434\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u0431\u044b\u043b\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u044b \u043b\u0438\u0448\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u0438.<\/i><\/p><\/blockquote>\n<h1>\u0422\u0435\u0441\u0442\u043e\u0432\u0430\u044f \u043f\u043b\u043e\u0449\u0430\u0434\u043a\u0430<\/h1>\n<p>  \u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043c\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0432\u0430\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0446\u0438\u0444\u0440, \u043e\u0434\u043d\u0430\u043a\u043e, \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0438\u0445 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e, \u0432\u0432\u0438\u0434\u0443 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u0441\u0442\u043e\u0432. \u041c\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043d\u0430\u0448\u0438\u0445 Intel-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0441 10\u0413\u0431\u0438\u0442\/\u0441 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u043e\u0439. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0435 \u0442\u0430\u043a \u0432\u0430\u0436\u043d\u044b, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0430\u043a\u0446\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0430 \u043d\u0435 \u0436\u0435\u043b\u0435\u0437\u0430. <\/p>\n<p>  \u041d\u0430\u0448\u0438 \u0442\u0435\u0441\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<ul>\n<li> \u041c\u044b \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0438\u0437 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 UDP-\u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f 14 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443; <\/li>\n<li>\u0412\u0435\u0441\u044c \u044d\u0442\u043e\u0442 \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u0434\u043d\u043e \u044f\u0434\u0440\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430;<\/li>\n<li>\u041c\u044b \u0437\u0430\u043c\u0435\u0440\u044f\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0445 \u044f\u0434\u0440\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u044f\u0434\u0440\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435.<\/li>\n<\/ul>\n<p>  \u0418\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0442\u0440\u0430\u0444\u0438\u043a \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443: \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 IP-\u0430\u0434\u0440\u0435\u0441 \u0438 \u043f\u043e\u0440\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044f. \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432 tcpdump:<\/p>\n<pre><code class=\"bash\">$ tcpdump -ni vlan100 -c 10 -t udp and dst port 1234 IP 198.18.40.55.32059 &gt; 198.18.0.12.1234: UDP, length 16 IP 198.18.51.16.30852 &gt; 198.18.0.12.1234: UDP, length 16 IP 198.18.35.51.61823 &gt; 198.18.0.12.1234: UDP, length 16 IP 198.18.44.42.30344 &gt; 198.18.0.12.1234: UDP, length 16 IP 198.18.106.227.38592 &gt; 198.18.0.12.1234: UDP, length 16 IP 198.18.48.67.19533 &gt; 198.18.0.12.1234: UDP, length 16 IP 198.18.49.38.40566 &gt; 198.18.0.12.1234: UDP, length 16 IP 198.18.50.73.22989 &gt; 198.18.0.12.1234: UDP, length 16 IP 198.18.43.204.37895 &gt; 198.18.0.12.1234: UDP, length 16 IP 198.18.104.128.1543 &gt; 198.18.0.12.1234: UDP, length 16 <\/code><\/pre>\n<p>  \u041d\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0432\u0441\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u0432 \u043e\u0434\u043d\u0443 RX-\u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0438, \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u044f\u0434\u0440\u043e\u043c. \u041c\u044b \u0434\u043e\u0431\u0438\u0432\u0430\u0435\u043c\u0441\u044f \u044d\u0442\u043e\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0442\u043e\u043a\u043e\u043c:<\/p>\n<pre><code class=\"bash\">ethtool -N ext0 flow-type udp4 dst-ip 198.18.0.12 dst-port 1234 action 2 <\/code><\/pre>\n<p>  \u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u2014 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441. \u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 \u0442\u0435\u0441\u0442\u044b, \u043c\u044b \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438, \u0447\u0442\u043e \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 raw-\u0441\u043e\u043a\u0435\u0442\u043e\u0432 \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u043e \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u0442\u0435\u0441\u0442\u043e\u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043d\u0438 \u043e\u0434\u0438\u043d <code>tcpdump<\/code> \u043d\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d. \u0415\u0441\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043f\u043b\u043e\u0445\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432:<\/p>\n<pre><code class=\"bash\">$ ss -A raw,packet_raw -l -p|cat Netid  State    Recv-Q Send-Q Local Address:Port p_raw  UNCONN   525157 0      *:vlan100          users:((\"tcpdump\",pid=23683,fd=3)) <\/code><\/pre>\n<p>  \u041d\u0443 \u0438 \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u043c\u044b \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u043c Intel Turbo Boost \u043d\u0430 \u043d\u0430\u0448\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435:<\/p>\n<pre><code>echo 1 | sudo tee \/sys\/devices\/system\/cpu\/intel_pstate\/no_turbo<\/code><\/pre>\n<p>  \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e Turbo Boost \u2014 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u0430\u044f \u0448\u0442\u0443\u043a\u0430 \u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0443\u044e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u043d\u0430 20%, \u043e\u043d \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0440\u0442\u0438\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435 \u0432 \u043d\u0430\u0448\u0438\u0445 \u0442\u0435\u0441\u0442\u0430\u0445. \u0421\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c turbo \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u044e\u0442 \u00b11.5%, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u0431\u0435\u0437 \u043d\u0435\u0433\u043e \u0432\u0441\u0435\u0433\u043e 0.25%.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ic\/ik\/jq\/icikjqda_ztydjswe8xjq07u5sa.png\"><\/p>\n<h3>\u0428\u0430\u0433 1. \u041e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438<\/h3>\n<p>  \u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u0438\u0434\u0435\u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u0441\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0442\u0430\u043c. \u0414\u043b\u044f \u0447\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u0443\u0431\u0435\u0434\u0438\u043c\u0441\u044f, \u0447\u0442\u043e iptables \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c:<\/p>\n<pre><code class=\"bash\">iptables -I PREROUTING -t mangle -d 198.18.0.12 -p udp --dport 1234 -j ACCEPT iptables -I PREROUTING -t raw -d 198.18.0.12 -p udp --dport 1234 -j ACCEPT iptables -I INPUT -t filter -d 198.18.0.12 -p udp --dport 1234 -j ACCEPT <\/code><\/pre>\n<p>  \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u2014 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0446\u0438\u043a\u043b, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u0438\u0448\u0435\u0434\u0448\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u0443\u0442 \u0436\u0435 \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f:<\/p>\n<pre><code class=\"python\">s = socket.socket(AF_INET, SOCK_DGRAM) s.bind((\"0.0.0.0\", 1234)) while True:     s.recvmmsg([...]) <\/code><\/pre>\n<p>  \u041c\u044b \u0443\u0436\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 <a href=\"https:\/\/github.com\/cloudflare\/cloudflare-blog\/blob\/master\/2018-07-dropping-packets\/recvmmsg-loop.c\">\u043a\u043e\u0434<\/a>, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c:<\/p>\n<pre><code class=\"bash\">$ .\/dropping-packets\/recvmmsg-loop packets=171261 bytes=1940176 <\/code><\/pre>\n<p>  \u0422\u0430\u043a\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u044f\u0434\u0440\u0443 \u0437\u0430\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u0441\u0435\u0433\u043e 175 \u0442\u044b\u0441\u044f\u0447 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u043a\u0430\u043a \u0438 \u0431\u044b\u043b\u043e \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u043e \u0443\u0442\u0438\u043b\u0438\u0442\u0430\u043c\u0438 <code>ethtool<\/code> \u0438 <a href=\"https:\/\/blog.cloudflare.com\/three-little-tools-mmsum-mmwatch-mmhistogram\/\">\u043d\u0430\u0448\u0435\u0439 <\/a><code>mmwatch<\/code>:<\/p>\n<pre><code class=\"bash\">$ mmwatch 'ethtool -S ext0|grep rx_2'  rx2_packets: 174.0k\/s <\/code><\/pre>\n<p>  \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438, \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 14 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443, \u043e\u0434\u043d\u0430\u043a\u043e, \u043e\u0434\u043d\u043e \u044f\u0434\u0440\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043d\u0435 \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u044a\u0451\u043c\u043e\u043c. <code>mpstat<\/code> \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442 \u044d\u0442\u043e:<\/p>\n<pre><code class=\"bash\">$ watch 'mpstat -u -I SUM -P ALL 1 1|egrep -v Aver' 01:32:05 PM  CPU %usr %nice  %sys %iowait %irq  %soft %steal %guest %gnice %idle 01:32:06 PM    0 0.00  0.00  0.00    2.94 0.00   3.92   0.00   0.00   0.00 93.14 01:32:06 PM    1 2.17  0.00 27.17    0.00 0.00   0.00   0.00   0.00   0.00 70.65 01:32:06 PM    2 0.00  0.00  0.00    0.00 0.00 100.00   0.00   0.00   0.00  0.00 01:32:06 PM    3 0.95  0.00  1.90    0.95 0.00   3.81   0.00   0.00   0.00 92.38 <\/code><\/pre>\n<p>  \u041a\u0430\u043a \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u0438\u0434\u0435\u0442\u044c, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u0437\u043a\u0438\u043c \u043c\u0435\u0441\u0442\u043e\u043c: CPU#1 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0430 27.17% + 2.17%, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 100% \u043d\u0430 CPU#2. <\/p>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <code>recvmessagge(2)<\/code> \u0438\u0433\u0440\u0430\u0435\u0442 \u0432\u0430\u0436\u043d\u0443\u044e \u0440\u043e\u043b\u044c. \u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 Spectre \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0432\u044b\u0437\u043e\u0432\u044b \u0441\u0442\u0430\u043b\u0438 \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u0434\u043e\u0440\u043e\u0433\u0438\u043c\u0438 \u0438\u0437-\u0437\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0432 \u044f\u0434\u0440\u0435 <abbr title=\"Kernel page-table isolation\">KPTI<\/abbr> \u0438 <abbr title=\"Return trampoline\">retpoline<\/abbr><\/p>\n<pre><code>$ tail -n +1 \/sys\/devices\/system\/cpu\/vulnerabilities\/* ==&gt; \/sys\/devices\/system\/cpu\/vulnerabilities\/meltdown &lt;== Mitigation: PTI  ==&gt; \/sys\/devices\/system\/cpu\/vulnerabilities\/spectre_v1 &lt;== Mitigation: __user pointer sanitization  ==&gt; \/sys\/devices\/system\/cpu\/vulnerabilities\/spectre_v2 &lt;== Mitigation: Full generic retpoline, IBPB, IBRS_FW <\/code><\/pre>\n<h3>\u0428\u0430\u0433 2. \u0423\u0431\u0438\u0439\u0441\u0442\u0432\u043e conntrack<\/h3>\n<p>  \u041c\u044b \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0442\u0430\u043a\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 IP \u0438 \u043f\u043e\u0440\u0442\u043e\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044f, \u0447\u0442\u043e\u0431\u044b \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u0438\u043b\u044c\u043d\u0435\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c conntrack. \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 conntrack \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0442\u0435\u0441\u0442\u0430 \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0441\u044f \u043a \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u043c\u0443 \u0438 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432 \u044d\u0442\u043e\u043c \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f:<\/p>\n<pre><code class=\"bash\">$ conntrack -C 2095202  $ sysctl net.netfilter.nf_conntrack_max net.netfilter.nf_conntrack_max = 2097152 <\/code><\/pre>\n<p>  \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u0432 <code>dmesg<\/code> \u0442\u0430\u043a \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043a\u0440\u0438\u043a\u0438 conntrack:<\/p>\n<pre><code class=\"bash\">[4029612.456673] nf_conntrack: nf_conntrack: table full, dropping packet [4029612.465787] nf_conntrack: nf_conntrack: table full, dropping packet [4029617.175957] net_ratelimit: 5731 callbacks suppressed <\/code><\/pre>\n<p>  \u0422\u0430\u043a \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u043c \u0435\u0433\u043e:<\/p>\n<pre><code class=\"bash\">iptables -t raw -I PREROUTING -d 198.18.0.12 -p udp -m udp --dport 1234 -j NOTRACK <\/code><\/pre>\n<p>  \u0418 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0442\u0435\u0441\u0442\u044b:<\/p>\n<pre><code class=\"bash\">$ .\/dropping-packets\/recvmmsg-loop packets=331008 bytes=5296128 <\/code><\/pre>\n<p>  \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u043e \u0434\u043e\u0439\u0442\u0438 \u043d\u0430\u043c \u0434\u043e \u043e\u0442\u043c\u0435\u0442\u043a\u0438 \u0432 333 \u0442\u044b\u0441\u044f\u0447\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443. \u0423\u0440\u0430!<br \/>  P.S. \u0421 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c SO_BUSY_POLL \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u0446\u0435\u043b\u044b\u0445 470 \u0442\u044b\u0441\u044f\u0447 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443, \u043e\u0434\u043d\u0430\u043a\u043e, \u044d\u0442\u043e \u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0441\u0442\u0430.<\/p>\n<h3>\u0428\u0430\u0433 3. \u041f\u0430\u043a\u0435\u0442\u043d\u044b\u0439 \u0444\u0438\u043b\u044c\u0442\u0440 \u0411\u0435\u0440\u043a\u043b\u0438<\/h3>\n<p>  \u0418\u0434\u0451\u043c \u0434\u0430\u043b\u044c\u0448\u0435. \u0417\u0430\u0447\u0435\u043c \u043d\u0430\u043c \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435? \u0425\u043e\u0442\u044f \u044d\u0442\u043e \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0439 \u0444\u0438\u043b\u044c\u0442\u0440 \u0411\u0435\u0440\u043a\u043b\u0438 \u043a \u0441\u043e\u043a\u0435\u0442\u0443 \u0432\u044b\u0437\u043e\u0432\u043e\u043c <code>setsockopt(SO_ATTACH_FILTER)<\/code> \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440 \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b \u0435\u0449\u0451 \u0432 \u044f\u0434\u0440\u0435.<br \/>  \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c <a href=\"https:\/\/github.com\/cloudflare\/cloudflare-blog\/blob\/master\/2018-07-dropping-packets\/bpf-drop.c\">\u043a\u043e\u0434<\/a>, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c:<\/p>\n<pre><code class=\"bash\">$ .\/bpf-drop packets=0 bytes=0 <\/code><\/pre>\n<p>  \u0421 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u0433\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0430 (\u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0439 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0411\u0435\u0440\u043a\u043b\u0438 \u0434\u0430\u044e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u0445\u043e\u0436\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c) \u043c\u044b \u0434\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0434\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 512 \u0442\u044b\u0441\u044f\u0447 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043e\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0431\u0443\u0434\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. <\/p>\n<h3>\u0428\u0430\u0433 4. iptables DROP \u043f\u043e\u0441\u043b\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438<\/h3>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0432 iptables \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0443 INPUT \u0442\u0430\u043a\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e:<\/p>\n<pre><code class=\"bash\">iptables -I INPUT -d 198.18.0.12 -p udp --dport 1234 -j DROP <\/code><\/pre>\n<p>  \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u043c\u044b \u0443\u0436\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u043b\u0438 conntrack \u043f\u0440\u0430\u0432\u0438\u043b\u043e\u043c <code>-j NOTRACK<\/code>. \u042d\u0442\u0438 \u0434\u0432\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0434\u0430\u044e\u0442 \u043d\u0430\u043c 608 \u0442\u044b\u0441\u044f\u0447 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443.<\/p>\n<p>  \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0447\u0438\u0441\u043b\u0430 \u0432 iptables:<\/p>\n<pre><code class=\"bash\">$ mmwatch 'iptables -L -v -n -x | head' Chain INPUT (policy DROP 0 packets, 0 bytes)     pkts    bytes target prot opt in out source    destination 605.9k\/s  26.7m\/s DROP   udp  --  *  *   0.0.0.0\/0 198.18.0.12          udp dpt:1234 <\/code><\/pre>\n<p>  \u041d\u0443 \u0447\u0442\u043e \u0436, \u043d\u0435\u043f\u043b\u043e\u0445\u043e, \u043d\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043b\u0443\u0447\u0448\u0435.<\/p>\n<h3>\u0428\u0430\u0433 5. iptabes DROP \u0432 PREROUTING<\/h3>\n<p>  \u0411\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u0430\u044f \u0442\u0435\u0445\u043d\u0438\u043a\u0430 \u2014 \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b \u0435\u0449\u0451 \u0434\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430:<\/p>\n<pre><code class=\"bash\">iptables -I PREROUTING -t raw -d 198.18.0.12 -p udp --dport 1234 -j DROP<\/code><\/pre>\n<p>  \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u043b\u0438\u0434\u043d\u044b\u0435 1.688 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443.<\/p>\n<p>  \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u044d\u0442\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043a\u0430\u0447\u043e\u043a \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u042f \u0442\u0430\u043a \u0438 \u043d\u0435 \u043f\u043e\u043d\u044f\u043b \u043f\u0440\u0438\u0447\u0438\u043d, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0448\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u043b\u043e\u0436\u043d\u0430\u044f, \u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u0430\u0433 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<p>  \u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u00ab\u0441\u044b\u0440\u044b\u0435\u00bb iptables \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435.<\/p>\n<h3>\u0428\u0430\u0433 6. nftables DROP<\/h3>\n<p>  \u0421\u0435\u0439\u0447\u0430\u0441 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 iptables \u0443\u0436\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0430\u0440\u0430\u044f. \u0415\u0439 \u043d\u0430 \u0441\u043c\u0435\u043d\u0443 \u043f\u0440\u0438\u0448\u043b\u0430 nftables. \u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 <a href=\"https:\/\/www.youtube.com\/watch?v=9Zr8XqdET1c\">\u044d\u0442\u0438\u043c \u0432\u0438\u0434\u0435\u043e-\u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435\u043c<\/a>, \u043f\u043e\u0447\u0435\u043c\u0443 nftables \u2014 \u0442\u043e\u043f. Nftables \u043e\u0431\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0431\u044b\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u043f\u043e\u0441\u0435\u0434\u0435\u0432\u0448\u0430\u044f iptables \u043f\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0443 \u043f\u0440\u0438\u0447\u0438\u043d, \u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0445, \u0447\u0442\u043e retpoline&#8217;\u044b \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u044e\u0442 iptables.<\/p>\n<p>  \u041d\u043e \u043d\u0430\u0448\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u0432\u0441\u0451 \u0436\u0435 \u043d\u0435 \u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 iptables \u0438 nftables, \u0442\u0430\u043a \u0447\u0442\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u0430\u043c\u043e\u0435 \u0431\u044b\u0441\u0442\u0440\u043e\u0435, \u0447\u0442\u043e \u044f \u0441\u043c\u043e\u0433 \u0441\u0434\u0435\u043b\u0430\u0442\u044c:<\/p>\n<pre><code class=\"bash\">nft add table netdev filter nft -- add chain netdev filter input { type filter hook ingress device vlan100 priority -500 \\; policy accept \\; } nft add rule netdev filter input ip daddr 198.18.0.0\/24 udp dport 1234 counter drop nft add rule netdev filter input ip6 daddr fd00::\/64 udp dport 1234 counter drop <\/code><\/pre>\n<p>  \u0421\u0447\u0451\u0442\u0447\u0438\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"bash\">$ mmwatch 'nft --handle list chain netdev filter input' table netdev filter {     chain input {         type filter hook ingress device vlan100 priority -500; policy accept;         ip daddr 198.18.0.0\/24 udp dport 1234 counter packets    1.6m\/s bytes    69.6m\/s drop # handle 2         ip6 daddr fd00::\/64 udp dport 1234 counter packets 0 bytes 0 drop # handle 3     } } <\/code><\/pre>\n<p>  \u0412\u0445\u043e\u0434\u043d\u043e\u0439 \u0445\u0443\u043a nftables \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u043a\u043e\u043b\u043e 1.53 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430 \u043f\u0430\u043a\u0435\u0442\u043e\u0432. \u042d\u0442\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u0438\u043c \u043c\u0435\u043d\u044c\u0448\u0435, \u0447\u0435\u043c PREROUTING \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0432 iptables. \u041d\u043e \u0432 \u044d\u0442\u043e\u043c \u0435\u0441\u0442\u044c \u0438 \u0437\u0430\u0433\u0430\u0434\u043a\u0430: \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0445\u0443\u043a nftables \u0438\u0434\u0451\u0442 \u0440\u0430\u043d\u044c\u0448\u0435, \u0447\u0435\u043c PREROUTING iptables \u0438, \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435.<\/p>\n<p>  \u0412 \u043d\u0430\u0448\u0435\u043c \u0442\u0435\u0441\u0442\u0435 nftables \u0447\u0443\u0442\u044c-\u0447\u0443\u0442\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u0447\u0435\u043c iptables, \u043d\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e nftables \u043a\u0440\u0443\u0447\u0435. \ud83d\ude1b<\/p>\n<h3>\u0428\u0430\u0433 7. tc DROP<\/h3>\n<p>  \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e, \u0447\u0442\u043e tc (traffic control) \u0445\u0443\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0440\u0430\u043d\u044c\u0448\u0435, \u0447\u0435\u043c iptables PREROUTING. tc \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u043e\u0442\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b \u043f\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044f\u043c \u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u0438\u0445. \u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/github.com\/netoptimizer\/network-testing\/blob\/master\/bin\/tc_ingress_drop.sh\">\u044d\u0442\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442<\/a>. \u0410 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"bash\">tc qdisc add dev vlan100 ingress tc filter add dev vlan100 parent ffff: prio 4 protocol ip u32 match ip protocol 17 0xff match ip dport 1234 0xffff match ip dst 198.18.0.0\/24 flowid 1:1 action drop tc filter add dev vlan100 parent ffff: protocol ipv6 u32 match ip6 dport 1234 0xffff match ip6 dst fd00::\/64 flowid 1:1 action drop <\/code><\/pre>\n<p>  \u0418 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438:<\/p>\n<pre><code class=\"bash\">$ mmwatch 'tc -s filter  show dev vlan100  ingress' filter parent ffff: protocol ip pref 4 u32  filter parent ffff: protocol ip pref 4 u32 fh 800: ht divisor 1  filter parent ffff: protocol ip pref 4 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:1  (rule hit   1.8m\/s success   1.8m\/s)   match 00110000\/00ff0000 at 8 (success   1.8m\/s )    match 000004d2\/0000ffff at 20 (success   1.8m\/s )    match c612000c\/ffffffff at 16 (success   1.8m\/s )          action order 1: gact action drop          random type none pass val 0          index 1 ref 1 bind 1 installed 1.0\/s sec         Action statistics:         Sent  79.7m\/s bytes  1.8m\/s pkt (dropped   1.8m\/s, overlimits 0 requeues 0)  <\/code><\/pre>\n<p>  \u0425\u0443\u043a tc \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b \u043d\u0430\u043c \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u0434\u043e 1.8 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u044f\u0434\u0440\u0435. \u042d\u0442\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e!<br \/>  \u041d\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0435\u0449\u0451 \u0431\u044b\u0441\u0442\u0440\u0435\u0435\u2026<\/p>\n<h3>\u0428\u0430\u0433 8. XDP_DROP<\/h3>\n<p>  \u0418 \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u043d\u0430\u0448\u0435 \u0441\u0438\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0435 \u043e\u0440\u0443\u0436\u0438\u0435: XDP \u2014 <a href=\"https:\/\/prototype-kernel.readthedocs.io\/en\/latest\/networking\/XDP\/\">eXpress Data Path<\/a>. C \u043f\u043e\u043c\u043e\u0449\u044c\u044e XDP \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043a\u043e\u0434 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u0433\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u0411\u0435\u0440\u043a\u043b\u0438 (extended Berkley Packet Filter, eBPF) \u043f\u0440\u044f\u043c\u043e \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0438, \u0447\u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u0432\u0430\u0436\u043d\u043e\u0435, \u0435\u0449\u0451 \u0434\u043e \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e\u0434 <code>skbuff<\/code>, \u0447\u0442\u043e \u043e\u0431\u0435\u0449\u0430\u0435\u0442 \u043d\u0430\u043c \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u0432 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438.<\/p>\n<p>  \u041e\u0431\u044b\u0447\u043d\u043e XDP-\u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0447\u0430\u0441\u0442\u0435\u0439:<\/p>\n<ul>\n<li>\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u0439 \u043a\u043e\u0434 eBPF <\/li>\n<li> \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442 \u043a\u043e\u0434 \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/li>\n<\/ul>\n<p>  \u041d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430 \u2014 \u0441\u043b\u043e\u0436\u043d\u043e\u0435 \u0437\u0430\u043d\u044f\u0442\u0438\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f <a href=\"https:\/\/cilium.readthedocs.io\/en\/latest\/bpf\/#iproute2\">\u043d\u043e\u0432\u043e\u0439 \u0444\u0438\u0448\u043a\u043e\u0439 iproute2<\/a> \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043c \u043a\u043e\u0434 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<pre><code class=\"bash\">ip link set dev ext0 xdp obj xdp-drop-ebpf.o <\/code><\/pre>\n<p>  \u0422\u0430-\u0434\u0430\u043c!<\/p>\n<p>  \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 <a href=\"https:\/\/github.com\/cloudflare\/cloudflare-blog\/blob\/master\/2018-07-dropping-packets\/xdp-drop-ebpf.c\">\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u043e\u0439 eBPF-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0437\u0434\u0435\u0441\u044c<\/a>. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u043d\u0430 \u0442\u0430\u043a\u0438\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 IP-\u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043a\u0430\u043a UDP-\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b, \u043f\u043e\u0434\u0441\u0435\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044f \u0438 \u043f\u043e\u0440\u0442 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f:<\/p>\n<pre><code>if (h_proto == htons(ETH_P_IP)) {     if (iph-&gt;protocol == IPPROTO_UDP         &amp;&amp; (htonl(iph-&gt;daddr) &amp; 0xFFFFFF00) == 0xC6120000 \/\/ 198.18.0.0\/24         &amp;&amp; udph-&gt;dest == htons(1234)) {         return XDP_DROP;     } } <\/code><\/pre>\n<p>  XDP-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0441\u043e\u0431\u0440\u0430\u043d\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e clang, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043c\u0435\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c BPF-\u0431\u0430\u0439\u0442\u043a\u043e\u0434. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c BFP-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b:<\/p>\n<pre><code class=\"bash\">$ ip link show dev ext0 4: ext0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 xdp qdisc fq state UP mode DEFAULT group default qlen 1000     link\/ether 24:8a:07:8a:59:8e brd ff:ff:ff:ff:ff:ff     prog\/xdp id 5 tag aedc195cc0471f51 jited <\/code><\/pre>\n<p>  \u0410 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u0432 <code>ethtool<\/code>:<\/p>\n<pre><code class=\"bash\">$ mmwatch 'ethtool -S ext0|egrep \"rx\"|egrep -v \": 0\"|egrep -v \"cache|csum\"'      rx_out_of_buffer:     4.4m\/s      rx_xdp_drop:         10.1m\/s      rx2_xdp_drop:        10.1m\/s <\/code><\/pre>\n<p>  \u042e-\u0445\u0443! \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e XDP \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u0434\u043e 10 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0437\u0430 \u0441\u0435\u043a\u0443\u043d\u0434\u0443!<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/fq\/mf\/e5\/fqmfe5jgs1qylz7fpwryoeey0ag.png\"><br \/>  <i>\u0424\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044f: <a href=\"https:\/\/www.flickr.com\/photos\/afiler\/\">Andrew Filer<\/a>, <a href=\"https:\/\/creativecommons.org\/licenses\/by-sa\/2.0\/\">CC BY-SA 2.0<\/a><\/i><\/p>\n<h3>\u0412\u044b\u0432\u043e\u0434\u044b<\/h3>\n<p>  \u041c\u044b \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u043b\u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u0434\u043b\u044f IPv4 \u0438 \u0434\u043b\u044f IPv6 \u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 \u044d\u0442\u0443 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0443:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/dl\/sc\/qa\/dlscqatdfii2rihttytjnfvtfea.png\"><br \/>  \u0412 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0442\u044c, \u0447\u0442\u043e \u043d\u0430\u0448\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u043b\u044f IPv6 \u0447\u0443\u0442\u044c-\u0447\u0443\u0442\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435. \u041d\u043e \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u0430\u043a\u0435\u0442\u044b IPv6 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u043e\u043b\u044c\u0448\u0435, \u0442\u043e \u0438 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u0431\u044b\u0441\u0442\u0440\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u0430.<\/p>\n<p>  \u0412 Linux \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b, \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0431\u044b\u0441\u0442\u0440\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043c \u0438 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438.<\/p>\n<p>  \u0414\u043b\u044f \u0437\u0430\u0449\u0438\u0442\u044b \u043e\u0442 DDoS \u0432\u043f\u043e\u043b\u043d\u0435 \u0440\u0430\u0437\u0443\u043c\u043d\u043e \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0438\u0445 \u0442\u0430\u043c. \u0425\u043e\u0440\u043e\u0448\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b.<\/p>\n<p>  \u0414\u043b\u044f DDoS-\u0430\u0442\u0430\u043a \u0441\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u0438\u043b\u0438 \u043f\u043e\u0434\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u043c IP \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c conntrack, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u0432 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438, \u043e\u0434\u043d\u0430\u043a\u043e \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e: \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0430\u0442\u0430\u043a\u0438, \u043f\u0440\u043e\u0442\u0438\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 conntrack \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u0435\u043d.<\/p>\n<p>  \u0412 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0435\u0441\u0442\u044c \u0441\u043c\u044b\u0441\u043b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c firewall Linux&#8217;\u0430 \u043a\u0430\u043a \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0441\u043c\u044f\u0433\u0447\u0435\u043d\u0438\u044f DDoS-\u0430\u0442\u0430\u043a\u0438. \u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 &#171;-t raw PREROUTING&#187;, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0430 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0430 filter.<\/p>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043c\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c XDP. \u0418 \u0434\u0430, \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043c\u043e\u0449\u043d\u0430\u044f \u0448\u0442\u0443\u043a\u0430. \u0412\u043e\u0442 \u0432\u0430\u043c \u0433\u0440\u0430\u0444\u0438\u043a \u043a\u0430\u043a \u0432\u044b\u0448\u0435, \u0442\u043e\u043b\u044c\u043a\u043e \u0441 XDP:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/o4\/un\/dm\/o4undm-syfgavdxop6izkvpckyk.png\"><br \/>  \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442, \u0442\u043e \u0432\u043e\u0442 \u0432\u0430\u043c <a href=\"https:\/\/github.com\/cloudflare\/cloudflare-blog\/blob\/master\/2018-07-dropping-packets\/README.md\">README, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u0432\u0441\u0451 \u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0440\u043e\u0432\u0430\u043b\u0438<\/a>.<\/p>\n<p>  \u041c\u044b \u0432 CloudFlare \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u2026 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u0438\u0437 \u044d\u0442\u0438\u0445 \u0442\u0435\u0445\u043d\u0438\u043a. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0440\u044e\u043a\u0438 \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 \u043d\u0430\u0448\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0422\u0435\u0445\u043d\u0438\u043a\u0430 \u0441 iptables \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043d\u0430\u0448\u0435\u043c <a href=\"https:\/\/blog.cloudflare.com\/meet-gatebot-a-bot-that-allows-us-to-sleep\/\">Gatebot<\/a>. \u041d\u0443 \u0438 \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u043c\u044b \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c \u043d\u0430\u0448 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432 \u044f\u0434\u0440\u0435 \u043d\u0430 XDP. <\/p>\n<p>  \u0411\u043e\u043b\u044c\u0448\u043e\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e <a href=\"https:\/\/twitter.com\/JesperBrouer\">Jesper Dangaard Brouer<\/a> \u0437\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0432 \u0440\u0430\u0431\u043e\u0442\u0435.<\/div>\n<p>        <script class=\"js-mediator-script\">!function(e){function t(t,n){if(!(n in e)){for(var r,a=e.document,i=a.scripts,o=i.length;o--;)if(-1!==i[o].src.indexOf(t)){r=i[o];break}if(!r){r=a.createElement(\"script\"),r.type=\"text\/javascript\",r.async=!0,r.defer=!0,r.src=t,r.charset=\"UTF-8\";var d=function(){var e=a.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(r,e)};\"[object Opera]\"==e.opera?a.addEventListener?a.addEventListener(\"DOMContentLoaded\",d,!1):e.attachEvent(\"onload\",d):d()}}}t(\"\/\/mediator.mail.ru\/script\/2820404\/\",\"_mediator\")}(window);<\/script>     <br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/post\/419921\/\"> https:\/\/habr.com\/post\/419921\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div data-io-article-url=\"https:\/\/habr.com\/post\/419921\/\" class=\"post__text post__text-html js-mediator-article\">\u0412 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u043d\u0430\u0448\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043f\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e DDoS-\u0430\u0442\u0430\u043a\u0430\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u00ab\u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u0435\u043b\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432\u00bb (the packet droppers \u2014 \u043f\u0440\u0438\u043c. \u043f\u0435\u0440). \u041f\u043e\u043a\u0430 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u0435\u043b\u0430\u044e\u0442 \u043a\u043b\u0451\u0432\u044b\u0435 \u0448\u0442\u0443\u043a\u0438 \u0441 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0449\u0438\u043c \u0447\u0435\u0440\u0435\u0437 \u043d\u0430\u0448\u0443 \u0441\u0435\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a\u043e\u043c, \u043c\u044b \u0440\u0430\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u043c\u0441\u044f \u043f\u043e\u0438\u0441\u043a\u043e\u043c \u043d\u043e\u0432\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u043d\u0435\u0433\u043e.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/s-\/3y\/un\/s-3yun8pllqd7-e077fuxbk9jiw.png\"><br \/>  <i>\u0424\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044f: <a href=\"https:\/\/www.flickr.com\/photos\/beegee49\">Brian Evans<\/a>, <a href=\"https:\/\/creativecommons.org\/licenses\/by-sa\/2.0\/\">CC BY-SA 2.0<\/a><\/i><\/p>\n<p>  \u0423\u043c\u0435\u043d\u0438\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 DDoS-\u0430\u0442\u0430\u043a\u0430\u043c.<\/p>\n<p>  \u041e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u044e\u0449\u0438\u0445 \u043d\u0430\u0448\u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0443\u0440\u043e\u0432\u043d\u044f\u0445. \u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0438 \u043f\u043b\u044e\u0441\u044b \u0438 \u043c\u0438\u043d\u0443\u0441\u044b. \u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432\u0441\u0451, \u0447\u0442\u043e \u043c\u044b \u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b\u0438.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-287413","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/287413","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=287413"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/287413\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=287413"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=287413"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=287413"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}