如何配置 iptables 在超时连接上发送 RST?

问题描述 投票:0回答:1

客户端和数据库服务器之间有防火墙。有时,当客户端没有流量时,客户端和服务器之间的连接会变得空闲,防火墙会默默地断开连接。此后,如果客户端尝试使用相同的套接字进行通信,则会挂起。一个新的连接就可以了。

当连接超时时,是否有办法向客户端发送 RST 数据包,而不是默默地断开连接?

iptables
1个回答
0
投票

要配置 iptables 在超时连接上发送 TCP RST 数据包,您需要执行以下步骤:

安装 iptables:确保您的系统上安装了 iptables。大多数 Linux 发行版都预装了它。

设置 iptables 规则:使用以下 iptables 规则删除超时连接并发送 TCP RST 数据包作为响应。关键思想是将 REJECT 目标与 --reject-with tcp-reset 选项一起使用。

详细步骤如下:

第 1 步:删除现有的超时连接 首先,识别并删除已超时的现有连接。这是使用 conntrack 模块跟踪连接状态来完成的。

嘘 复制代码 iptables -A 输入 -m conntrack --ctstate 无效 -j 删除 步骤 2:为新的超时连接发送 TCP RST 数据包 要处理超时的新连接并发送 TCP RST 数据包,请添加以下规则:

嘘 复制代码 iptables -A 输入 -p tcp --tcp-flags RST RST -j DROP iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m state --state NEW,INVALID -j REJECT --reject-with tcp-reset 第 3 步:确保规则顺序正确 确保这些规则以正确的顺序插入到 iptables 规则集中,以避免与其他规则发生冲突。例如,确保这些规则不会被更广泛的 ACCEPT 规则取代。

第4步:保存iptables配置 保存 iptables 规则以确保它们在重新启动后仍然存在。这可以使用以下命令来完成(该方法可能会根据您的 Linux 发行版而有所不同):

对于 Debian/Ubuntu:

嘘 复制代码 sudo sh -c“iptables-save > /etc/iptables/rules.v4” 对于 CentOS/RHEL:

嘘 复制代码 sudo 服务 iptables 保存 第 5 步:应用并测试配置 重新加载 iptables 规则以应用更改。您可以通过重新启动 iptables 服务或使用 iptables-restore 手动应用规则来完成此操作。

嘘 复制代码 sudo iptables-恢复 < /etc/iptables/rules.v4 Example Full iptables Script Here’s a complete example script that you can run to configure iptables as described:

嘘 复制代码 #!/bin/bash

刷新所有当前规则

iptables-F

丢弃无效数据包

iptables -A 输入 -m conntrack --ctstate 无效 -j 删除

为新的超时连接发送 TCP RST

iptables -A 输入 -p tcp --tcp-flags RST RST -j DROP iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m state --state NEW,INVALID -j REJECT --reject-with tcp-reset

保存规则

iptables-save > /etc/iptables/rules.v4 以 root 身份或使用 sudo 权限运行此脚本以应用更改。

参考资料: iptables 手册页 Netfilter/iptables 项目 此配置有助于有效管理和清除超时连接,确保您的服务器在需要时使用 TCP RST 数据包进行适当响应。

© www.soinside.com 2019 - 2024. All rights reserved.