我正在开发一个透明的 HTTP 代理,用于故障注入测试。该代理需要捕获到 HTTP 服务器的所有流量,以便有选择地注入故障。
透明代理设置了一条iptables
规则,将所有到给定端口的流量重定向到它正在监听的端口。这部分有效。
但是,它还必须强制所有现有客户端重新连接,否则透明代理将不会对现有连接产生影响。
我正在使用iptables
重置已建立连接的规则来执行此操作"-j REJECT --reject-with tcp-reset
。
这种方法通常很有效,但在某些情况下,客户端无法处理tcp-reset
并终止。
我正在寻找一种可以做同样的事情但又能优雅终止的方法。
我的理解是带有FIN
标志的包应该可以完成此操作,但我还没有找到生成此类包的方法。