如何优化 iptables 以应对高 DNS 流量?我有一台专用的 Linux 服务器,使用 iptables 充当桥接防火墙。最近在防火墙后面部署了负载很高的 DNS 服务器,防火墙开始运行缓慢。有什么技巧,如何使防火墙更有效?
答案1
您不应记录允许的流量规则,以避免过多的日志(以及写入日志的时间)。dns 数据包很小,但数量惊人。您的防火墙可能无法处理每秒那么多的数据包。
ifconfig -a 是否报告丢失/错误/溢出/冲突?
您可以使用 iptraf 获取每个大小分布的数据包数量:
iptraf -i eth0 -z eth0
您可以为每个以太网卡添加 CPU 亲和性,以提高其可以处理的 PPS 数量
您可能正在耗尽连接表。您可以使用 NOTRACK 选项,这样 DNS 流量就不会保留在连接表中,从而提高性能。
答案2
如果您怀疑 iptables 的 DNS 流量消耗了大量 CPU,我建议您重新组织规则,以便您尽快退出防火墙表。
将 DNS 规则放在相应表格的最顶部。
答案3
由于连接数量较多,如果不需要 conntrack,可以禁用它:
iptables -t raw -I PREROUTING -j NOTRACK