![通过端口限制传出连接以控制 nf_conntrack 的使用](https://linux22.com/image/628088/%E9%80%9A%E8%BF%87%E7%AB%AF%E5%8F%A3%E9%99%90%E5%88%B6%E4%BC%A0%E5%87%BA%E8%BF%9E%E6%8E%A5%E4%BB%A5%E6%8E%A7%E5%88%B6%20nf_conntrack%20%E7%9A%84%E4%BD%BF%E7%94%A8.png)
我想让我的系统更能应对某些故障。当系统使快速出站 TCP 连接失败时,表中nf_conntrack
会填满TIME_WAIT
条目。这会导致系统上的其他操作失败,因为没有更多nf_conntrack
可用条目。
我知道可以修改某些参数,例如
tcp_tw_reuse
,& tcp_fin_timeout
,但不愿意在那里做出大的改变(基于警告像这样)
在进行上述任何更改和应用程序更改之前,我希望通过nf_conntrack
限制每个子系统的传出连接(通过使用端口号、IP 地址等)来加强我的系统以防止条目完全耗尽。我想我可以添加以下规则:
-A OUTPUT -p tcp --syn --dport 9702 -m connlimit --connlimit-above 3 -j REJECT --reject-with tcp-reset
但这似乎只会影响活动连接(这是可以理解的,因为这些连接实际上已经消失了)。有没有办法能够限制每个端口/应用程序的传出连接,同时将TIME_WAIT
套接字考虑在内?
谢谢
答案1
如果您实际上不需要 NetFilter 连接跟踪,我建议您完全禁用 nf_conntrack(通过卸载它),或者在 iptables 规则集的顶部添加 NOTRACK 规则。