昨天路由忽然扑街了,回家检查ssh上不去,ping都ping不通,上个月也发生过一次,重新上电恢复正常,检查log发现有大量报错:
net_ratelimit: 36 callbacks suppressed
nf_conntrack: table full (16384), dropping packet
nf_conntrack: table full (16384), dropping packet
nf_conntrack: table full (16384), dropping packet
nf_conntrack: table full (16384), dropping packet
nf_conntrack: table full (16384), dropping packet
nf_conntrack: table full (16384), dropping packet
nf_conntrack: table full (16384), dropping packet
nf_conntrack: table full (16384), dropping packet
nf_conntrack: table full (16384), dropping packet
nf_conntrack: table full (16384), dropping packet
想了下最近装了啥?似乎是NAS上多跑了1个PCDN,导致上下行数据包爆了....
问了下AI,是内核参数,管连接条目;
在Linux中,net.netfilter.nf_conntrack_max 参数定义了系统中允许的最大连接跟踪条目(connection tracking entries)的数量1。这个参数对于网络性能尤其重要,因为它限制了内核可以跟踪的并发连接数。如果这个值设置得太低,可能会导致连接跟踪表过快地填满,从而导致新的网络连接无法建立。
nf_conntrack_max 的默认值通常基于系统内存大小和预期的网络负载来设定。例如,对于内存大于4GB的系统,建议的 nf_conntrack_max 值可能会更高,以适应更大的并发连接数。调整这个参数可以帮助优化大量TCP并发连接的处理,特别是在高流量的网络环境中1。
此外,nf_conntrack_max 的值通常与 nf_conntrack_buckets 参数的值相关联,后者定义了用于存储连接跟踪条目的哈希表的大小。理想情况下,nf_conntrack_buckets 的值应该是 nf_conntrack_max 的1/8,以确保哈希表的效率和性能1。
总的来说,
net.netfilter.nf_conntrack_max
参数对于维护网络连接的稳定性和性能至关重要,特别是在处理大量网络流量时。
到这个目录检查一下各参数分别多少
[K2P /proc/sys/net/netfilter]# ls
nf_conntrack_acct nf_conntrack_tcp_loose
nf_conntrack_buckets nf_conntrack_tcp_max_retrans
nf_conntrack_checksum nf_conntrack_tcp_no_window_check
nf_conntrack_count nf_conntrack_tcp_timeout_close
nf_conntrack_events nf_conntrack_tcp_timeout_close_wait
nf_conntrack_events_retry_timeout nf_conntrack_tcp_timeout_established
nf_conntrack_expect_max nf_conntrack_tcp_timeout_fin_wait
nf_conntrack_frag6_high_thresh nf_conntrack_tcp_timeout_last_ack
nf_conntrack_frag6_low_thresh nf_conntrack_tcp_timeout_max_retrans
nf_conntrack_frag6_timeout nf_conntrack_tcp_timeout_syn_recv
nf_conntrack_generic_timeout nf_conntrack_tcp_timeout_syn_sent
nf_conntrack_icmp_timeout nf_conntrack_tcp_timeout_time_wait
nf_conntrack_icmpv6_timeout nf_conntrack_tcp_timeout_unacknowledged
nf_conntrack_log_invalid nf_conntrack_udp_timeout
nf_conntrack_max nf_conntrack_udp_timeout_stream
nf_conntrack_nat_mode nf_log
nf_conntrack_tcp_be_liberal
默认是1xxxx好像,按上面意思,修改成nf_conntrack_buckets的8倍吧
[K2P /proc/sys/net/netfilter]# echo 131072 > /proc/sys/net/netfilter/nf_conntrack_max
观察一晚上,没有新增丢包日志
最后写到路由配置里去,位置在【高级设置】-【自定义设置】-【脚本】-【conntrack】下面