问候,
我正在 Linux 上测试应用程序,我们有一个与数据库连接相关的错误,由于数据库连接无法重新启动并且它位于远程机器上,我想终止 tcp 连接以中断连接并查看行为。
拔掉网线也不行!我无法物理访问这两台机器。
我考虑过使用 iptables,但我的系统上没有 iptables,所以我的项目经理告诉我使用 tcpkill 来完成此操作。
有人能告诉我在哪里可以获得 tcpkill rpm 并给我一些关于如何使用它的提示吗?
答案1
添加空路由ip 路由黑洞,假设你有root:
[root@centos6 ~]# nc -zv 192.168.15.100 80
Connection to 192.168.15.100 80 port [tcp/http] succeeded!
[root@centos6 ~]# ip route add blackhole 192.168.15.100
[root@centos6 ~]# nc -zv 192.168.15.100 80
nc: connect to 192.168.15.100 port 80 (tcp) failed: Network is unreachable
[root@centos6 ~]# ip route delete blackhole 192.168.15.100
[root@centos6 ~]# nc -zv 192.168.15.100 80
Connection to 192.168.15.100 80 port [tcp/http] succeeded!
编辑:如果您的机器上有并且应用程序通过 FQDN 连接到数据库,请添加 FQDN 并将 FQDN 指向虚拟地址。不过,TCP 连接可能需要一段时间才能断开。
再次编辑:好的,我错过了有关 tcpkill 的部分。:)
它在 EPEL 中可用,如果您运行的是 CentOS 或 Scientific Linux,您可以启用 EPEL 存储库以便找到它:
[root@kerberos rsync-dist]# yum whatprovides "*/tcpkill" --enablerepo=epel
Loaded plugins: refresh-packagekit
epel/metalink | 9.0 kB 00:00
epel | 4.3 kB 00:00
epel/primary_db | 4.3 MB 00:05
epel/filelists_db | 5.5 MB 00:07
dsniff-2.4-0.9.b1.el6.x86_64 : Tools for network auditing and penetration testing
Repo : epel
Matched from:
Filename : /usr/sbin/tcpkill
确保使用 --enablerepo 以便您可以从那里安装,如下所示:
yum -y install dsniff --enablerepo=epel
您可以在此处阅读说明:
http://www.cyberciti.biz/howto/question/linux/kill-tcp-connection-using-linux-netstat.php
例子:
tcpkill ip host 192.168.1.2 and not 192.168.1.111