我一直UDP
使用随机 IP 和端口来接收这些洪水攻击。
randomip:randomport -> myip:randomport
0 字节有效载荷
由于某种原因,它占用了大量的 CPU。以下是 的结果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
答案1
根据您的perf
输出判断,提高net.ipv4.inet_peer_threshold
和降低两者net.ipv4.inet_peer_minttl
可能net.ipv4.inet_peer_maxttl
会略有帮助。我假设您使用的是较新的内核,例如3.2
。您可以inet_getpeer
在此处查看的源代码:http://lxr.linux.no/#linux+v3.2.51/net/ipv4/inetpeer.c#L395
如果 DDoS 受 CPU 限制,那么您可能应该通过
netfilter
以下方式禁止零大小的 UDP 数据包:$ iptables -I INPUT -p udp -m length --length NN -j DROP
通过用实际的 L3 有效负载替换
NN
,在您的情况下可能是8
(UDP 标头的大小)。如果 DDoS 受到中断限制,您可以调整您的
e1000e
,请参阅:$ modinfo e1000e | grep ^parm:
另请查看英特尔文档了解参数描述:http://downloadmirror.intel.com/9180/eng/README.txt
如果 DDoS 是网络受限的,那么您应该向 ISP(数据中心操作)寻求帮助。
答案2
您可以将 ipset 与 iptables 结合使用,因为它在处理大量参数(例如 IP 地址或端口)方面非常高效。
以下是使用 ipset 的示例,其中 P2P 违规者被放入一个集合并分配一个超时时间P2P超时解决方案
或创建实时黑名单使用 ipset 进行实时黑名单
Ipset 对于大量 IP 地址和端口来说非常高效,因为它将值存储在 RAM 中。
祝你好运。
答案3
您认为可以优化哪些方面?您正在遭受 DDoS 攻击,该攻击试图使服务器过载。如果服务器前面没有网络组件,该组件对服务器进行零路由,则通常会成功。
您无法直接阻止服务器上的 DDoS,只能通过具有预防系统的良好网络基础设施来阻止。