是否有任何命令可以用来打破某些程序的现有TCP / IP连接?
在操作系统所知道的TCP连接中有没有什么东西,或者操作系统只能在本地套接字上看到TCP传输,并且不知道哪个请求被提供给哪个套接字?
例如,如果Firefox向某个服务器的端口80发送请求并正在等待答案。 那么是否有可能findFirefox监听端口,并诱使Firefox显示ERR_CONNECTION_REFUSED
或类似的东西。
我想要一个解决scheme,不阻止数据stream,让应用程序处理这种情况的方式,而是closures套接字或TCP / IP连接(这应该是可能的,因为套接字是操作系统负责我想想吗?连接也是一个操作系统属性,或只是应用程序所做的事情?),所以应用程序会立即作出反应。
使用tcpkill 。
切纸机
Cutter会将数据包发送到TCP / IP连接的两端来关闭连接。 它被设计用于在Linux路由器上断开不需要的连接。
网站: http : //www.digitage.co.uk/digitage/software/linux-security/cutter
Debian有一个包: https : //packages.debian.org/stable/cutter
我承担这个是通过使用`iproute2
框架。
通过一个规则创建一个blockhole / unreachable桶路由表(在我的例子表格ID 33),并给它高prio:
# ip rule add from all lookup 33 prio 1
现在找到你想阻止的连接。 在我的情况下,我使用Chromium连接到google.com:
# ss -n -e -p | grep "chrom" | grep "173.194.*:443" ESTAB 0 0 10.211.55.4:46710 173.194.35.2:443 timer: (keepalive,38sec,0) users:(("chromium-browse",8488,106)) uid:1000 ino:38318 sk:f6a4f800 ESTAB 0 0 10.211.55.4:49288 173.194.35.18:443 timer:(keepalive,34sec,0) users:(("chromium-browse",8488,109)) uid:1000 ino:38047 sk:f6a4cb00
所以,我们将173.194.0.0/16添加到表33并刷新缓存:
# ip route add unreachable 173.194.0.0/16 table 33 # ip route flush cache
现在尝试在浏览器中连接到google.com,您将在浏览器中获得ERR_CONNECTION_REFUSED
。
为了揭开你自己的堵塞的面纱,你简单地冲洗桶:
# ip route flush table 33
当然,如果你需要更细粒度的区别,你可以使用tc
和u32分类器来标记确切的IP:PORT
组合(和其他数据包方面),并添加一个fw规则到桶(未经测试):
# tc filter add dev eth1 parent ffff: protocol ip prio 1 u32 \ match ip src 173.194.0.0/16 match ip dport 443 classid :1 # ip rule add fwmark 1 table 33 prio 1 realms 3/4