tcpkill:仅在建立连接后才完成连接
tcpkill: finish connections only after they're ESTABLISHED
出于测试目的,我需要从启用了 Google 开发人员工具(跟踪网络 activity)的 Postman 向 Google 云 HTTP 负载均衡器发送 POST 请求。
每个请求都应该使用不同的连接。
所以,我想使用 tcpkill
实用程序:
$ tcpkill -9 "dst XXX.XXX.XXX.XXX and dst port 443"
但是,最终,这会导致在建立之前关闭每个连接。因此,Postman 收到连接错误。
所以,问题是:只有在 ESTABLISHED 并且 POST 请求被发送到服务器后,如何才能完成连接?
先谢谢战友们
您不能使用 tcpkill 执行此操作,因为该程序需要流量来终止连接并且不支持使用连接状态的过滤器。所以,如果你在连接建立之前运行 tcpkill,它们会在连接之前被杀死;如果在建立连接后 运行 tcpkill 如果没有流量,它们将不会被杀死,因为 tcpkill 需要有效的序列号来发送 RST。
您可以尝试 killcx 使用 ss 或 netstat 过滤已建立的连接,如下所示:
#!/bin/bash
dst=
port=
peer_addrs=$(ss -t state established dst ${dst} dport = :${port} |
tail -n +2 | awk '{print }' | cut -d : -f 1)
for addr in ${peer_addrs}; do
echo "killing ${addr}:${port}"
killcx ${addr}:${port}" &
sleep 2
killall -9 killcx
done
您将需要 运行 使用 watch 或类似工具在循环中周期性地 运行 这个脚本,当然,这不会在连接建立后立即终止连接,而是稍后在循环找到连接。
出于测试目的,我需要从启用了 Google 开发人员工具(跟踪网络 activity)的 Postman 向 Google 云 HTTP 负载均衡器发送 POST 请求。
每个请求都应该使用不同的连接。
所以,我想使用 tcpkill
实用程序:
$ tcpkill -9 "dst XXX.XXX.XXX.XXX and dst port 443"
但是,最终,这会导致在建立之前关闭每个连接。因此,Postman 收到连接错误。
所以,问题是:只有在 ESTABLISHED 并且 POST 请求被发送到服务器后,如何才能完成连接?
先谢谢战友们
您不能使用 tcpkill 执行此操作,因为该程序需要流量来终止连接并且不支持使用连接状态的过滤器。所以,如果你在连接建立之前运行 tcpkill,它们会在连接之前被杀死;如果在建立连接后 运行 tcpkill 如果没有流量,它们将不会被杀死,因为 tcpkill 需要有效的序列号来发送 RST。
您可以尝试 killcx 使用 ss 或 netstat 过滤已建立的连接,如下所示:
#!/bin/bash
dst=
port=
peer_addrs=$(ss -t state established dst ${dst} dport = :${port} |
tail -n +2 | awk '{print }' | cut -d : -f 1)
for addr in ${peer_addrs}; do
echo "killing ${addr}:${port}"
killcx ${addr}:${port}" &
sleep 2
killall -9 killcx
done
您将需要 运行 使用 watch 或类似工具在循环中周期性地 运行 这个脚本,当然,这不会在连接建立后立即终止连接,而是稍后在循环找到连接。