400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

如何进行LinuxNetfilter调优

这篇文章将为大家详细讲解有关如何进行Linux Netfilter调优,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

为宜昌等地区用户提供了全套网页设计制作服务,及宜昌网站建设行业解决方案。主营业务为成都网站建设、网站建设、宜昌网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

如果您正在为高流量的 Web/DNS服务器提供服务,并且最近使该服务器 PING丢失并且并非所有 HTTP请求都成功。您可以开始检查系统日志。并且如果您看到类似下面的内容,那么下面的指南将帮助您调整 Linux 服务器以正确处理流量负载。

Mar 22 21:25:55 localhost kernel: nf_conntrack: table full, dropping packet.
Mar 22 21:26:00 localhost kernel: printk: 11 messages suppressed.
Mar 22 21:26:00 localhost kernel: nf_conntrack: table full, dropping packet.
Mar 22 21:26:05 localhost kernel: printk: 16 messages suppressed.

状态查看

为了完成任务,NAT-server(一般指的是 iptables) 需要记录所有通过它的连接。无论是 “ping” 还是某人的 “ICQ”,NAT-server 都会记录在一个特殊的表中并跟踪所有会话。当会话关闭时,相关记录将从连接跟踪表中删除。这个记录表的大小是固定的,所以如果通过服务器的流量很大,但表太小,那么 NAT-server 就会开始丢弃数据包,中断会话。为了避免这样的麻烦,有必要适当增加连接跟踪表的大小。

临时调整

临时调整是临时性的,重启节点好配置值将会丢失。

sysctl -w net.netfilter.nf_conntrack_max=1048576
sysctl -w net.nf_conntrack_max=1048576

永久调整

要使其配置在重新启动后永久存在,需要将这些值添加到 sysctl.conf

echo 'net.netfilter.nf_conntrack_max' = 1048576 >> /etc/sysctl.conf
echo 'net.nf_conntrack_max = 1048576' >> /etc/sysctl.conf
sysctl  -p

如果服务器中的 RAM 少于 1 GB,建议不要设置太大的值。

哈希表(hash-table)

哈希表大小是只读的,不能在 /etc/sysctl.conf文件中设置值。64 位 Linux 系统中,4G 内存默认 16384,8G 内存默认 65536,16G 翻倍,以此类推。

给哈希表扩容的影响

主要是内存使用增加,32 位系统还要关心内核态的地址空间够不够。

netfilter 的哈希表存储在内核态的内存空间,这部分内存不能 swap,操作系统为了兼容 32 位,默认值往往比较保守。

哈希表大小调整

需要通过内核模块的方式修改:

减少超时时间

NAT-server 只跟踪通过它的 活动的会话。如果一个会话很长时间是空闲的,不活跃,它将会因为超值而被关闭。当会话关闭时,关于它的信息将被删除,以便连接跟踪表不会溢出。

但是,如果超时的默认值很大,流量较大时候,即使将 nf_conntrack_max扩展到了极限,跟踪表仍然有溢出的风险。为此,必须在 NAT-server 上正确设置连接跟踪超时。

可以执行以下命令查看默认值:

sysctl -a | grep conntrack | grep timeout

对于通外网的服务器,考虑调整以下参数,减少 DDoS 的危害:

其他值得注意的参数:

这几个倒是比较合理,小于等于可能遇到的极端情况,但如果不想半关闭的连接的记录继续占着宝贵的哈希表,提早清了似乎也没什么问题:

调整参数

添加以下配置参数到 /etc/sysctl.conf 文件,最后执行 sysctl -p

net.netfilter.nf_conntrack_icmp_timeout=10
net.netfilter.nf_conntrack_tcp_timeout_syn_recv=5
net.netfilter.nf_conntrack_tcp_timeout_syn_sent=5
net.netfilter.nf_conntrack_tcp_timeout_established=600
net.netfilter.nf_conntrack_tcp_timeout_fin_wait=10
net.netfilter.nf_conntrack_tcp_timeout_time_wait=10
net.netfilter.nf_conntrack_tcp_timeout_close_wait=10
net.netfilter.nf_conntrack_tcp_timeout_last_ack=10

关于如何进行Linux Netfilter调优就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


分享文章:如何进行LinuxNetfilter调优
当前链接:http://www.bluegullmedia.com/article/jsphoi.html

其他资讯

让你的专属顾问为你服务

0.0490s