随机IP /端口UDP DDoS中的高CPU使用率

我一直在使用随机IP和端口来获取这些UDP洪水。

randomip:randomport -> myip:randomport

0字节有效载荷

由于某些原因,它使用了大量的CPU。 这里是perf top -e cycles:k的结果perf top -e cycles:k

有没有什么办法来优化内核

 10.42% [kernel] [k] inet_getpeer 7.59% [kernel] [k] inet_getpeer.part.4 6.15% [kernel] [k] peer_avl_rebalance.isra.2 3.38% [kernel] [k] fib_table_lookup 2.77% [ip_tables] [k] ipt_do_table 1.98% [e1000e] [k] e1000_clean_rx_irq 1.82% [kernel] [k] md5_transform 1.69% [kernel] [k] __ip_route_output_key 1.36% [kernel] [k] check_leaf.isra.7 1.34% [kernel] [k] __udp4_lib_lookup 1.31% [kernel] [k] kmem_cache_free 1.09% [kernel] [k] __netif_receive_skb_core 1.01% [kernel] [k] __slab_free 1.00% [kernel] [k] __ip_append_data.isra.38 0.99% [kernel] [k] memcpy 0.98% [kernel] [k] kmem_cache_alloc 0.91% [kernel] [k] icmp_send 0.89% [xt_multiport] [k] multiport_mt 0.83% [kernel] [k] update_blocked_averages 0.79% [kernel] [k] kfree 0.79% [kernel] [k] __switch_to 0.78% [kernel] [k] skb_release_data 0.72% [kernel] [k] csum_partial_copy_generic 0.71% [kernel] [k] _raw_spin_lock_irqsave 0.67% [kernel] [k] ip_route_input_noref 0.63% [kernel] [k] __udp4_lib_rcv 0.61% [kernel] [k] dev_gro_receive 0.59% [kernel] [k] __schedule 0.59% [kernel] [k] __ip_make_skb 0.57% [kernel] [k] __copy_skb_header 0.56% [kernel] [k] sock_alloc_send_pskb 0.55% [kernel] [k] nf_iterate 

根据你的性能提高net.ipv4.inet_peer_threshold并降低net.ipv4.inet_peer_minttlnet.ipv4.inet_peer_maxttl可能会有一点帮助。 我以为你使用的是最近的内核,例如3.2 。 你可以在这里看到inet_getpeer的源代码: http : inet_getpeer

  • 如果DDoS是CPU绑定的,那么你应该通过netfilter禁止零大小的UDP数据包,例如:

     $ iptables -I INPUT -p udp -m length --length NN -j DROP 

    通过用实际的L3有效载荷replaceNN ,在你的情况下大概8 (UDP头的大小)。

  • 如果DDoS受到中断限制,您可以调整您的e1000e ,请参阅:

     $ modinfo e1000e | grep ^parm: 

    还请参阅英特尔的文档参数说明: http : //downloadmirror.intel.com/9180/eng/README.txt

  • 如果DDoS是networking绑定的,那么您应该询问您的ISP(数据中心运营商)寻求帮助。

您可以将ipset与iptables结合使用,因为它在处理大量参数(如IP地址或端口)方面效率极高。

下面是一个使用ipset的例子,其中, P2P攻击者被放入一个集合中,并分配超时的P2P超时解散

或者创build一个黑名单实时黑名单使用ipset

Ipset对于大量的IP地址和端口是非常有效的,因为它将值存储在RAM中。

祝你好运。

你认为你可以优化什么? 您遇到DDoS攻击,它会尝试重载服务器。 如果在服务器之前没有networking组件,那么这通常是成功的,其中服务器零路由到服务器。

您无法直接防止服务器上的DDoS,只能通过防止系统的良好networking基础结构。